Skip to content

Commit

Permalink
Implement the --nqp-home Configure.pl parameter
Browse files Browse the repository at this point in the history
This allows to place the home folder in a different location.
  • Loading branch information
PatZim committed Sep 22, 2019
1 parent 2c45fcd commit 41675f4
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 28 deletions.
3 changes: 2 additions & 1 deletion Configure.pl
Expand Up @@ -68,7 +68,7 @@ BEGIN
'github-user=s', 'nqp-repo=s',
'moar-repo=s', 'expand=s',
'out=s', 'set-var=s@',
'relocatable',
'relocatable', 'nqp-home=s',
)
or do {
print_help();
Expand Down Expand Up @@ -145,6 +145,7 @@ sub print_help {
--sdkroot=dir When given, use for searching build tools here, e.g.
nqp, java etc.
--sysroot=dir When given, use for searching runtime components here
--nqp-home=dir Directory to install NQP files to
--backends=list Backends to use: $backends
--gen-moar Download, build, and install a copy of MoarVM to use before writing the Makefile
--moar-option='--option=value'
Expand Down
2 changes: 1 addition & 1 deletion tools/build/gen-js-makefile.nqp
Expand Up @@ -74,7 +74,7 @@ sub combine(:$sources, :$stage, :$file, :$gen-version = 0) {

rule($target, $sources,
make_parents($target),
$gen-version ?? "\$(PERL5) \@script(gen-version.pl)@ \$(PREFIX) \$(NQP_LIB_DIR) > $version" !! '',
$gen-version ?? "\$(PERL5) \@script(gen-version.pl)@ \$(PREFIX) \$(NQP_HOME) \$(NQP_LIB_DIR) > $version" !! '',
"\$(PERL5) \@script(gen-cat.pl)@ js \@nfp($sources)@ {$gen-version ?? $version !! ''} > \@nfp($target)@"
);
}
Expand Down
6 changes: 3 additions & 3 deletions tools/build/gen-jvm-properties.pl
Expand Up @@ -10,16 +10,16 @@

binmode STDOUT, ':utf8';

my ($prefix, $thirdPartyJars) = @ARGV;
my ($prefix, $nqp_home, $thirdPartyJars) = @ARGV;

my $cpsep = $^O eq 'MSWin32' ? ';' : ':';
my $jardir = ".";
my $libdir = ".";
my $slash = File::Spec->catdir('', '');

if ($prefix ne '.') {
$jardir = File::Spec->catdir($prefix, qw<share nqp runtime>);
$libdir = File::Spec->catdir($prefix, qw<share nqp lib>);
$jardir = File::Spec->catdir($nqp_home, 'runtime');
$libdir = File::Spec->catdir($nqp_home, 'lib');
my @jars = grep { s/^.*\Q${slash}\E// } split($cpsep, $thirdPartyJars);
$thirdPartyJars = join($cpsep, grep { s/^/${jardir}${slash}/ } @jars);
}
Expand Down
2 changes: 2 additions & 0 deletions tools/build/gen-version.pl
Expand Up @@ -15,6 +15,7 @@ =head1 TITLE
use POSIX 'strftime';

my $prefix = shift // '';
my $nqp_home = shift // '';
my $libdir = shift // '';

open(my $fh, '<', 'VERSION') or die $!;
Expand All @@ -37,6 +38,7 @@ =head1 TITLE
sub hll-config(\$config) {
\$config<version> := '$VERSION';
\$config<prefix> := '$prefix';
\$config<nqp_home> := '$nqp_home';
\$config<libdir> := '$libdir';
\$config<source-digest> := '$source_digest';
}
Expand Down
24 changes: 9 additions & 15 deletions tools/lib/NQP/Config/NQP.pm
Expand Up @@ -49,6 +49,7 @@ sub configure_backends {

sub configure_refine_vars {
my $self = shift;
my $config = $self->{config};

unless ( $self->cfg('prefix') ) {
my $moar_conf = $self->moar_config;
Expand All @@ -66,6 +67,13 @@ sub configure_refine_vars {
}

$self->SUPER::configure_refine_vars(@_);

$config->{nqp_home} = $self->nfp(
File::Spec->rel2abs(
$config->{nqp_home} ||
File::Spec->catdir( $config->{'prefix'}, 'share', 'nqp' )
)
);
}

sub configure_misc {
Expand All @@ -84,17 +92,6 @@ sub configure_misc {

$config->{moar_stage0} = $self->nfp( "src/vm/moar/stage0", no_quote => 1 );
$config->{jvm_stage0} = $self->nfp( "src/vm/jvm/stage0", no_quote => 1 );

if ( !$config->{nqplibdir} ) {
$config->{nqplibdir} = $self->nfp(
(
$self->opt('libdir')
? $self->opt('libdir') . "/nqp"
: '$(NQP_HOME)/lib'
),
no_quote => 1,
);
}
}

sub configure_moar_backend {
Expand All @@ -117,10 +114,7 @@ sub configure_moar_backend {
}
else {
my $qchar = $config->{quote};
$imoar->{config}{static_nqp_home} =
File::Spec->rel2abs(
File::Spec->catdir( $config->{'prefix'}, 'share', 'nqp' )
);
$imoar->{config}{static_nqp_home} = $config->{nqp_home};
$imoar->{config}{static_nqp_home_define} =
'-DSTATIC_NQP_HOME='
. $qchar . $self->c_escape_string( $imoar->{config}{static_nqp_home} ) . $qchar;
Expand Down
4 changes: 2 additions & 2 deletions tools/templates/Makefile-common.in
Expand Up @@ -120,8 +120,8 @@ RM_L = @rm_l@
SYSROOT = @nfp(@sysroot@)@
PREFIX = @nfp(@prefix@)@
BIN_DIR = @nfp(@prefix@/bin)@
NQP_HOME = @nfp($(PREFIX)/share/nqp)@
NQP_LIB_DIR = @nfp(@nqplibdir@)@
NQP_HOME = @nfp(@nqp_home@)@
NQP_LIB_DIR = @nfp($(NQP_HOME)/lib)@
PROVE_OPTIONS = -j0$(TEST_JOBS)
PROVE = prove $(PROVE_OPTIONS)
BASE_DIR = @nfp(@base_dir@)@
Expand Down
9 changes: 5 additions & 4 deletions tools/templates/jvm/Makefile.in
Expand Up @@ -111,6 +111,7 @@ j-all: $(ALL_OUTPUT) $(J_RUNNER) $(P5QREGEX_JAR)
j-install: j-all
$(MKPATH) @q($(DESTDIR)$(BIN_DIR))@
$(MKPATH) @q($(DESTDIR)$(NQP_JAR_DIR))@
$(MKPATH) @q($(DESTDIR)$(NQP_HOME))@
$(MKPATH) @q($(DESTDIR)$(NQP_LIB_DIR))@
$(CP) @q($(ASM))@ @q($(ASMTREE))@ @q($(DESTDIR)$(NQP_JAR_DIR))@
$(CP) @q($(JLINE))@ @q($(JNA))@ @q($(DESTDIR)$(NQP_JAR_DIR))@
Expand All @@ -131,8 +132,8 @@ j-install: j-all
$(RUNTIME_JAR): $(RUNTIME_JAVAS) @mkquot(@script(gen-jvm-properties.pl)@)@
$(PERL5) -MExtUtils::Command -e mkpath bin
$(JAVAC) --release 9 -cp @q($(THIRDPARTY_JARS))@ -g -d bin -encoding UTF8 $(RUNTIME_JAVAS)
$(PERL5) @shquot(@script(gen-jvm-properties.pl)@)@ . @q($(THIRDPARTY_JARS))@ > jvmconfig.properties
$(PERL5) @shquot(@script(gen-jvm-properties.pl)@)@ @nfpq(@prefix@)@ @q($(THIRDPARTY_JARS))@ > @nfpq(bin/jvmconfig.properties)@
$(PERL5) @shquot(@script(gen-jvm-properties.pl)@)@ . @nfpq($(NQP_HOME))@ @q($(THIRDPARTY_JARS))@ > jvmconfig.properties
$(PERL5) @shquot(@script(gen-jvm-properties.pl)@)@ @nfpq(@prefix@)@ @nfpq($(NQP_HOME))@ @q($(THIRDPARTY_JARS))@ > @nfpq(bin/jvmconfig.properties)@
$(JAR) cf0 nqp-runtime.jar -C @nfp(bin/)@ .

J_CLEANUPS = *.class *.jar @q($(J_STAGE1_DIR))@ @q($(J_STAGE2_DIR))@ bin nqp nqp.bat jvmconfig.properties @q($(J_RUNNER))@
Expand Down Expand Up @@ -204,7 +205,7 @@ $(J_STAGE1_DIR): $(J_STAGE1_OUTPUT)

@nfp($(J_STAGE1_DIR)/$(NQP_JAR):)@ $(J_STAGE0_DIR) @nfp($(J_STAGE1_DIR)/$(P6QREGEX_JAR))@ $(J_SOURCES)
$(MKPATH) $(J_STAGE1_DIR)
$(PERL5) @shquot(@script(gen-version.pl)@)@ $(PREFIX) $(NQP_LIB_DIR) > @nfp($(J_STAGE1_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_HOME))@ @q($(NQP_LIB_DIR))@ > @nfp($(J_STAGE1_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-cat.pl)@)@ jvm $(J_NQP_SOURCES) @nfp($(J_STAGE1_DIR)/nqp-config.nqp)@ > @nfp($(J_STAGE1_DIR)/$(NQP_COMBINED))@
$(J_STAGE0_NQP) --module-path=$(J_STAGE1_DIR) --setting-path=$(J_STAGE1_DIR) \
--setting=NQPCORE --target=jar --no-regex-lib --stable-sc=stage1 --javaclass=nqp \
Expand Down Expand Up @@ -272,7 +273,7 @@ $(J_STAGE2_DIR): $(J_STAGE2_OUTPUT)

@nfp($(J_STAGE2_DIR)/$(NQP_JAR):)@ $(J_STAGE1_DIR) @nfp($(J_STAGE2_DIR)/$(P6QREGEX_JAR))@ $(J_SOURCES)
$(MKPATH) $(J_STAGE2_DIR)
$(PERL5) @shquot(@script(gen-version.pl)@)@ $(PREFIX) $(NQP_LIB_DIR) > @nfp($(J_STAGE2_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_HOME))@ @q($(NQP_LIB_DIR))@ > @nfp($(J_STAGE2_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-cat.pl)@)@ jvm $(J_NQP_SOURCES) @nfp($(J_STAGE2_DIR)/nqp-config.nqp)@ > @nfp($(J_STAGE2_DIR)/$(NQP_COMBINED))@
$(J_STAGE1_NQP) --module-path=$(J_STAGE2_DIR) --setting-path=$(J_STAGE2_DIR) \
--setting=NQPCORE --target=jar --no-regex-lib --javaclass=nqp \
Expand Down
5 changes: 3 additions & 2 deletions tools/templates/moar/Makefile.in
Expand Up @@ -107,6 +107,7 @@ m-all: $(NQP_MOAR) $(M_BUILD_RUNNER) $(M_INST_NQP_M) $(M_INST_NQP) $(P5QREGEX_MO

m-install: m-all @@configure_script@@
$(MKPATH) @q($(DESTDIR)$(BIN_DIR))@
$(MKPATH) @q($(DESTDIR)$(NQP_HOME))@
$(MKPATH) @q($(DESTDIR)$(NQP_LIB_DIR))@
$(MKPATH) @nfpq($(DESTDIR)$(NQP_LIB_DIR)/profiler)@
$(CP) $(NQP_MO_MOAR) @q($(DESTDIR)$(NQP_LIB_DIR))@
Expand Down Expand Up @@ -209,7 +210,7 @@ $(M_STAGE1_DIR): $(M_STAGE1_OUTPUT)

@nfp($(M_STAGE1_DIR)/$(NQP_MOAR))@: $(M_STAGE0_DIR) @nfp($(M_STAGE1_DIR)/$(P6QREGEX_MOAR))@ @nfp($(M_STAGE1_DIR)/$(QAST_MOAR))@ $(M_SOURCES)
$(MKPATH) @nfpq($(M_STAGE1_DIR)/gen)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_LIB_DIR))@ > @nfpq($(M_STAGE1_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_HOME))@ @q($(NQP_LIB_DIR))@ > @nfpq($(M_STAGE1_DIR)/nqp-config.nqp)@
$(PERL5) $(M_GEN_CAT) stage1 $(M_NQP_SOURCES) @nfpq($(M_STAGE1_DIR)/nqp-config.nqp)@ > @nfpq($(M_STAGE1_DIR)/$(NQP_COMBINED))@
$(M_STAGE0_NQP) --module-path=$(M_STAGE1_DIR) --setting-path=$(M_STAGE1_DIR) \
--setting=NQPCORE --target=mbc --no-regex-lib --stable-sc=stage1 \
Expand Down Expand Up @@ -280,7 +281,7 @@ $(M_STAGE2_DIR): $(M_STAGE1_OUTPUT)

@nfp($(M_STAGE2_DIR)/$(NQP_MOAR))@: $(M_STAGE1_DIR) @nfp($(M_STAGE2_DIR)/$(QAST_MOAR))@ @nfp($(M_STAGE2_DIR)/$(P6QREGEX_MOAR))@ $(M_SOURCES)
$(MKPATH) @nfpq($(M_STAGE2_DIR)/gen)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_LIB_DIR))@ > @nfpq($(M_STAGE2_DIR)/nqp-config.nqp)@
$(PERL5) @shquot(@script(gen-version.pl)@)@ @q($(PREFIX))@ @q($(NQP_HOME))@ @q($(NQP_LIB_DIR))@ > @nfpq($(M_STAGE2_DIR)/nqp-config.nqp)@
$(PERL5) $(M_GEN_CAT) stage2 $(M_NQP_SOURCES) @nfpq($(M_STAGE2_DIR)/nqp-config.nqp)@ > @nfpq($(M_STAGE2_DIR)/$(NQP_COMBINED))@
$(M_STAGE1_NQP) --module-path=$(M_STAGE2_DIR) --setting-path=$(M_STAGE2_DIR) \
--setting=NQPCORE --target=mbc --no-regex-lib \
Expand Down

0 comments on commit 41675f4

Please sign in to comment.