| #Makefile for Gforth |
#Makefile for Gforth |
| |
|
| #Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. |
#Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. |
| |
|
| #This file is part of Gforth. |
#This file is part of Gforth. |
| |
|
| |
|
| #You should have received a copy of the GNU General Public License |
#You should have received a copy of the GNU General Public License |
| #along with this program; if not, write to the Free Software |
#along with this program; if not, write to the Free Software |
| #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
| |
|
| # To change the values of `make' variables: instead of editing Makefiles, |
# To change the values of `make' variables: instead of editing Makefiles, |
| # (1) if the variable is set in `config.status', edit `config.status' |
# (1) if the variable is set in `config.status', edit `config.status' |
| # ------------- gforth version |
# ------------- gforth version |
| |
|
| VERSION = @VERSION@ |
VERSION = @VERSION@ |
| DOSVERSION=`echo $(VERSION)|sed 's/\.//g'` |
DOSVERSION=`echo $(VERSION)|sed 's/\.//g'|sed 's/-.*//g'` |
| |
|
| # ------------- System specific variables |
# ------------- System specific variables |
| |
|
| LN_S = @LN_S@ |
LN_S = @LN_S@ |
| GCC = @CC@ |
GCC = @CC@ |
| 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) |
FORTH_ARGS = --die-on-signal -p $(FORTHPATH)$(PATHSEP)$(srcdir) |
| ENGINE = ./gforth |
ENGINE = ./gforth |
| FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -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 |
| |
# in exboot.fs |
| |
STARTUP = -e 3 exboot.fs startup.fs @asm_fs@ @disasm_fs@ |
| STRIP = strip |
STRIP = strip |
| TEXI2DVI = texi2dvi |
TEXI2DVI = texi2dvi -e |
| DVI2PS = dvips -Z |
DVI2PS = dvips -Z |
| #you can get texi2html from http://wwwcn.cern.ch/dci/texi2html/ |
#you can get texi2html from http://wwwcn.cern.ch/dci/texi2html/ |
| TEXI2HTML = texi2html |
|
| MAKEINFO = makeinfo |
MAKEINFO = makeinfo |
| |
TEXI2HTML = texi2html |
| |
|
| # ------------- Compiler Flags |
# ------------- Compiler Flags |
| |
|
| arch/386/CVS arch/hppa/CVS arch/sparc/CVS arch/power/CVS \ |
arch/386/CVS arch/hppa/CVS arch/sparc/CVS arch/power/CVS \ |
| arch/alpha/CVS arch/4stack/CVS arch/misc/CVS arch/6502/CVS \ |
arch/alpha/CVS arch/4stack/CVS arch/misc/CVS arch/6502/CVS \ |
| arch/8086/CVS arch/avr/CVS arch/c165/CVS arch/h8/CVS \ |
arch/8086/CVS arch/avr/CVS arch/c165/CVS arch/h8/CVS \ |
| arch/shboom/CVS \ |
arch/shboom/CVS arch/ia64/CVS |
| |
|
| INCLUDES = engine/forth.h engine/threaded.h engine/io.h |
INCLUDES = engine/forth.h engine/threaded.h engine/io.h |
| |
|
| kernel/aliases.fs \ |
kernel/aliases.fs \ |
| kernel/args.fs \ |
kernel/args.fs \ |
| chains.fs \ |
chains.fs \ |
| |
kernel/cbr.fs \ |
| |
kernel/cloop.fs \ |
| kernel/cond.fs \ |
kernel/cond.fs \ |
| kernel/cond-old.fs \ |
kernel/cond-old.fs \ |
| cross.fs \ |
cross.fs \ |
| |
|
| GFORTH_FI_SRC = \ |
GFORTH_FI_SRC = \ |
| assert.fs \ |
assert.fs \ |
| backtrace.fs \ |
backtrac.fs \ |
| blocked.fb \ |
blocked.fb \ |
| blocks.fs \ |
blocks.fs \ |
| bufio.fs \ |
bufio.fs \ |
| savesys.fs \ |
savesys.fs \ |
| environ.fs \ |
environ.fs \ |
| errors.fs \ |
errors.fs \ |
| exceptions.fs \ |
exboot.fs \ |
| |
except.fs \ |
| extend.fs \ |
extend.fs \ |
| float.fs \ |
float.fs \ |
| glocals.fs \ |
glocals.fs \ |
| vt100.fs \ |
vt100.fs \ |
| vt100key.fs \ |
vt100key.fs \ |
| wordinfo.fs \ |
wordinfo.fs \ |
| lib.fs \ |
arch/386/asm.fs arch/386/disasm.fs \ |
| sieve.fs \ |
arch/alpha/asm.fs arch/alpha/disasm.fs \ |
| add.fs |
arch/mips/asm.fs arch/mips/disasm.fs arch/mips/insts.fs |
| |
|
| FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_SRC) $(EC_SRC) \ |
FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_SRC) $(EC_SRC) \ |
| ans-report.fs ansi.fs answords.fs \ |
ans-report.fs ansi.fs answords.fs \ |
| code.fs colorize.fs comp-i.fs \ |
code.fs colorize.fs comp-i.fs \ |
| doskey.fs ds2texi.fs \ |
doskey.fs ds2texi.fs \ |
| envos.fs envos.dos envos.os2 etags.fs filedump.fs fi2c.fs \ |
envos.fs envos.dos envos.os2 etags.fs filedump.fs fi2c.fs \ |
| glosgen.fs gray.fs \ |
glosgen.fs gray.fs httpd.fs \ |
| make-app.fs doc/makedoc.fs \ |
make-app.fs doc/makedoc.fs \ |
| more.fs other.fs prims2x.fs random.fs \ |
more.fs other.fs prims2x.fs random.fs \ |
| table.fs \ |
table.fs string.fs \ |
| tt.fs sokoban.fs \ |
tt.fs sokoban.fs \ |
| unbuffered.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/other.fs test/checkans.fs \ |
test/other.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 |
moofglos.fs \ |
| |
add.fs lib.fs sieve.fs |
| |
|
| COMPAT = compat/README \ |
COMPAT = compat/README \ |
| compat/anslocal.fs \ |
compat/anslocal.fs \ |
| arch/sparc/machine.h \ |
arch/sparc/machine.h \ |
| arch/power/machine.h \ |
arch/power/machine.h \ |
| arch/power/_sync_cache_range.c \ |
arch/power/_sync_cache_range.c \ |
| |
arch/power/elf32ppc.x \ |
| arch/alpha/machine.h \ |
arch/alpha/machine.h \ |
| |
arch/ia64/machine.h \ |
| arch/4stack/README \ |
arch/4stack/README \ |
| arch/4stack/asm.fs \ |
arch/4stack/asm.fs \ |
| arch/4stack/mach.fs \ |
arch/4stack/mach.fs \ |
| arch/shboom/sh.p \ |
arch/shboom/sh.p \ |
| arch/shboom/doers.fs |
arch/shboom/doers.fs |
| |
|
| |
# arch/sharc/mach.fs \ |
| |
# arch/sharc/machine.h \ |
| |
# arch/sharc/compile.sharc \ |
| |
# arch/sharc/unistd.h \ |
| |
# arch/sharc/systypes.h \ |
| |
# arch/sharc/types.h \ |
| |
# arch/sharc/g21k-3.3.4-bp1.diff |
| |
|
| SOURCES = $(CVSDIRS) compat Makefile.in Makedist.in engine/Makefile.in gforthmi.in \ |
SOURCES = $(CVSDIRS) compat Makefile.in Makedist.in engine/Makefile.in gforthmi.in \ |
| 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 \ |
| engine/ansidecl.h engine/memmove.c \ |
engine/ansidecl.h engine/memmove.c \ |
| engine/pow10.c engine/atanh.c engine/cleanalign.c \ |
engine/pow10.c engine/atanh.c engine/cleanalign.c \ |
| engine/strerror.c engine/strsignal.c engine/dblsub.c \ |
engine/strerror.c engine/strsignal.c engine/dblsub.c \ |
| |
engine/fnmatch.h engine/fnmatch.c \ |
| INSTALL.DOS makefile.dos engine/makefile.dos mkdosmf.sed config.bat \ |
INSTALL.DOS makefile.dos engine/makefile.dos mkdosmf.sed config.bat \ |
| dosconf.h gforthmi.bat mkinstalldirs siteinit.fs \ |
dosconf.h gforthmi.bat mkinstalldirs siteinit.fs \ |
| versions.bsh \ |
versions.bsh \ |
| doc/version.texi gforthmi |
doc/version.texi gforthmi |
| |
|
| #realclean is useless, but dangerous, so it's commented out |
#realclean is useless, but dangerous, so it's commented out |
| #realclean: distclean |
realclean: distclean |
| # -$(RM) $(GEN_PRECIOUS) |
-$(RM) $(GEN_PRECIOUS) |
| |
|
| #mostlyclean, but also remove some of the stuff that is distributed |
#mostlyclean, but also remove some of the stuff that is distributed |
| virtualclean: mostlyclean |
virtualclean: mostlyclean |
| |
|
| |
|
| #strip gforth, because the debugging stuff is hardly useful once |
#strip gforth, because the debugging stuff is hardly useful once |
| # gforth manages to execute more than a few primitives |
# gforth manages to execute more than a few primitives. |
| |
|
| #install does not depend on gforth.info, because that would require |
#install does not depend on gforth.info, because that would require |
| #supplying a lot of files that can be easily generated (only info is |
#supplying a lot of files that can be easily generated (only info is |
| #hard to generate) |
#hard to generate). |
| |
#we rebuild gforth.fi, because it contains some path names. |
| |
#we delete $build/gforth.fi and $build/install.TAGS after installation because of ownership. |
| install: gforth$(EXE) $(FORTH_SRC) $(kernel_fi) gforth.fi gforthmi doc/gforth.1 prim install.TAGS installdirs |
install: gforth$(EXE) $(FORTH_SRC) $(kernel_fi) gforth.fi gforthmi doc/gforth.1 prim install.TAGS installdirs |
| touch $(siteforthdir)/siteinit.fs |
touch $(siteforthdir)/siteinit.fs |
| -$(RM) $(bindir)/gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforthmi |
-$(RM) $(bindir)/gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforthmi |
| $(INSTALL_DATA) $(srcdir)/$$i $(datadir)/gforth/$(VERSION)/$$i; \ |
$(INSTALL_DATA) $(srcdir)/$$i $(datadir)/gforth/$(VERSION)/$$i; \ |
| done |
done |
| $(INSTALL_DATA) $(kernel_fi) $(datadir)/gforth/$(VERSION) |
$(INSTALL_DATA) $(kernel_fi) $(datadir)/gforth/$(VERSION) |
| $(RM) gforth.fi |
|
| GFORTHD="./gforth-ditc -p$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(datadir)/gforth/$(VERSION) -i $(kernel_fi)" GFORTH="./gforth-ditc --die-on-signal -i $(kernel_fi) startup.fs" ./gforthmi gforth.fi $(FORTHSIZES) startup.fs #gforth.fi contains some path names |
|
| $(INSTALL_DATA) gforth.fi $(libdir)/gforth/$(VERSION) |
|
| $(INSTALL_DATA) install.TAGS $(datadir)/gforth/$(VERSION)/TAGS |
|
| # after install, remove these because they are owned by ROOT |
|
| $(RM) gforth.fi install.TAGS |
|
| @if test -d "$(emacssitelispdir)"; then \ |
@if test -d "$(emacssitelispdir)"; then \ |
| $(INSTALL_DATA) $(srcdir)/gforth.el $(emacssitelispdir); \ |
$(INSTALL_DATA) $(srcdir)/gforth.el $(emacssitelispdir); \ |
| else \ |
else \ |
| echo ">>>>>Please install $(srcdir)/gforth.el in your .../emacs/site-lisp directory"; \ |
echo ">>>>>Please install $(srcdir)/gforth.el in your .../emacs/site-lisp directory"; \ |
| fi |
fi |
| |
-$(RM) gforth.fi |
| |
GFORTHD="./gforth-ditc -p$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(datadir)/gforth/$(VERSION) -i $(kernel_fi)" GFORTH="./gforth-ditc --die-on-signal -i $(kernel_fi) $(STARTUP)" ./gforthmi gforth.fi $(FORTHSIZES) $(STARTUP) |
| |
$(INSTALL_DATA) gforth.fi $(libdir)/gforth/$(VERSION) |
| |
$(INSTALL_DATA) install.TAGS $(datadir)/gforth/$(VERSION)/TAGS |
| |
$(RM) gforth.fi install.TAGS |
| @echo ">>>>> Please make an entry for Gforth in your info dir file; e.g.:"; \ |
@echo ">>>>> Please make an entry for Gforth in your info dir file; e.g.:"; \ |
| echo "* Gforth: (gforth). A fast interpreter for the Forth language." |
echo "* Gforth: (gforth). A fast interpreter for the Forth language." |
| |
|
| for i in $(CVSDIRS); do \ |
for i in $(CVSDIRS); do \ |
| $(srcdir)/mkinstalldirs $(datadir)/gforth/$(VERSION)/`dirname $$i`; \ |
$(srcdir)/mkinstalldirs $(datadir)/gforth/$(VERSION)/`dirname $$i`; \ |
| done |
done |
| $(RM) -rf $(datadir)/gforth/$(VERSION)/arch $(datadir)/gforth/$(VERSION)/engine |
$(RM) -rf $(datadir)/gforth/$(VERSION)/engine |
| |
|
| #deinstall all files specific to this version of gforth |
#deinstall all files specific to this version of gforth |
| #to uninstall version foo, type `make uninstall VERSION=foo' |
#to uninstall version foo, type `make uninstall VERSION=foo' |
| else $(CP) $@- $@; \ |
else $(CP) $@- $@; \ |
| fi |
fi |
| |
|
| arch/%/mach.fs: arch/%/prim.fs arch/%/asm.fs |
#SunOS make does not like that |
| |
#arch/%/mach.fs: arch/%/prim.fs arch/%/asm.fs |
| |
|
| kernl16b.fi: $(KERNLS) |
kernl16b.fi: $(KERNLS) |
| -$(CP) kernl16b.fi kernl16b.fi~ |
-$(CP) kernl16b.fi kernl16b.fi~ |
| # -$(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) |
| GFORTHD="./gforth-ditc -p .$(PATHSEP)$(srcdir)" GFORTH="./gforth-ditc --die-on-signal -p .$(PATHSEP)$(srcdir) -i $(kernel_fi) startup.fs" ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) startup.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) |
| |
|
| # ------------- Make c-engine |
# ------------- Make c-engine |
| |
|
| $(CP) engine/$@ $@ |
$(CP) engine/$@ $@ |
| @GFORTHDITC_EXE@ |
@GFORTHDITC_EXE@ |
| |
|
| engines: FORCE engine/Makefile |
engines: FORCE engine/Makefile engine/prim.i engine/prim_lab.i |
| cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-ditc$(EXE) |
cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-ditc$(EXE) |
| |
|
| # ------------- additional C primitives |
# ------------- additional C primitives |
| 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 |
| |
|
| gforth.TAGS: @kernel_fi@ gforth $(GFORTH_FI_SRC) prim.TAGS |
gforth.TAGS: @kernel_fi@ gforth$(EXE) $(GFORTH_FI_SRC) prim.TAGS kernel.TAGS |
| $(FORTHK) etags.fs startup.fs -e bye |
$(FORTHK) etags.fs except.fs startup.fs -e bye |
| cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS |
cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS |
| rm TAGS |
rm TAGS |
| |
|
| prim.TAGS: prim.b prims2x.fs |
prim.TAGS: prim.b prims2x.fs |
| $(FORTHK) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag process-file bye" >$@- |
echo '2c\' >prim.TAGS.sed |
| |
echo $(srcdir)/prim >>prim.TAGS.sed |
| |
$(FORTHK) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag process-file bye" | sed -f prim.TAGS.sed >$@- |
| $(CP) $@- $@ |
$(CP) $@- $@ |
| $(RM) $@- |
$(RM) $@- |
| |
|
| |
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 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 |
| |
|
| doc/crossdoc.fd: $(KERN_SRC) kernel/version.fs $(FORTH_GEN0) |
doc/crossdoc.fd: $(KERN_SRC) kernel/version.fs $(FORTH_GEN0) |
| $(FORTHK) -e 's" mach32l.fs"' kernel/main.fs -e bye |
$(FORTHK) -e 's" mach32l.fs"' kernel/main.fs -e bye |
| doc/gforth.info doc/gforth.info-*: $(GFORTH_TEXI) |
doc/gforth.info doc/gforth.info-*: $(GFORTH_TEXI) |
| -cd doc; $(MAKEINFO) gforth.texi |
-cd doc; $(MAKEINFO) gforth.texi |
| |
|
| |
### need makeinfo 4.0 to generate html. Otherwise, use texi2html.. |
| html: $(GFORTH_TEXI) |
html: $(GFORTH_TEXI) |
| -$(RMTREE) html |
-$(RMTREE) html |
| -mkdir html |
-mkdir html |
| ### need makeinfo 4.0 to generate html. Otherwise, use texi2html.. |
cd html; $(MAKEINFO) --html -I ../doc ../doc/gforth.texi |
| ### cd html; $(MAKEINFO) --html -I ../doc ../doc/gforth.texi |
### cd html; $(TEXI2HTML) -menu -split_node ../doc/gforth.texi |
| cd html; $(TEXI2HTML) -menu -split_node ../doc/gforth.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: info doc/gforth.ps html 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 |
| # `Automatic Remaking' in GNU Autoconf documentation. |
# `Automatic Remaking' in GNU Autoconf documentation. |