aboutsummaryrefslogtreecommitdiff
path: root/tools/lib/NQP/Configure.pm
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lib/NQP/Configure.pm')
-rw-r--r--tools/lib/NQP/Configure.pm17
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/lib/NQP/Configure.pm b/tools/lib/NQP/Configure.pm
index 641d2c6..cb95cc9 100644
--- a/tools/lib/NQP/Configure.pm
+++ b/tools/lib/NQP/Configure.pm
@@ -274,11 +274,13 @@ sub gen_nqp {
my $backends = $options{'backends'};
my $gen_nqp = $options{'gen-nqp'};
+ my $gen_moar = $options{'gen-moar'};
my $gen_parrot = $options{'gen-parrot'};
my $prefix = $options{'prefix'} || cwd().'/install';
my $startdir = cwd();
my $PARROT_REVISION = 'nqp/tools/build/PARROT_REVISION';
+ my $MOAR_REVISION = 'nqp/tools/build/MOAR_REVISION';
my (%impls, %need);
@@ -321,7 +323,7 @@ sub gen_nqp {
return %impls unless %need;
- if (defined $gen_nqp || defined $gen_parrot) {
+ if (defined $gen_nqp || defined $gen_parrot || defined $gen_moar) {
git_checkout($nqp_git, 'nqp', $nqp_want, $nqp_push);
}
@@ -333,11 +335,18 @@ sub gen_nqp {
$impls{parrot}{config} = \%c;
}
- return %impls unless defined($gen_nqp) || defined($gen_parrot);
+ if ($need{moar} && defined $gen_moar) {
+ my ($moar_want) = split(' ', slurp($MOAR_REVISION));
+ my $moar = gen_moar($moar_want, %options, prefix => $prefix);
+ $impls{moar}{bin} = "$prefix/bin/nqp-m$bat";
+ }
+
+ return %impls unless defined($gen_nqp) || defined($gen_parrot) || defined($gen_moar);
my $backends_to_build = join ',', sort keys %need;
my @cmd = ($^X, 'Configure.pl', "--prefix=$prefix",
"--backends=$backends", "--make-install");
+
print "Building NQP ...\n";
chdir("$startdir/nqp");
print "@cmd\n";
@@ -425,7 +434,7 @@ sub gen_moar {
my $startdir = cwd();
my $moar_exe = "$prefix/bin/moar$exe";
- my $moar_have = qx{ $moar_exe --version };
+ my $moar_have = -e $moar_exe ? qx{ $moar_exe --version } : undef;
if ($moar_have) {
$moar_have = $moar_have =~ /version (\S+)/ ? $1 : undef;
}
@@ -443,7 +452,7 @@ sub gen_moar {
my $moar_repo = git_checkout($moar_git, 'MoarVM', $gen_moar || $moar_want, $moar_push);
- unless (cmp_rev($moar_repo, $moar_want) >= 0) {
+ if (defined($moar_repo) && cmp_rev($moar_repo, $moar_want) < 0) {
die "You asked me to build $gen_moar, but $moar_repo is not new enough to satisfy version $moar_want\n";
}