diff --git a/tools/templates/js/Makefile.in b/tools/templates/js/Makefile.in index 8a29b1bd0e8..dcb879080a1 100644 --- a/tools/templates/js/Makefile.in +++ b/tools/templates/js/Makefile.in @@ -1,4 +1,135 @@ +JS_CORE_SOURCES = @insert_filelist(core_sources)@ +@for_specs( +JS_CORE_@ucspec@_SOURCES = \ + @insert_filelist(core_sources)@ +)@ -@include_capture(@js_nqp@ @nfp(tools/build/gen-js-makefile.nqp)@)@ +JS_BUILD_DIR = @nfp(js/moar)@ -# vim: ft=make noexpandtab ts=4 sw=4 +JS_BLIB = @js_blib@ +JS_BUILD_DIR = @js_build_dir@ +JS_NQP = @js_nqp@ +JS_RUNNER = @perl6_js_runner@ +JS_RUNTIME = @nqp::libdir@@nfp(/nqp-js-on-js/node_modules/nqp-runtime)@ +JS_FLAGS = --nqp-runtime $(JS_RUNTIME) --perl6-runtime @perl6_runtime@ --libpath "@perl6_lowlevel_libs@|||@nqp::libdir@@nfp(/nqp-js-on-js/)@" +@nfp($(JS_BUILD_DIR)/ModuleLoader.nqp)@: @nfp(src/vm/js/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp)@ + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js @nfp(src/vm/js/ModuleLoaderVMConfig.nqp src/Perl6/ModuleLoader.nqp)@ > @nfp($(JS_BUILD_DIR)/ModuleLoader.nqp)@ + +@nfp($(JS_BLIB)/Perl6-ModuleLoader.js)@: @nfp($(JS_BUILD_DIR)/ModuleLoader.nqp)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-ModuleLoader.js)@ @nfp($(JS_BUILD_DIR)/ModuleLoader.nqp)@ + +@nfp($(JS_BUILD_DIR)/Perl6-Ops.nqp)@: @nfp(src/vm/js/Perl6/Ops.nqp src/Perl6/Ops.nqp)@ + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js @nfp(src/vm/js/Perl6/Ops.nqp src/Perl6/Ops.nqp)@ > @nfp($(JS_BUILD_DIR)/Perl6-Ops.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Ops.js)@: @nfp($(JS_BUILD_DIR)/Perl6-Ops.nqp)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Ops.js)@ @nfp($(JS_BUILD_DIR)/Perl6-Ops.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Pod.js)@: @nfp(src/Perl6/Pod.nqp)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Pod.js)@ @nfp(src/Perl6/Pod.nqp)@ + +@nfp($(JS_BLIB)/Perl6-World.js)@: @nfp(src/Perl6/World.nqp $(JS_BLIB)/Perl6-Ops.js $(JS_BLIB)/Perl6-Pod.js $(JS_BLIB)/Perl6-ModuleLoader.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-World.js)@ @nfp(src/Perl6/World.nqp)@ + +@nfp($(JS_BUILD_DIR)/Perl6-Actions.nqp)@: @nfp(src/Perl6/Actions.nqp)@ + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js @nfp(src/Perl6/Actions.nqp)@ > @nfp($(JS_BUILD_DIR)/Perl6-Actions.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Actions.js)@: @nfp($(JS_BUILD_DIR)/Perl6-Actions.nqp $(JS_BLIB)/Perl6-Ops.js $(JS_BLIB)/Perl6-World.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Actions.js)@ @nfp($(JS_BUILD_DIR)/Perl6-Actions.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Grammar.js)@: @nfp(src/Perl6/Grammar.nqp $(JS_BLIB)/Perl6-World.js $(JS_BLIB)/Perl6-Actions.js $(JS_BLIB)/Perl6-Pod.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Grammar.js)@ @nfp(src/Perl6/Grammar.nqp)@ + +@nfp($(JS_BUILD_DIR)/Perl6-Optimizer.nqp)@: @nfp(src/Perl6/Optimizer.nqp)@ + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js @nfp(src/Perl6/Optimizer.nqp)@ > @nfp($(JS_BUILD_DIR)/Perl6-Optimizer.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Optimizer.js)@: @nfp($(JS_BUILD_DIR)/Perl6-Optimizer.nqp $(JS_BLIB)/Perl6-Ops.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Optimizer.js)@ @nfp($(JS_BUILD_DIR)/Perl6-Optimizer.nqp)@ + +@nfp($(JS_BLIB)/Perl6-Compiler.js)@: @nfp(src/Perl6/Compiler.nqp $(JS_BLIB)/Perl6-Optimizer.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Compiler.js)@ @nfp(src/Perl6/Compiler.nqp)@ + +@nfp($(JS_BUILD_DIR)/main-version.nqp)@: + $(CONFIGURE) --expand main-version --out @nfp($(JS_BUILD_DIR)/main-version.nqp)@ + +@nfp($(JS_BUILD_DIR)/main.nqp)@: @nfp(src/main.nqp $(JS_BUILD_DIR)/main-version.nqp)@ + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js @nfp(src/main.nqp $(JS_BUILD_DIR)/main-version.nqp)@ > @nfp($(JS_BUILD_DIR)/main.nqp)@ + +rakudo.js: @nfp($(JS_BUILD_DIR)/main.nqp $(JS_BLIB)/Perl6-Grammar.js $(JS_BLIB)/Perl6-Actions.js $(JS_BLIB)/Perl6-Compiler.js $(JS_BLIB)/Perl6-Pod.js)@ + $(JS_NQP) $(JS_FLAGS) --execname $(JS_RUNNER) --substagestats --stagestats --target=js --source-map --shebang --output=rakudo.js @nfp($(JS_BUILD_DIR)/main.nqp)@ + +@nfp($(JS_BLIB)/load-compiler.js)@: @nfp(src/vm/js/load-compiler.nqp $(JS_BLIB)/Perl6-Grammar.js $(JS_BLIB)/Perl6-Actions.js $(JS_BLIB)/Perl6-Compiler.js $(JS_BLIB)/Perl6-Pod.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/load-compiler.js)@ @nfp(src/vm/js/load-compiler.nqp)@ + +$(JS_RUNNER): + $(PERL5) @script(create-js-runner.pl)@ + +@nfp($(JS_BUILD_DIR)/Metamodel.nqp)@: $(COMMON_BOOTSTRAP_SOURCES) + $(JS_NQP) @script(gen-cat.nqp)@ js -f @template(common_bootstrap_sources)@ > @nfp($(JS_BUILD_DIR)/Metamodel.nqp)@ + +@nfp($(JS_BUILD_DIR)/Perl6-BOOTSTRAP.nqp)@: $(BOOTSTRAP_SOURCES) + $(MKPATH) $(JS_BUILD_DIR) + $(JS_NQP) @script(gen-cat.nqp)@ js $(BOOTSTRAP_SOURCES) > @nfp($(JS_BUILD_DIR)/Perl6-BOOTSTRAP.nqp)@ + +@nfp($(JS_BUILD_DIR)/CORE.setting)@: $(JS_CORE_SOURCES) + @echo "The following step can take a very long time, please be patient." + $(CONFIGURE) --expand @shquot(@template(core_sources)@)@ \ + --out @nfpq($(JS_BUILD_DIR)/core_sources)@ \ + --set-var=backend=@backend@ + $(JS_NQP) @script(gen-cat.nqp)@ js -f @nfpq($(JS_BUILD_DIR)/core_sources)@ > @nfp($(JS_BUILD_DIR)/CORE.setting)@ + +@for_specs( +@nfp($(JS_BUILD_DIR)/CORE.@lcspec@.setting)@: $(JS_CORE_@ucspec@_SOURCES) + @echo "The following step can take a very long time, please be patient." + $(JS_NQP) @script(gen-cat.nqp)@ js $(JS_CORE_@ucspec@_SOURCES) > @nfp($(JS_BUILD_DIR)/CORE.@lcspec@.setting)@ + + +)@ +@nfp($(JS_BLIB)/Perl6-Metamodel.js)@: @nfp($(JS_BUILD_DIR)/Metamodel.nqp $(JS_BLIB)/Perl6-Ops.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-Metamodel.js)@ @nfp($(JS_BUILD_DIR)/Metamodel.nqp)@ + +@nfp($(JS_BLIB)/Perl6-BOOTSTRAP.js)@: @nfp($(JS_BUILD_DIR)/Perl6-BOOTSTRAP.nqp $(JS_BLIB)/Perl6-Metamodel.js)@ + $(MKPATH) $(JS_BLIB) + $(JS_NQP) $(JS_FLAGS) --substagestats --stagestats --target=js --source-map --output=@nfp($(JS_BLIB)/Perl6-BOOTSTRAP.js)@ @nfp($(JS_BUILD_DIR)/Perl6-BOOTSTRAP.nqp)@ + +@nfp($(JS_BLIB)/CORE.setting.js)@: @nfp($(JS_BUILD_DIR)/CORE.setting rakudo.js $(JS_BLIB)/Perl6-BOOTSTRAP.js)@ + node --max-old-space-size=8192 rakudo.js $(JS_FLAGS) --source-map --target=js --setting=NULL --output=@nfp(node_modules/CORE.setting.js)@ @nfp($(JS_BUILD_DIR)/CORE.setting)@ + +@for_specs( +@nfp($(JS_BLIB)/CORE.@lcspec@.setting.js)@: @nfp($(JS_BUILD_DIR)/CORE.@lcspec@.setting rakudo.js $(JS_BLIB)/Perl6-BOOTSTRAP.js $(JS_BLIB)/CORE.setting.js)@ + node --max-old-space-size=8192 rakudo.js $(JS_FLAGS) --source-map --target=js --setting=NULL.@lcspec@ --output=@nfp($(JS_BLIB)/CORE.@lcspec@.setting.js)@ @nfp($(JS_BUILD_DIR)/CORE.@lcspec@.setting)@ + + +)@ +js-all: check_nqp_version @nfp($(JS_BUILD_DIR)/ModuleLoader.nqp $(JS_BLIB)/Perl6-Grammar.js $(JS_BLIB)/Perl6-Actions.js $(JS_BLIB)/Perl6-Compiler.js $(JS_BLIB)/Perl6-Pod.js rakudo.js $(JS_BLIB)/Perl6-BOOTSTRAP.js $(JS_BLIB)/CORE.setting.js @for_specs($(JS_BLIB)/CORE.@lcspec@.setting.js )@$(JS_RUNNER) $(JS_BLIB)/load-compiler.js +)@ +js-clean: + $(RM_F) @nfp($(JS_BUILD_DIR)/ModuleLoader.nqp rakudo.js $(JS_BLIB)/CORE.setting.js $(JS_BUILD_DIR)/CORE.setting $(JS_BUILD_DIR)/ModuleLoader.nqp $(JS_BLIB)/Perl6-ModuleLoader.js $(JS_BUILD_DIR)/Perl6-Ops.nqp $(JS_BLIB)/Perl6-Ops.js $(JS_BLIB)/Perl6-Pod.js $(JS_BLIB)/Perl6-World.js $(JS_BUILD_DIR)/Perl6-Actions.nqp $(JS_BLIB)/Perl6-Actions.js $(JS_BLIB)/Perl6-Grammar.js $(JS_BUILD_DIR)/Perl6-Optimizer.nqp $(JS_BLIB)/Perl6-Optimizer.js $(JS_BLIB)/Perl6-Compiler.js $(JS_BUILD_DIR)/main-version.nqp $(JS_BUILD_DIR)/main.nqp rakudo.js $(JS_BLIB)/load-compiler.js $(JS_BUILD_DIR)/Metamodel.nqp $(JS_BUILD_DIR)/Perl6-BOOTSTRAP.nqp $(JS_BLIB)/Perl6-Metamodel.js $(JS_BLIB)/Perl6-BOOTSTRAP.js)@ +js-lint: + gjslint --strict --max_line_length=200 --nojsdoc @nfp(src/vm/js/perl6-runtime/*.js)@ +js-testable: js-all spectest_checkout spectest_update + +js-spectest: js-testable + $(PERL5) t/harness5 --fudge --js --keep-exit-code --tests-from-file=@nfp(t/spectest.js.data)@ + +check_nqp_version: @script(check-nqp-version.pl)@ + $(PERL5) @script(check-nqp-version.pl)@ $(JS_NQP) + +js-install: js-all + @echo "Installing the js backend is not yet implemented." + +js-runner-default: