Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use jar build for rakudo too
  • Loading branch information
sorear committed Jun 21, 2013
1 parent 6f0b29c commit cf6dd7f
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 60 deletions.
11 changes: 9 additions & 2 deletions src/vm/jvm/ModuleLoaderVMConfig.nqp
Expand Up @@ -14,7 +14,7 @@ role Perl6::ModuleLoaderVMConfig {
%cand<key> := $file;
my $dot := nqp::rindex($file, '.');
my $ext := $dot >= 0 ?? nqp::substr($file, $dot, nqp::chars($file) - $dot) !! '';
if $ext eq 'class' {
if $ext eq 'class' || $ext eq 'jar' {
%cand<load> := $file;
}
else {
Expand All @@ -27,6 +27,7 @@ role Perl6::ModuleLoaderVMConfig {
# Assemble various files we'd look for.
my $base_path := nqp::join('/', nqp::split('::', $module_name));
my $class_path := $base_path ~ '.class';
my $jar_path := $base_path ~ '.jar';
my $pm_path := $base_path ~ '.pm';
my $pm6_path := $base_path ~ '.pm6';

Expand All @@ -36,12 +37,18 @@ role Perl6::ModuleLoaderVMConfig {
my $have_pm := nqp::stat("$prefix/$pm_path", 0);
my $have_pm6 := nqp::stat("$prefix/$pm6_path", 0);
my $have_class := nqp::stat("$prefix/$class_path", 0);
my $have_jar := nqp::stat("$prefix/$jar_path", 0);
if $have_pm6 {
# if there are both .pm and .pm6 we assume that
# the former is a Perl 5 module and use the latter
$have_pm := 1;
$pm_path := $pm6_path;
}
if $have_jar {
# might be good to error here?
$have_class := 1;
$class_path := $jar_path;
}
if $have_pm {
my %cand;
%cand<key> := "$prefix/$pm_path";
Expand All @@ -65,7 +72,7 @@ role Perl6::ModuleLoaderVMConfig {

# Finds a setting to load.
method find_setting($setting_name) {
my $path := "$setting_name.setting.class";
my $path := "$setting_name.setting.jar";
my @prefixes := self.search_path();
for @prefixes -> $prefix {
$prefix := ~$prefix;
Expand Down
115 changes: 58 additions & 57 deletions tools/build/Makefile-JVM.in
Expand Up @@ -17,7 +17,7 @@ RM_RF = $(PERL) -MExtUtils::Command -e rm_rf

NQP_JARS = $(NQP_PREFIX)/nqp-runtime.jar@cpsep@$(NQP_PREFIX)/asm-4.1.jar@cpsep@$(NQP_PREFIX)/jline-1.0.jar

RUN_PERL6 = $(JAVA) -Xms500m -Xmx2g -Xbootclasspath/a:.@cpsep@$(NQP_JARS)@cpsep@rakudo-runtime.jar -cp $(NQP_PREFIX) perl6
RUN_PERL6 = $(JAVA) -Xms500m -Xmx2g -Xbootclasspath/a:.@cpsep@$(NQP_JARS)@cpsep@rakudo-runtime.jar@cpsep@perl6.jar -cp $(NQP_PREFIX) perl6

RUNTIME_JAVAS = src/vm/jvm/runtime/org/perl6/rakudo/*.java

Expand All @@ -26,20 +26,20 @@ RUNTIME_JAR = rakudo-runtime.jar
RUNNER = @runner@

# files we create
PERL6_CLASS = perl6.class
PERL6_ML_CLASS = blib/Perl6/ModuleLoader.class
PERL6_CF_CLASS = blib/Perl6/ConstantFolder.class
PERL6_W_CLASS = blib/Perl6/World.class
PERL6_G_CLASS = blib/Perl6/Grammar.class
PERL6_OPS_CLASS = blib/Perl6/Ops.class
PERL6_A_CLASS = blib/Perl6/Actions.class
PERL6_O_CLASS = blib/Perl6/Optimizer.class
PERL6_P_CLASS = blib/Perl6/Pod.class
PERL6_C_CLASS = blib/Perl6/Compiler.class
PERL6_M_CLASS = blib/Perl6/Metamodel.class
PERL6_B_CLASS = blib/Perl6/BOOTSTRAP.class
SETTING_CLASS = CORE.setting.class
R_SETTING_CLASS = RESTRICTED.setting.class
PERL6_JAR = perl6.jar
PERL6_ML_JAR = blib/Perl6/ModuleLoader.jar
PERL6_CF_JAR = blib/Perl6/ConstantFolder.jar
PERL6_W_JAR = blib/Perl6/World.jar
PERL6_G_JAR = blib/Perl6/Grammar.jar
PERL6_OPS_JAR = blib/Perl6/Ops.jar
PERL6_A_JAR = blib/Perl6/Actions.jar
PERL6_O_JAR = blib/Perl6/Optimizer.jar
PERL6_P_JAR = blib/Perl6/Pod.jar
PERL6_C_JAR = blib/Perl6/Compiler.jar
PERL6_M_JAR = blib/Perl6/Metamodel.jar
PERL6_B_JAR = blib/Perl6/BOOTSTRAP.jar
SETTING_JAR = CORE.setting.jar
R_SETTING_JAR = RESTRICTED.setting.jar

METAMODEL_SOURCES = \
src/Perl6/Metamodel/Archetypes.nqp \
Expand Down Expand Up @@ -185,100 +185,101 @@ CORE_SOURCES = \

CLEANUPS = \
*.manifest \
blib/Perl6/*.class \
$(SETTING_CLASS) \
$(R_SETTING_CLASS) \
$(PERL6_CLASS) \
lib/Test.class \
lib/lib.class \
lib/Pod/To/Text.class \
blib/Perl6/*.jar \
$(SETTING_JAR) \
$(R_SETTING_JAR) \
$(PERL6_JAR) \
lib/Test.jar \
lib/lib.jar \
lib/Pod/To/Text.jar \
rakudo_test_run.tar.gz \
src/gen/CORE.setting \
src/gen/*.class \
src/gen/*.jar \
src/gen/*.jar \
src/gen/*.pm \
$(RUNTIME_JAR) \
$(RUNNER)

HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --jvm
HARNESS = $(PERL) t/harness --jvm

all: $(PERL6_CLASS) $(SETTING_CLASS) $(RUNNER) lib/Test.class lib/lib.class lib/Pod/To/Text.class
all: $(PERL6_JAR) $(SETTING_JAR) $(RUNNER) lib/Test.jar lib/lib.jar lib/Pod/To/Text.jar

$(RUNTIME_JAR): $(RUNTIME_JAVAS)
$(PERL) -MExtUtils::Command -e mkpath bin
$(JAVAC) -source 1.7 -cp $(NQP_JARS) -g -d bin $(RUNTIME_JAVAS)
$(JAR) cf0 rakudo-runtime.jar -C bin/ .

$(PERL6_ML_CLASS): src/Perl6/ModuleLoader.nqp src/vm/jvm/ModuleLoaderVMConfig.nqp
$(PERL6_ML_JAR): src/Perl6/ModuleLoader.nqp src/vm/jvm/ModuleLoaderVMConfig.nqp
$(PERL) $(GEN_CAT) src/vm/jvm/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp > src/gen/ModuleLoader.nqp
$(NQP) --target=classfile --output=$(PERL6_ML_CLASS) --encoding=utf8 \
$(NQP) --target=jar --output=$(PERL6_ML_JAR) --encoding=utf8 \
src/gen/ModuleLoader.nqp

$(PERL6_CF_CLASS): src/Perl6/ConstantFolder.nqp
$(NQP) --target=classfile --output=$(PERL6_CF_CLASS) --encoding=utf8 \
$(PERL6_CF_JAR): src/Perl6/ConstantFolder.nqp
$(NQP) --target=jar --output=$(PERL6_CF_JAR) --encoding=utf8 \
src/Perl6/ConstantFolder.nqp

$(PERL6_W_CLASS): $(PERL6_ML_CLASS) src/Perl6/World.nqp
$(NQP) --target=classfile --output=$(PERL6_W_CLASS) --encoding=utf8 \
$(PERL6_W_JAR): $(PERL6_ML_JAR) src/Perl6/World.nqp
$(NQP) --target=jar --output=$(PERL6_W_JAR) --encoding=utf8 \
src/Perl6/World.nqp

$(PERL6_P_CLASS): src/Perl6/Pod.nqp
$(NQP) --target=classfile --output=$(PERL6_P_CLASS) --encoding=utf8 \
$(PERL6_P_JAR): src/Perl6/Pod.nqp
$(NQP) --target=jar --output=$(PERL6_P_JAR) --encoding=utf8 \
src/Perl6/Pod.nqp

$(PERL6_OPS_CLASS): src/vm/jvm/Perl6/Ops.nqp
$(NQP) --target=classfile --output=$(PERL6_OPS_CLASS) --encoding=utf8 \
$(PERL6_OPS_JAR): src/vm/jvm/Perl6/Ops.nqp
$(NQP) --target=jar --output=$(PERL6_OPS_JAR) --encoding=utf8 \
src/vm/jvm/Perl6/Ops.nqp

$(PERL6_A_CLASS): src/Perl6/Actions.nqp $(PERL6_P_CLASS) $(PERL6_CF_CLASS) $(PERL6_OPS_CLASS)
$(NQP) --target=classfile --output=$(PERL6_A_CLASS) --encoding=utf8 \
$(PERL6_A_JAR): src/Perl6/Actions.nqp $(PERL6_P_JAR) $(PERL6_CF_JAR) $(PERL6_OPS_JAR)
$(NQP) --target=jar --output=$(PERL6_A_JAR) --encoding=utf8 \
src/Perl6/Actions.nqp

$(PERL6_G_CLASS): src/Perl6/Grammar.nqp $(PERL6_W_CLASS) $(PERL6_A_CLASS) $(PERL6_P_CLASS)
$(NQP) --target=classfile --output=$(PERL6_G_CLASS) --encoding=utf8 \
$(PERL6_G_JAR): src/Perl6/Grammar.nqp $(PERL6_W_JAR) $(PERL6_A_JAR) $(PERL6_P_JAR)
$(NQP) --target=jar --output=$(PERL6_G_JAR) --encoding=utf8 \
src/Perl6/Grammar.nqp

$(PERL6_O_CLASS): src/Perl6/Optimizer.nqp $(PERL6_OPS_CLASS)
$(NQP) --target=classfile --output=$(PERL6_O_CLASS) --encoding=utf8 \
$(PERL6_O_JAR): src/Perl6/Optimizer.nqp $(PERL6_OPS_JAR)
$(NQP) --target=jar --output=$(PERL6_O_JAR) --encoding=utf8 \
src/Perl6/Optimizer.nqp

$(PERL6_C_CLASS): src/Perl6/Compiler.nqp $(PERL6_O_CLASS)
$(NQP) --target=classfile --output=$(PERL6_C_CLASS) --encoding=utf8 \
$(PERL6_C_JAR): src/Perl6/Compiler.nqp $(PERL6_O_JAR)
$(NQP) --target=jar --output=$(PERL6_C_JAR) --encoding=utf8 \
src/Perl6/Compiler.nqp

$(PERL6_CLASS): src/main.nqp $(RUNTIME_JAR) $(PERL6_G_CLASS) $(PERL6_A_CLASS) $(PERL6_C_CLASS) $(PERL6_P_CLASS)
$(PERL6_JAR): src/main.nqp $(RUNTIME_JAR) $(PERL6_G_JAR) $(PERL6_A_JAR) $(PERL6_C_JAR) $(PERL6_P_JAR)
$(PERL) tools/build/gen-version.pl > src/gen/main-version.nqp
$(PERL) $(GEN_CAT) src/main.nqp src/gen/main-version.nqp > src/gen/main.nqp
$(NQP) --target=classfile --javaclass=perl6 --output=$(PERL6_CLASS) \
$(NQP) --target=jar --javaclass=perl6 --output=$(PERL6_JAR) \
src/gen/main.nqp

$(PERL6_M_CLASS): $(METAMODEL_SOURCES) $(PERL6_OPS_CLASS)
$(PERL6_M_JAR): $(METAMODEL_SOURCES) $(PERL6_OPS_JAR)
$(PERL) $(GEN_CAT) $(METAMODEL_SOURCES) > src/gen/Metamodel.nqp
$(NQP) --target=classfile --output=$(PERL6_M_CLASS) --encoding=utf8 \
$(NQP) --target=jar --output=$(PERL6_M_JAR) --encoding=utf8 \
src/gen/Metamodel.nqp

$(PERL6_B_CLASS): $(BOOTSTRAP_SOURCES) $(PERL6_M_CLASS)
$(PERL6_B_JAR): $(BOOTSTRAP_SOURCES) $(PERL6_M_JAR)
$(PERL) $(GEN_CAT) $(BOOTSTRAP_SOURCES) > src/gen/BOOTSTRAP.nqp
$(PERL) tools/build/nqp-jvm-rr.pl $(NQP) --target=classfile \
--output=$(PERL6_B_CLASS) --encoding=utf8 src/gen/BOOTSTRAP.nqp
$(PERL) tools/build/nqp-jvm-rr.pl $(NQP) --target=jar \
--output=$(PERL6_B_JAR) --encoding=utf8 src/gen/BOOTSTRAP.nqp

$(SETTING_CLASS): $(PERL6_CLASS) $(PERL6_B_CLASS) $(CORE_SOURCES)
$(SETTING_JAR): $(PERL6_JAR) $(PERL6_B_JAR) $(CORE_SOURCES)
$(PERL) $(GEN_CAT) $(CORE_SOURCES) > src/gen/CORE.setting
@echo "The following step can take a long time, please be patient."
$(RUN_PERL6) --setting=NULL --optimize=3 --target=classfile --stagestats --output=$(SETTING_CLASS) src/gen/CORE.setting
$(RUN_PERL6) --setting=NULL --optimize=3 --target=jar --stagestats --output=$(SETTING_JAR) src/gen/CORE.setting

$(RUNNER):
$(PERL) tools/build/create-jvm-runner.pl . $(NQP_PREFIX) $(NQP_JARS)

## testing targets
lib/Test.class: lib/Test.pm $(PERL6_CLASS) $(SETTING_CLASS) $(RUNNER)
.@slash@$(RUNNER) --target=classfile --output=lib/Test.class lib/Test.pm
lib/Test.jar: lib/Test.pm $(PERL6_JAR) $(SETTING_JAR) $(RUNNER)
.@slash@$(RUNNER) --target=jar --output=lib/Test.jar lib/Test.pm

lib/lib.class: lib/lib.pm6 $(PERL6_CLASS) $(SETTING_CLASS) $(RUNNER)
.@slash@$(RUNNER) --target=classfile --output=lib/lib.class lib/lib.pm6
lib/lib.jar: lib/lib.pm6 $(PERL6_JAR) $(SETTING_JAR) $(RUNNER)
.@slash@$(RUNNER) --target=jar --output=lib/lib.jar lib/lib.pm6

lib/Pod/To/Text.class: lib/Pod/To/Text.pm $(PERL6_CLASS) $(SETTING_CLASS) $(RUNNER)
.@slash@$(RUNNER) --target=classfile --output=lib/Pod/To/Text.class lib/Pod/To/Text.pm
lib/Pod/To/Text.jar: lib/Pod/To/Text.pm $(PERL6_JAR) $(SETTING_JAR) $(RUNNER)
.@slash@$(RUNNER) --target=jar --output=lib/Pod/To/Text.jar lib/Pod/To/Text.pm

test : coretest

Expand Down
2 changes: 1 addition & 1 deletion tools/build/create-jvm-runner.pl
Expand Up @@ -31,7 +31,7 @@ sub install {
chmod 0755, $install_to if $^O ne 'MSWin32';
}

my $jopts = '-Xms100m -Xbootclasspath/a:' . $prefix . $cpsep . $thirdpartyjars . $cpsep . 'rakudo-runtime.jar -cp ' . $nqpprefix;
my $jopts = '-Xms100m -Xbootclasspath/a:' . $prefix . $cpsep . $thirdpartyjars . $cpsep . "rakudo-runtime.jar${cpsep}perl6.jar -cp " . $nqpprefix;

install "perl6", "java $jopts perl6";
install "perl6-jdb-server", "java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n $jopts perl6";
Expand Down

0 comments on commit cf6dd7f

Please sign in to comment.