From f882c97f6062bfa75299ff5cef08f3519a718a0a Mon Sep 17 00:00:00 2001 From: Brad Nelson Date: Fri, 22 Dec 2023 14:33:08 -0800 Subject: [PATCH] Fixed gen dependencies. --- Makefile | 94 +++++++++++++++++++------------------------- common/phase1e.fs | 23 +++++++++++ tools/importation.py | 15 +++++-- web/web_boot.fs | 21 ++++++++++ 4 files changed, 95 insertions(+), 58 deletions(-) create mode 100644 common/phase1e.fs create mode 100644 web/web_boot.fs diff --git a/Makefile b/Makefile index 0bc0c62..175cbf8 100644 --- a/Makefile +++ b/Makefile @@ -95,6 +95,7 @@ TARGETS = posix_target \ web_target \ esp32_target \ esp32_sim_target \ + pico_ice_target \ pico_ice_sim_target TESTS = posix_tests web_tests esp32_sim_tests @@ -233,73 +234,57 @@ sanity_test_web: $(WEB)/ueforth.js $(GEN): mkdir -p $@ -COMMON_PHASE1 = common/comments.fs \ - common/boot.fs \ - common/io.fs \ - common/conditionals.fs \ - common/vocabulary.fs \ - common/floats.fs \ - common/structures.fs +-include $(GEN)/posix_boot_merged.fs.dd -COMMON_PHASE1e = common/comments.fs \ - common/tier2a_forth.fs \ - common/boot.fs \ - common/tier2b_forth.fs \ - common/io.fs \ - common/conditionals.fs \ - common/vocabulary.fs \ - common/floats.fs \ - common/structures.fs - -COMMON_PHASE2 = common/utils.fs common/code.fs common/locals.fs common/case.fs - -COMMON_FILETOOLS = common/tasks.fs common/streams.fs \ - common/filetools.fs common/including.fs \ - common/blocks.fs common/ansi.fs \ - common/visual.fs - -COMMON_DESKTOP = common/desktop.fs \ - common/graphics.fs common/graphics_utils.fs common/heart.fs - -$(GEN)/posix_boot_merged.fs: tools/importation.py posix/posix_boot.fs | $(GEN) - $^ -I . -I $(GEN) \ +$(GEN)/posix_boot_merged.fs: posix/posix_boot.fs | $(GEN) + ./tools/importation.py $< $@ \ + -I . -I $(GEN) --depsout $@.dd \ --set-version $(VERSION) \ - --set-revision $(REVISION) >$@ + --set-revision $(REVISION) $(GEN)/posix_boot.h: tools/source_to_string.js $(GEN)/posix_boot_merged.fs | $(GEN) $< boot $(VERSION) $(REVISION) $(GEN)/posix_boot_merged.fs >$@ -$(GEN)/windows_boot_extra_merged.fs: \ - tools/importation.py windows/windows_boot_extra.fs | $(GEN) - $^ -I . -I $(GEN) \ +-include $(GEN)/windows_boot_extra_merged.fs.dd + +$(GEN)/windows_boot_extra_merged.fs: windows/windows_boot_extra.fs | $(GEN) + ./tools/importation.py $< $@ \ + -I . -I $(GEN) --depsout $@.dd \ --set-version $(VERSION) \ - --set-revision $(REVISION) >$@ + --set-revision $(REVISION) $(GEN)/windows_boot_extra.h: tools/source_to_string.js $(GEN)/windows_boot_extra_merged.fs | $(GEN) $< -win boot_extra $(VERSION) $(REVISION) $(GEN)/windows_boot_extra_merged.fs >$@ -$(GEN)/windows_boot_merged.fs: tools/importation.py windows/windows_boot.fs | $(GEN) - $^ -I . -I $(GEN) \ +-include $(GEN)/windows_boot_merged.fs.dd + +$(GEN)/windows_boot_merged.fs: windows/windows_boot.fs | $(GEN) + ./tools/importation.py $^ $@ \ + -I . -I $(GEN) --depsout $@.dd \ --set-version $(VERSION) \ - --set-revision $(REVISION) >$@ + --set-revision $(REVISION) $(GEN)/windows_boot.h: tools/source_to_string.js $(GEN)/windows_boot_merged.fs | $(GEN) $< -win boot $(VERSION) $(REVISION) $(GEN)/windows_boot_merged.fs >$@ -$(GEN)/pico_ice_boot_merged.fs: \ - tools/importation.py pico-ice/pico_ice_boot.fs | $(GEN) - $^ -I . -I $(GEN) \ +-include $(GEN)/pico_ice_boot_merged.fs.dd + +$(GEN)/pico_ice_boot_merged.fs: pico-ice/pico_ice_boot.fs | $(GEN) + ./tools/importation.py $^ $@ \ + -I . -I $(GEN) --depsout $@.dd \ --set-version $(VERSION) \ - --set-revision $(REVISION) >$@ + --set-revision $(REVISION) $(GEN)/pico_ice_boot.h: tools/source_to_string.js $(GEN)/pico_ice_boot_merged.fs | $(GEN) $< boot $(VERSION) $(REVISION) $(GEN)/pico_ice_boot_merged.fs >$@ -$(GEN)/esp32_boot_merged.fs: \ - tools/importation.py esp32/esp32_boot.fs | $(GEN) - $^ -I . -I $(GEN) \ +-include $(GEN)/esp32_boot_merged.fs.dd + +$(GEN)/esp32_boot_merged.fs: esp32/esp32_boot.fs | $(GEN) + ./tools/importation.py $^ $@ \ + -I . -I $(GEN) --depsout $@.dd \ --set-version $(VERSION) \ - --set-revision $(REVISION) >$@ + --set-revision $(REVISION) $(GEN)/esp32_boot.h: tools/source_to_string.js $(GEN)/esp32_boot_merged.fs | $(GEN) $< boot $(VERSION) $(REVISION) $(GEN)/esp32_boot_merged.fs >$@ @@ -390,15 +375,16 @@ $(GEN)/web_dict.js: $(GEN)/dump_web_opcodes | $(GEN) $(GEN)/web_sys.js: $(GEN)/dump_web_opcodes | $(GEN) $< sys >$@ -WEB_BOOT = $(COMMON_PHASE1e) \ - web/platform.fs \ - common/ansi.fs \ - $(COMMON_PHASE2) \ - common/tasks.fs \ - web/utils.fs \ - web/fini.fs -$(GEN)/web_boot.js: tools/source_to_string.js $(WEB_BOOT) | $(GEN) - $< -web boot $(VERSION) $(REVISION) $(WEB_BOOT) >$@ +-include $(GEN)/web_boot_merged.fs.dd + +$(GEN)/web_boot_merged.fs: web/web_boot.fs | $(GEN) + ./tools/importation.py $^ $@ \ + -I . -I $(GEN) --depsout $@.dd \ + --set-version $(VERSION) \ + --set-revision $(REVISION) + +$(GEN)/web_boot.js: tools/source_to_string.js $(GEN)/web_boot_merged.fs | $(GEN) + $< -web boot $(VERSION) $(REVISION) $(GEN)/web_boot_merged.fs >$@ # ---- RESOURCES ---- diff --git a/common/phase1e.fs b/common/phase1e.fs new file mode 100644 index 0000000..f7a3748 --- /dev/null +++ b/common/phase1e.fs @@ -0,0 +1,23 @@ +\ Copyright 2023 Bradley D. Nelson +\ +\ Licensed under the Apache License, Version 2.0 (the "License"); +\ you may not use this file except in compliance with the License. +\ You may obtain a copy of the License at +\ +\ http://www.apache.org/licenses/LICENSE-2.0 +\ +\ Unless required by applicable law or agreed to in writing, software +\ distributed under the License is distributed on an "AS IS" BASIS, +\ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +\ See the License for the specific language governing permissions and +\ limitations under the License. + +needs comments.fs +needs tier2a_forth.fs +needs boot.fs +needs tier2b_forth.fs +needs io.fs +needs conditionals.fs +needs vocabulary.fs +needs floats.fs +needs structures.fs diff --git a/tools/importation.py b/tools/importation.py index 467ff06..2d727f5 100755 --- a/tools/importation.py +++ b/tools/importation.py @@ -7,15 +7,17 @@ import sys parser = argparse.ArgumentParser( prog='importation', description='Imports header / fs files') -parser.add_argument('filename') +parser.add_argument('input') +parser.add_argument('output') parser.add_argument('-I', action='append') parser.add_argument('--set-version') parser.add_argument('--set-revision') +parser.add_argument('--depsout') args = parser.parse_args() bases = args.I or [] results = [] -imported = set() +imported = set([__file__]) def Import(filename): filename = os.path.abspath(filename) @@ -46,12 +48,17 @@ def Import(filename): results.append(line) def Process(): - Import(args.filename) + Import(args.input) for line in results: if args.set_version: line = line.replace('{{VERSION}}', args.set_version) if args.set_revision: line = line.replace('{{REVISION}}', args.set_revision) - print('\n'.join(results)) + if args.depsout: + with open(args.depsout, 'w') as fh: + fh.write(args.output + ': ' + + ' '.join([os.path.relpath(i) for i in imported]) + '\n') + with open(args.output, 'w') as fh: + fh.write('\n'.join(results) + '\n') Process() diff --git a/web/web_boot.fs b/web/web_boot.fs new file mode 100644 index 0000000..8c8f085 --- /dev/null +++ b/web/web_boot.fs @@ -0,0 +1,21 @@ +\ Copyright 2023 Bradley D. Nelson +\ +\ Licensed under the Apache License, Version 2.0 (the "License"); +\ you may not use this file except in compliance with the License. +\ You may obtain a copy of the License at +\ +\ http://www.apache.org/licenses/LICENSE-2.0 +\ +\ Unless required by applicable law or agreed to in writing, software +\ distributed under the License is distributed on an "AS IS" BASIS, +\ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +\ See the License for the specific language governing permissions and +\ limitations under the License. + +needs ../common/phase1e.fs +needs platform.fs +needs ../common/ansi.fs +needs ../common/phase2.fs +needs ../common/tasks.fs +needs utils.fs +needs fini.fs