| CC = $(GCC) |
CC = $(GCC) |
| FORTHPATH = .$(PATHSEP)$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION) |
FORTHPATH = .$(PATHSEP)$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION) |
| FORTHSIZES = @FORTHSIZES@ |
FORTHSIZES = @FORTHSIZES@ |
| FORTH_ARGS = --die-on-signal -p $(FORTHPATH)$(PATHSEP)$(srcdir) |
FORTHS_ARGS = -p $(FORTHPATH)$(PATHSEP)$(srcdir) |
| |
FORTH_ARGS = --die-on-signal $(FORTHS_ARGS) |
| ENGINE = ./gforth |
ENGINE = ./gforth |
| FORTH = $(ENGINE) $(FORTH_ARGS) |
FORTH = $(ENGINE) $(FORTH_ARGS) |
| |
FORTHS = $(ENGINE) $(FORTHS_ARGS) |
| # the (existing) forth system to use for cross compiling and primitives tables |
# the (existing) forth system to use for cross compiling and primitives tables |
| # per default we use the one in this directory for a rebuild. It is also |
# per default we use the one in this directory for a rebuild. It is also |
| # possible to override this variable at the command line for an initial build (jaw) |
# possible to override this variable at the command line for an initial build (jaw) |
| BUILDFORTH = $(ENGINE) --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi) |
BUILDFORTH = $(ENGINE) --die-on-signal -m 4M -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi) |
| # the forth system plus flags we use to build |
# the forth system plus flags we use to build |
| FORTHB = $(BUILDFORTH) -m 1000000 -e 'fpath= .|~+|$(srcdir)' |
FORTHB = $(BUILDFORTH) -e 'fpath= .|~+|$(srcdir)' |
| # the Forth system for running prims2x.fs |
# the Forth system for running prims2x.fs |
| FORTHP = $(FORTHB) startup.fs |
FORTHP = $(FORTHB) |
| ENGINE_FAST = $(ENGINE)-fast |
ENGINE_FAST = $(ENGINE)-fast |
| FORTH_FAST = $(ENGINE_FAST) $(FORTH_ARGS) |
FORTH_FAST = $(ENGINE_FAST) $(FORTH_ARGS) |
| FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -m 1000000 -i $(kernel_fi) |
FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi) |
| FORTHK = $(ENGINE) $(FORTHKFLAGS) |
FORTHK = $(ENGINE) $(FORTHKFLAGS) |
| #FORTHP = $(ENGINE) --die-on-signal -i ./$(kernel_fi) |
#FORTHP = $(ENGINE) --die-on-signal -i ./$(kernel_fi) |
| #the "-2 image-included-files +!" undoes the change to image-included-files |
#the "-2 image-included-files +!" undoes the change to image-included-files |
| intcomp.fs \ |
intcomp.fs \ |
| locals.fs \ |
locals.fs \ |
| look.fs \ |
look.fs \ |
| |
quotes.fs \ |
| search.fs \ |
search.fs \ |
| see.fs \ |
see.fs \ |
| see-ext.fs \ |
see-ext.fs \ |
| tt.fs sokoban.fs \ |
tt.fs sokoban.fs \ |
| unbuffer.fs wordsets.fs \ |
unbuffer.fs wordsets.fs \ |
| test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs \ |
test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs \ |
| test/string.fs test/other.fs test/checkans.fs \ |
test/string.fs test/other.fs test/signals.fs test/checkans.fs \ |
| bubble.fs siev.fs matrix.fs fib.fs \ |
bubble.fs siev.fs matrix.fs fib.fs \ |
| oof.fs oofsampl.fs objects.fs objexamp.fs mini-oof.fs moof-exm.fs \ |
oof.fs oofsampl.fs objects.fs objexamp.fs mini-oof.fs moof-exm.fs \ |
| moofglos.fs fixpath.fs \ |
moofglos.fs fixpath.fs \ |
| |
|
| GFORTH_TEXI = doc/gforth.texi doc/version.texi |
GFORTH_TEXI = doc/gforth.texi doc/version.texi |
| |
|
| |
VMGEN_TEXI = doc/vmgen.texi doc/version.texi doc/fdl.texi |
| |
|
| ALLSUBDIRS = engine |
ALLSUBDIRS = engine |
| |
|
| ARCHS = \ |
ARCHS = \ |
| configure.in configure config.sub config.guess elisp-comp missing \ |
configure.in configure config.sub config.guess elisp-comp missing \ |
| acconfig.h acinclude.m4 engine/config.h.in stamp-h.in \ |
acconfig.h acinclude.m4 engine/config.h.in stamp-h.in \ |
| iss.sh install-sh INSTALL INSTALL.BINDIST NEWS README ToDo BUGS model \ |
iss.sh install-sh INSTALL INSTALL.BINDIST NEWS README ToDo BUGS model \ |
| COPYING AUTHORS ChangeLog Benchres aclocal.m4 \ |
COPYING COPYING.DOC AUTHORS ChangeLog Benchres aclocal.m4 \ |
| doc/gforth.ds doc/texinfo.tex doc/gforth.1 doc/version.texi.in \ |
doc/gforth.ds doc/texinfo.tex doc/gforth.1 doc/version.texi.in \ |
| |
doc/vmgen.texi doc/fdl.texi \ |
| gforth.el \ |
gforth.el \ |
| prim peeprules.vmg engine/engine.c engine/main.c \ |
prim peeprules.vmg engine/engine.c engine/main.c \ |
| engine/io.c engine/memcmpc.c engine/signals.c $(ARCHS) \ |
engine/io.c engine/memcmpc.c engine/signals.c $(ARCHS) \ |
| |
|
| RCS_FILES = ToDo model high-level |
RCS_FILES = ToDo model high-level |
| |
|
| GEN = gforth$(EXE) gforth-ditc$(EXE) gforth-fast$(EXE) gforth-prof$(EXE) kernel/version.fs |
GEN = gforth$(EXE) gforth-ditc$(EXE) gforth-fast$(EXE) gforth-itc$(EXE) gforth-prof$(EXE) kernel/version.fs |
| |
|
| # things that need a working forth system to be generated |
# things that need a working forth system to be generated |
| FORTH_GEN0 = prim.b engine/prim.i engine/prim_lab.i engine/peephole.i engine/profile.i kernel/aliases.fs kernel/prim.fs |
FORTH_GEN_ENGINE=engine/prim.i engine/prim_lab.i engine/prim_names.i engine/prim_superend.i engine/peephole.i engine/profile.i |
| |
FORTH_GEN0 = prim.b $(FORTH_GEN_ENGINE) kernel/aliases.fs kernel/prim.fs |
| FORTH_GEN = $(FORTH_GEN0) @KERNEL@ gforth.fi |
FORTH_GEN = $(FORTH_GEN0) @KERNEL@ gforth.fi |
| # this is used for antidependences, |
# this is used for antidependences, |
| FORTH_GEN1 = $(FORTH_GEN0) @kernel_fi@ |
FORTH_GEN1 = $(FORTH_GEN0) @kernel_fi@ |
| kernl32b.fi- kernl32l.fi- \ |
kernl32b.fi- kernl32l.fi- \ |
| kernl64b.fi- kernl64l.fi- |
kernl64b.fi- kernl64l.fi- |
| |
|
| GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) doc/gforth.texi doc/gforth.dvi doc/gforth.ps Makefile Makedist engine/Makefile configure |
GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) \ |
| |
doc/gforth.texi doc/gforth.dvi doc/gforth.ps \ |
| |
doc/vmgen.dvi doc/vmgen.ps \ |
| |
Makefile Makedist engine/Makefile configure |
| |
|
| #standards.info recommends this: |
#standards.info recommends this: |
| .SUFFIXES: |
.SUFFIXES: |
| $(MAKE) gforth$(EXE) |
$(MAKE) gforth$(EXE) |
| echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs |
echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs |
| |
|
| more: engine $(FORTH_GEN) $(GEN) |
more: engines $(FORTH_GEN) $(GEN) |
| |
|
| #from the gcc Makefile: |
#from the gcc Makefile: |
| #"Deletion of files made during compilation. |
#"Deletion of files made during compilation. |
| |
|
| clean: mostlyclean |
clean: mostlyclean |
| -$(RM) -rf $(GEN) engine/gforth$(EXE) \ |
-$(RM) -rf $(GEN) engine/gforth$(EXE) \ |
| engine/gforth-fast$(EXE) engine/gforth-ditc$(EXE) engine/gforth-prof$(EXE) \ |
engine/gforth-fast$(EXE) engine/gforth-itc$(EXE) \ |
| |
engine/gforth-ditc$(EXE) engine/gforth-prof$(EXE) \ |
| *.o engine/*.o arch/*/*.o version |
*.o engine/*.o arch/*/*.o version |
| |
|
| distclean: clean |
distclean: clean |
| check test: gforth$(EXE) gforth.fi |
check test: gforth$(EXE) gforth.fi |
| $(FORTH) test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs test/string.fs -e bye | diff -c - $(srcdir)/test/coretest.out |
$(FORTH) test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs test/string.fs -e bye | diff -c - $(srcdir)/test/coretest.out |
| $(FORTH) test/other.fs -e bye |
$(FORTH) test/other.fs -e bye |
| |
$(FORTHS) test/signals.fs -e bye |
| $(FORTH) code.fs test/checkans.fs -e bye | diff -c - $(srcdir)/test/checkans.out |
$(FORTH) code.fs test/checkans.fs -e bye | diff -c - $(srcdir)/test/checkans.out |
| $(FORTH) -m 100000 prims2x.fs -e \ |
$(FORTH) prims2x.fs -e \ |
| "c-flag on s\" $(srcdir)/prim.b\" ' output-c ' output-c-combined process-file bye"| \ |
"c-flag on s\" prim.i\" out-filename 2! s\" $(srcdir)/prim.b\" ' output-c ' output-c-combined process-file bye"| \ |
| diff -c - $(srcdir)/engine/prim.i |
diff -c - $(srcdir)/engine/prim.i |
| |
|
| bench: gforth-fast$(EXE) gforth.fi |
bench: gforth-fast$(EXE) gforth.fi |
| @echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)' |
@echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)' |
| time $(FORTH_FAST) siev.fs -e "main bye" |
time $(FORTH_FAST) siev.fs -e "main bye" |
| time $(FORTH_FAST) bubble.fs -e "main bye" |
time $(FORTH_FAST) bubble.fs -e "main bye" |
| time $(FORTH_FAST) --dictionary-size 1M matrix.fs -e "main bye" |
time $(FORTH_FAST) matrix.fs -e "main bye" |
| time $(FORTH_FAST) fib.fs -e "main bye" |
time $(FORTH_FAST) fib.fs -e "main bye" |
| |
|
| # ------------- Make forth images |
# ------------- Make forth images |
| # -$(CP) $@ $@~ |
# -$(CP) $@ $@~ |
| # -$(CP) $< $@ |
# -$(CP) $< $@ |
| |
|
| gforth.fi: $(kernel_fi) gforthmi gforth$(EXE) gforth-ditc$(EXE) $(GFORTH_FI_SRC) |
gforth.fi: $(kernel_fi) gforthmi gforth$(EXE) gforth-ditc$(EXE) $(GFORTH_FI_SRC) comp-i.fs |
| GFORTHD="./gforth-ditc -p .$(PATHSEP)$(srcdir)" GFORTH="./gforth-ditc --die-on-signal -p .$(PATHSEP)$(srcdir) -i $(kernel_fi) $(STARTUP)" ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) $(STARTUP) |
GFORTHD="./gforth-ditc -p .$(PATHSEP)$(srcdir)" GFORTH="./gforth-ditc --die-on-signal -p .$(PATHSEP)$(srcdir) -i $(kernel_fi) $(STARTUP)" ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) $(STARTUP) |
| |
|
| # ------------- Make c-engine |
# ------------- Make c-engine |
| m4 -s $(srcdir)/prim >$@ |
m4 -s $(srcdir)/prim >$@ |
| |
|
| engine/prim.i: prim.b prims2x.fs |
engine/prim.i: prim.b prims2x.fs |
| $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-c ' output-c-combined process-file bye" >$@- |
$(FORTHP) prims2x.fs -e "c-flag on s\" prim.i\" out-filename 2! s\" prim.b\" ' output-c ' output-c-combined process-file bye" >$@- |
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| |
engine/prim_names.i: prim.b prims2x.fs |
| |
$(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-forthname dup process-file bye" >$@- |
| |
$(CP) $@- $@ |
| |
$(RM) $@- |
| |
|
| |
engine/prim_superend.i: prim.b prims2x.fs |
| |
$(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-superend dup process-file bye" >$@- |
| |
$(CP) $@- $@ |
| |
$(RM) $@- |
| |
|
| engine/peephole.i: prim.b prims2x.fs |
engine/peephole.i: prim.b prims2x.fs |
| $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' noop ' output-peephole process-file bye" >$@- |
$(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' noop ' output-peephole process-file bye" >$@- |
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| engine/profile.i: prim.b prims2x.fs |
engine/profile.i: prim.b prims2x.fs |
| $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-profile ' output-profile process-file bye" >$@- |
$(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-profile ' output-profile-combined process-file bye" >$@- |
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| $(CP) engine/$@ $@ |
$(CP) engine/$@ $@ |
| @GFORTHFAST_EXE@ |
@GFORTHFAST_EXE@ |
| |
|
| |
gforth-itc$(EXE): engines |
| |
$(CP) engine/$@ $@ |
| |
@GFORTHITC_EXE@ |
| |
|
| gforth-ditc$(EXE): engines |
gforth-ditc$(EXE): engines |
| $(CP) engine/$@ $@ |
$(CP) engine/$@ $@ |
| @GFORTHDITC_EXE@ |
@GFORTHDITC_EXE@ |
| gforth-prof$(EXE): engines |
gforth-prof$(EXE): engines |
| $(CP) engine/$@ $@ |
$(CP) engine/$@ $@ |
| |
|
| engines: FORCE engine/Makefile engine/prim.i engine/prim_lab.i engine/peephole.i engine/profile.i |
gforths: gforth$(EXE) gforth-fast$(EXE) gforth-itc$(EXE) gforth-ditc$(EXE) gforth-prof$(EXE) |
| cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-ditc$(EXE) gforth-prof$(EXE) |
|
| |
engines: FORCE $(FORTH_GEN_ENGINE) engine/Makefile |
| |
cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-itc$(EXE) gforth-ditc$(EXE) gforth-prof$(EXE) |
| |
|
| # ------------- additional C primitives |
# ------------- additional C primitives |
| |
|
| TAGS: gforth.TAGS |
TAGS: gforth.TAGS |
| $(CP) gforth.TAGS $@ |
$(CP) gforth.TAGS $@ |
| |
|
| |
tags: gforth.tags |
| |
$(CP) gforth.tags $@ |
| |
|
| install.TAGS: gforth.TAGS |
install.TAGS: gforth.TAGS |
| sed 's:^\$(srcdir)/:$(datadir)/gforth/$(VERSION)/:' gforth.TAGS >install.TAGS |
sed 's:^\$(srcdir)/:$(datadir)/gforth/$(VERSION)/:' gforth.TAGS >install.TAGS |
| |
|
| cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS |
cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS |
| rm TAGS |
rm TAGS |
| |
|
| |
gforth.tags: @kernel_fi@ gforth$(EXE) $(GFORTH_FI_SRC) prim.tags kernel.tags |
| |
$(FORTHK) tags.fs except.fs startup.fs -e bye |
| |
cat tags prim.tags kernel.tags >gforth.tags |
| |
rm tags |
| |
|
| prim.TAGS: prim.b prims2x.fs |
prim.TAGS: prim.b prims2x.fs |
| #echo '2c\' >prim.TAGS.sed |
#echo '2c\' >prim.TAGS.sed |
| #echo $(srcdir)/prim >>prim.TAGS.sed |
#echo $(srcdir)/prim >>prim.TAGS.sed |
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| |
prim.tags: prim.b prims2x.fs |
| |
#echo '2c\' >prim.TAGS.sed |
| |
#echo $(srcdir)/prim >>prim.TAGS.sed |
| |
#$(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye" | sed -f prim.TAGS.sed >$@- |
| |
$(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-vi-tag dup process-file bye" >$@- |
| |
$(CP) $@- $@ |
| |
$(RM) $@- |
| |
|
| kernel.TAGS: |
kernel.TAGS: |
| rm kernl16l.fi-; $(MAKE) @kernel_fi@ |
rm kernl16l.fi-; $(MAKE) @kernel_fi@ |
| |
|
| |
kernel.tags: |
| |
rm kernl16l.fi-; $(MAKE) @kernel_fi@ |
| |
|
| doc/doc.fd: doc/makedoc.fs $(GFORTH_FI_SRC) code.fs objects.fs oof.fs moofglos.fs |
doc/doc.fd: doc/makedoc.fs $(GFORTH_FI_SRC) code.fs objects.fs oof.fs moofglos.fs |
| $(FORTHK) -e "s\" doc/doc.fd\"" doc/makedoc.fs except.fs startup.fs code.fs objects.fs oof.fs moofglos.fs -e bye |
$(FORTHK) -e "s\" doc/doc.fd\"" doc/makedoc.fs except.fs startup.fs code.fs objects.fs oof.fs moofglos.fs -e bye |
| |
|
| $(RM) $@- |
$(RM) $@- |
| |
|
| checkdoc: doc/gforth.ds prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi |
checkdoc: doc/gforth.ds prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi |
| $(FORTH) -m 1M ds2texi.fs prims2x.fs -e "s\" $(srcdir)/prim.b\" ' register-doc ' noop process-file" doc/crossdoc.fd doc/doc.fd answords.fs -e bye |
$(FORTH) ds2texi.fs prims2x.fs -e "s\" $(srcdir)/prim.b\" ' register-doc ' noop process-file" doc/crossdoc.fd doc/doc.fd answords.fs -e bye |
| -grep unknown doc/gforth.texi |
-grep unknown doc/gforth.texi |
| |
|
| dvi: doc/gforth.dvi |
dvi: doc/gforth.dvi doc/vmgen.dvi |
| |
|
| doc/gforth.dvi doc/gforth.fns: $(GFORTH_TEXI) |
doc/gforth.dvi doc/gforth.fns: $(GFORTH_TEXI) |
| cd doc; $(TEXI2DVI) gforth.texi |
cd doc; $(TEXI2DVI) gforth.texi |
| |
|
| |
doc/vmgen.dvi: $(VMGEN_TEXI) |
| |
cd doc; $(TEXI2DVI) vmgen.texi |
| |
|
| doc/gforth.ps: doc/gforth.dvi |
doc/gforth.ps: doc/gforth.dvi |
| $(DVI2PS) doc/gforth.dvi -o $@ |
$(DVI2PS) doc/gforth.dvi -o $@ |
| |
|
| info: doc/gforth.info |
info: doc/gforth.info doc/vmgen.info |
| |
|
| |
doc/gforth.info: $(GFORTH_TEXI) |
| |
cd doc; $(MAKEINFO) gforth.texi |
| |
|
| doc/gforth.info doc/gforth.info-*: $(GFORTH_TEXI) |
doc/vmgen.info: $(VMGEN_TEXI) |
| -cd doc; $(MAKEINFO) gforth.texi |
cd doc; $(MAKEINFO) vmgen.texi |
| |
|
| ### need makeinfo 4.0 to generate html. Otherwise, use texi2html.. |
|
| html: $(GFORTH_TEXI) |
### need makeinfo 4.2 to generate html with these rules |
| -$(RMTREE) html |
doc/gforth: $(GFORTH_TEXI) |
| -mkdir html |
cd doc; $(MAKEINFO) --html gforth.texi |
| cd html; $(MAKEINFO) --html -I ../doc ../doc/gforth.texi |
|
| ### cd html; $(TEXI2HTML) -menu -split_node ../doc/gforth.texi |
doc/vmgen: $(VMGEN_TEXI) |
| |
cd doc; $(MAKEINFO) --html vmgen.texi |
| |
|
| doc/gforth.txt: $(GFORTH_TEXI) |
doc/gforth.txt: $(GFORTH_TEXI) |
| -cd doc; $(MAKEINFO) --no-headers --no-split gforth.texi >gforth.txt |
-cd doc; $(MAKEINFO) --no-headers --no-split gforth.texi >gforth.txt |
| |
|
| |
doc/vmgen.txt: $(VMGEN_TEXI) |
| |
-cd doc; $(MAKEINFO) --no-headers --no-split vmgen.texi >vmgen.txt |
| |
|
| doc: info html doc/gforth.ps doc/gforth.txt TAGS |
doc: info html doc/gforth.ps doc/gforth.txt TAGS |
| |
|
| # For an explanation of the following Makefile rules, see node |
# For an explanation of the following Makefile rules, see node |