Skip to content

Commit a4cec83

Browse files
committed
[js] The bootstrapped nqp-js runs hello world with turned off setting.
make js-bootstrap node nqp-bootstrapped.js --target=js --setting=NULL -e 'nqp::say("Hello World")' | node
1 parent e7971ec commit a4cec83

File tree

2 files changed

+29
-24
lines changed

2 files changed

+29
-24
lines changed

tools/build/Makefile-JS.in

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,33 +80,28 @@ node_modules/runtime_copied: node_modules/npm_installed src/vm/js/nqp-runtime/*.
8080
js-install: js-all
8181
@echo "*** The JavaScript backend can't be installed yet, sorry! ***"
8282
JS_NQP_SOURCES = $(COMMON_NQP_SOURCES)
83-
$(JS_STAGE2)/$(P6QREGEX_COMBINED): $(P6QREGEX_SOURCES)
84-
$(MKPATH) $(JS_STAGE2)
85-
86-
$(PERL) tools/build/gen-cat.pl js $(P6QREGEX_SOURCES) > $(JS_STAGE2)/$(P6QREGEX_COMBINED)
87-
8883
$(JS_STAGE2)/$(NQP_COMBINED): $(JS_NQP_SOURCES)
8984
$(MKPATH) $(JS_STAGE2)
90-
91-
$(PERL) tools/build/gen-cat.pl js $(JS_NQP_SOURCES) > $(JS_STAGE2)/$(NQP_COMBINED)
85+
$(PERL) tools/build/gen-version.pl > $(JS_STAGE2)/nqp-config.nqp
86+
$(PERL) tools/build/gen-cat.pl js $(JS_NQP_SOURCES) $(JS_STAGE2)/nqp-config.nqp > $(JS_STAGE2)/$(NQP_COMBINED)
9287

9388
JS_HLL_SOURCES = src/vm/js/HLL/Backend.nqp $(COMMON_HLL_SOURCES)
9489
$(JS_STAGE2)/$(HLL_COMBINED): $(JS_HLL_SOURCES)
9590
$(MKPATH) $(JS_STAGE2)
9691

9792
$(PERL) tools/build/gen-cat.pl js $(JS_HLL_SOURCES) > $(JS_STAGE2)/$(HLL_COMBINED)
9893

99-
$(JS_STAGE2)/$(QAST_COMBINED): $(JS_QAST_SOURCES)
100-
$(MKPATH) $(JS_STAGE2)
101-
102-
$(PERL) tools/build/gen-cat.pl js $(JS_QAST_SOURCES) > $(JS_STAGE2)/$(QAST_COMBINED)
94+
$(JS_STAGE2)/QAST/Compiler.moarvm: $(JS_STAGE1_COMPILER) src/vm/js/QAST/Compiler.nqp $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QASTNode.moarvm
95+
$(MKPATH) $(JS_STAGE2)/QAST
96+
$(MKPATH) node_modules/QAST
97+
$(JS_NQP) --module-path gen/js/stage1 src/vm/js/bin/cross-compile.nqp --setting=NQPCORE --target=mbc --output $(JS_STAGE2)/QAST/Compiler.moarvm src/vm/js/QAST/Compiler.nqp > node_modules/QAST/Compiler.js
10398

104-
$(JS_STAGE2)/QAST.moarvm: $(JS_STAGE1_COMPILER) $(JS_STAGE2)/$(QAST_COMBINED) $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QASTNode.moarvm
99+
$(JS_STAGE2)/QAST.moarvm: $(JS_STAGE1_COMPILER) src/vm/js/QAST.nqp $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QAST/Compiler.moarvm
105100
$(MKPATH) $(JS_STAGE2)
106101
$(MKPATH) node_modules
107-
$(JS_NQP) --module-path gen/js/stage1 src/vm/js/bin/cross-compile.nqp --setting=NQPCORE --target=mbc --output $(JS_STAGE2)/QAST.moarvm $(JS_STAGE2)/$(QAST_COMBINED) > node_modules/QAST.js
102+
$(JS_NQP) --module-path gen/js/stage1 src/vm/js/bin/cross-compile.nqp --setting=NQPCORE --target=mbc --output $(JS_STAGE2)/QAST.moarvm src/vm/js/QAST.nqp > node_modules/QAST.js
108103

109-
$(JS_STAGE2)/NQPHLL.moarvm: $(JS_STAGE1_COMPILER) $(JS_STAGE2)/$(HLL_COMBINED) $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QAST.moarvm
104+
$(JS_STAGE2)/NQPHLL.moarvm: $(JS_STAGE1_COMPILER) $(JS_STAGE2)/$(HLL_COMBINED) $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QAST/Compiler.moarvm $(JS_STAGE2)/QRegex.moarvm
110105
$(MKPATH) $(JS_STAGE2)
111106
$(MKPATH) node_modules
112107
$(JS_NQP) --module-path gen/js/stage1 src/vm/js/bin/cross-compile.nqp --setting=NQPCORE --target=mbc --output $(JS_STAGE2)/NQPHLL.moarvm $(JS_STAGE2)/$(HLL_COMBINED) > node_modules/NQPHLL.js
@@ -116,9 +111,12 @@ $(JS_STAGE2)/$(P6QREGEX_COMBINED): $(P6QREGEX_SOURCES)
116111

117112
$(PERL) tools/build/gen-cat.pl js $(P6QREGEX_SOURCES) > $(JS_STAGE2)/$(P6QREGEX_COMBINED)
118113

119-
$(JS_STAGE2)/NQPP6QRegex.moarvm: $(JS_STAGE1_COMPILER) $(JS_STAGE2)/$(P6QREGEX_COMBINED) $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QAST.moarvm $(JS_STAGE2)/NQPHLL.moarvm
114+
$(JS_STAGE2)/NQPP6QRegex.moarvm: $(JS_STAGE1_COMPILER) $(JS_STAGE2)/$(P6QREGEX_COMBINED) $(JS_STAGE2)/NQPCORE.setting.moarvm $(JS_STAGE2)/QAST.moarvm $(JS_STAGE2)/NQPHLL.moarvm $(JS_STAGE2)/QRegex.moarvm
120115
$(MKPATH) $(JS_STAGE2)
121116
$(MKPATH) node_modules
122117
$(JS_NQP) --module-path gen/js/stage1 src/vm/js/bin/cross-compile.nqp --setting=NQPCORE --target=mbc --output $(JS_STAGE2)/NQPP6QRegex.moarvm $(JS_STAGE2)/$(P6QREGEX_COMBINED) > node_modules/NQPP6QRegex.js
123118

124-
js-bootstrap : $(JS_STAGE2)/$(NQP_COMBINED) $(JS_STAGE2)/$(P6QREGEX_COMBINED) $(JS_STAGE2)/$(HLL_COMBINED) $(JS_STAGE2)/QAST.moarvm $(JS_STAGE2)/NQPP6QRegex.moarvm
119+
nqp-bootstrapped.js: $(JS_STAGE2)/QAST.moarvm $(JS_STAGE2)/NQPP6QRegex.moarvm $(JS_STAGE2)/$(NQP_COMBINED) $(JS_STAGE2)/QRegex.moarvm
120+
./nqp-js --target=js --output=nqp-bootstrapped.js $(JS_STAGE2)/$(NQP_COMBINED)
121+
122+
js-bootstrap : js-all nqp-bootstrapped.js

tools/build/gen-js-makefile.nqp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ sub deps($target, *@deps) {
4949
say("$target : {nqp::join(' ',@deps)}");
5050
}
5151

52+
# TODO is the version regenerated as often as it should
5253
sub combine(:$sources, :$stage, :$file, :$gen-version = 0) {
5354

5455
my $target := stage_path($stage) ~ $file;
@@ -147,29 +148,35 @@ say('js-install: js-all
147148
constant('JS_NQP_SOURCES', '$(COMMON_NQP_SOURCES)');
148149

149150

150-
my $p6regex-combined := combine(:stage(2), :sources('$(P6QREGEX_SOURCES)'), :file('$(P6QREGEX_COMBINED)'));
151151

152-
my $nqp-combined := combine(:stage(2), :sources('$(JS_NQP_SOURCES)'), :file('$(NQP_COMBINED)'));
152+
my $nqp-combined := combine(:stage(2), :sources('$(JS_NQP_SOURCES)'), :file('$(NQP_COMBINED)'), :gen-version(1));
153153

154154
constant('JS_HLL_SOURCES', 'src/vm/js/HLL/Backend.nqp $(COMMON_HLL_SOURCES)');
155155

156156
my $hll-combined := combine(:stage(2), :sources('$(JS_HLL_SOURCES)'), :file('$(HLL_COMBINED)'));
157157

158158

159159

160-
#my $QAST-Compiler-moarvm := cross-compile(:stage(2), :source('src/vm/js/QAST/Compiler.nqp'), :target('QAST/Compiler'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QASTNode-moarvm]));
160+
my $QAST-Compiler-moarvm := cross-compile(:stage(2), :source('src/vm/js/QAST/Compiler.nqp'), :target('QAST/Compiler'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QASTNode-moarvm]));
161161

162-
my $QAST-combined := combine(:stage(2), :sources('$(JS_QAST_SOURCES)'), :file('$(QAST_COMBINED)'));
163-
my $QAST-moarvm := cross-compile(:stage(2), :source($QAST-combined), :target('QAST'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QASTNode-moarvm]));
164162

165-
my $hll-moar := cross-compile(:stage(2), :source($hll-combined), :target('NQPHLL'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QAST-moarvm]));
163+
my $QAST-moarvm := cross-compile(:stage(2), :source('src/vm/js/QAST.nqp'), :target('QAST'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QAST-Compiler-moarvm]));
164+
165+
166+
my $hll-moar := cross-compile(:stage(2), :source($hll-combined), :target('NQPHLL'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QAST-Compiler-moarvm, $QRegex-moarvm]));
166167

167168
my $p6qregex-combined := combine(:stage(2), :sources('$(P6QREGEX_SOURCES)'), :file('$(P6QREGEX_COMBINED)'));
168169

169170

170171

171-
my $NQPP6QRegex-moarvm := cross-compile(:stage(2), :source($p6regex-combined), :target('NQPP6QRegex'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QAST-moarvm, $hll-moar]));
172+
my $NQPP6QRegex-moarvm := cross-compile(:stage(2), :source($p6qregex-combined), :target('NQPP6QRegex'), :setting('NQPCORE'), :no-regex-lib(1), :deps([$nqpcore-moarvm, $QAST-moarvm, $hll-moar, $QRegex-moarvm]));
173+
174+
my $nqp-bootstrapped := "nqp-bootstrapped.js";
175+
176+
say("nqp-bootstrapped.js: $QAST-moarvm $NQPP6QRegex-moarvm $nqp-combined $QRegex-moarvm
177+
./nqp-js --target=js --output=$nqp-bootstrapped $nqp-combined
178+
");
172179

173180

174-
deps("js-bootstrap", $nqp-combined, $p6regex-combined, $hll-combined, $QAST-moarvm, $NQPP6QRegex-moarvm);
181+
deps("js-bootstrap", "js-all", $nqp-bootstrapped);
175182

0 commit comments

Comments
 (0)