AXIOM_LOCAL_LISP_sources = initial-env.lisp AXIOM_LOCAL_LISP = ../lisp/lisp$(EXEEXT) PROCLAIMS=(load "$(srcdir)/boot-proclaims.lisp") boot_objects = initial-env.$(FASLEXT) $(boot_sources:.boot=.$(FASLEXT)) ## ECL's program construction model is not based on image-dumping. It is ## closer to `traditional C' application building. Therefore, since ## bootsys is an augmentation of base-lisp, we need to have the objects ## that made up base-lisp too. ifeq (@axiom_lisp_flavor@,ecl) boot_objects_extra = ../lisp/core.$(FASLEXT) endif boot_SOURCES = \ initial-env.lisp.pamphlet \ $(addsuffix .pamphlet, $(boot_sources)) pamphlets = Makefile.pamphlet $(boot_SOURCES) boot_sources = tokens.boot includer.boot scanner.boot \ pile.boot ast.boot parser.boot translator.boot boot_clisp = $(boot_sources:.boot=.clisp) boot_data = $(boot_sources:.boot=.data) boot_fn = $(boot_sources:.boot=.fn) boot_cached_clisp = $(boot_sources:.boot=.clisp) COMPILE_LISP = \ $(axiom_build_document) --tag=lisp --mode=compile --output=$@ BOOT_TO_LISP = \ $(axiom_build_document) --tag=boot --mode=translate \ --use=./prev-stage/bootsys $< subdir = src/boot/ .PHONY: all-ax all-boot all: all-ax all-boot all-ax all-boot: stamp stamp: $(axiom_build_bindir)/bootsys$(EXEEXT) @rm -f stamp $(STAMP) $@ $(axiom_build_bindir)/bootsys$(EXEEXT): stage2/bootsys$(EXEEXT) $(mkinstalldirs) $(axiom_build_bindir) $(INSTALL_PROGRAM) stage2/bootsys$(EXEEXT) $(axiom_build_bindir) .PRECIOUS: stage0/%.clisp .PRECIOUS: stage0/%.$(FASLEXT) stage0_boot_clisp = $(addprefix stage0/, $(boot_clisp)) stage0_boot_objects = $(addprefix stage0/, $(boot_objects)) stage0/stamp: stage0/bootsys$(EXEEXT) @rm -f $@ @$(STAMP) $@ stage0/bootsys$(EXEEXT): $(stage0_boot_objects) $(AXIOM_LOCAL_LISP) -- --make --main="|AxiomCore|::|topLevel|"\ --output=$@ --load-directory=stage0 \ $(boot_objects_extra) $(stage0_boot_objects) .PRECIOUS: %/.started %/.started: $(mkinstalldirs) $* $(STAMP) $@ $(stage0_boot_objects): $(AXIOM_LOCAL_LISP) stage0/%.clisp: $(srcdir)/%.boot.pamphlet stage0/.started $(axiom_build_document) --tangle=$*.clisp --output=$@ $< %/initial-env.$(FASLEXT): initial-env.lisp %/.started $(AXIOM_LOCAL_LISP) -- --compile --output=$@ $< .PRECIOUS: stage1/%.$(FASLEXT) .PRECIOUS: stage1/%.clisp stage1/stamp: stage1/bootsys$(EXEEXT) rm -f $@ $(STAMP) $@ stage1/bootsys$(EXEEXT): $(addprefix stage1/, $(boot_objects)) $(AXIOM_LOCAL_LISP) -- --make --main="|AxiomCore|::|topLevel|" \ --output=$@ --load-directory=stage1 \ $(boot_objects_extra) $(addprefix stage1/, $(boot_objects)) stage1/%.clisp: %.boot stage0/stamp stage1/.started stage0/bootsys -- --translate --output=$@ $< .PRECIOUS: stage2/%.$(FASLEXT) .PRECIOUS: stage2/%.clisp stage2/stamp: stage2/bootsys$(EXEEXT) @echo Building stage 2 $(STAMP) $@ stage2/bootsys$(EXEEXT): $(addprefix stage2/, $(boot_objects)) $(AXIOM_LOCAL_LISP) -- --make --main="|AxiomCore|::|topLevel|" \ --output=$@ --load-directory=stage2 \ $(boot_objects_extra) $(addprefix stage2/, $(boot_objects)) stage2/%.clisp: %.boot stage1/stamp stage2/.started stage1/bootsys -- --translate --output=$@ $< ## Dependency for various modules. ## FIXME: This should be automatically extracted from the ## Boot source file at packaging time. %/tokens.$(FASLEXT): %/tokens.clisp %/initial-env.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/includer.$(FASLEXT): %/includer.clisp %/tokens.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/scanner.$(FASLEXT): %/scanner.clisp %/tokens.$(FASLEXT) %/includer.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/pile.$(FASLEXT): %/pile.clisp %/scanner.$(FASLEXT) %/includer.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/ast.$(FASLEXT): %/ast.clisp %/includer.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/parser.$(FASLEXT): %/parser.clisp %/ast.$(FASLEXT) %/scanner.$(FASLEXT) \ %/includer.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< %/translator.$(FASLEXT): %/translator.clisp %/parser.$(FASLEXT) \ %/ast.$(FASLEXT) %/pile.$(FASLEXT) %/scanner.$(FASLEXT) \ %/includer.$(FASLEXT) $(AXIOM_LOCAL_LISP) -- --compile --load-directory=$* $< .PRECIOUS: %.boot %.boot: $(srcdir)/%.boot.pamphlet $(axiom_build_document) --tangle $< .PRECIOUS: %.boot %.boot: $(srcdir)/%.boot.pamphlet $(axiom_build_document) --tangle $< .PRECIOUS: %.lisp initial-env.lisp: initial-env.lisp.pamphlet $(axiom_build_document) --tangle $< mostlyclean-local: @rm -f $(axiom_build_bindir)/bootsys$(EXEEXT) @rm -rf prev-stage @rm -rf stage0 stage1 stage2 @rm -f *.data *.fn @rm -f stamp clean-local: mostlyclean-local @rm -f $(boot_sources) @rm -f *.clisp *.lisp distclean-local: clean-local