File:
[gforth] /
gforth /
Makefile.in
Revision
1.216:
download - view:
text,
annotated -
select for diffs
Sun Feb 10 14:02:24 2002 UTC (22 years, 2 months ago) by
anton
Branches:
MAIN
CVS tags:
HEAD
lit@ and lit+ are now defined as superinstructions
compile lit @ and lit + instead of lit@ and lit+
extended prims2x to support superinstructions with non-C-names
(syntax: forth-name /c-name = ...)
support profiling of interpreters with superinstructions
(with simple instructions in the output).
profile output with prefixes only (enable by editing profile.c).
optional reporting of static superinstruction lengths (compared to
dynamic superinstructions); enable by compiling with -DPRINT_SUPER_LENGTHS
1: #Makefile for Gforth
2:
3: #Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.
4:
5: #This file is part of Gforth.
6:
7: #Gforth is free software; you can redistribute it and/or
8: #modify it under the terms of the GNU General Public License
9: #as published by the Free Software Foundation; either version 2
10: #of the License, or (at your option) any later version.
11:
12: #This program is distributed in the hope that it will be useful,
13: #but WITHOUT ANY WARRANTY; without even the implied warranty of
14: #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the
15: #GNU General Public License for more details.
16:
17: #You should have received a copy of the GNU General Public License
18: #along with this program; if not, write to the Free Software
19: #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
20:
21: # To change the values of `make' variables: instead of editing Makefiles,
22: # (1) if the variable is set in `config.status', edit `config.status'
23: # (which will cause the Makefiles to be regenerated when you run `make');
24: # (2) otherwise, pass the desired values on the `make' command line.
25:
26: # Warning:
27: # For some stupid reason setting SHELL to bash does not work properly with
28: # DOS. If you want to use shell-specific things that must run with DOS make
29: # an external batch file and call it with bash (see versions.bsh).
30:
31: # ------------- gforth version
32:
33: VERSION = @VERSION@
34: DOSVERSION=`echo $(VERSION)|sed 's/\.//g'|sed 's/-.*//g'`
35:
36: # ------------- System specific variables
37:
38: machine=@machine@
39: kernel_fi=@kernel_fi@
40: EXE=@EXE@
41:
42: # this is the type of machine
43: # used to extend the include path with ./arch/$machine
44: # so we can include a machine specific
45: # machine.h file
46:
47: PATHSEP = @PATHSEP@
48:
49: osclass = @OSCLASS@
50:
51: # ------------- Utility programs
52:
53: SHELL = /bin/sh
54: RM = rm
55: RMTREE = rm -rf
56: CP = cp -p
57: MV = mv
58: TAR = tar cf -
59: INSTALL = @INSTALL@
60: INSTALL_PROGRAM = @INSTALL_PROGRAM@
61: INSTALL_DATA = @INSTALL_DATA@
62: LN_S = @LN_S@
63: GCC = @CC@
64: CC = $(GCC)
65: FORTHPATH = .$(PATHSEP)$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION)
66: FORTHSIZES = @FORTHSIZES@
67: FORTH_ARGS = --die-on-signal -p $(FORTHPATH)$(PATHSEP)$(srcdir)
68: ENGINE = ./gforth
69: FORTH = $(ENGINE) $(FORTH_ARGS)
70: # the (existing) forth system to use for cross compiling and primitives tables
71: # per default we use the one in this directory for a rebuild. It is also
72: # possible to override this variable at the command line for an initial build (jaw)
73: BUILDFORTH = $(ENGINE) --die-on-signal -m 4M -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
74: # the forth system plus flags we use to build
75: FORTHB = $(BUILDFORTH) -e 'fpath= .|~+|$(srcdir)'
76: # the Forth system for running prims2x.fs
77: FORTHP = $(FORTHB)
78: ENGINE_FAST = $(ENGINE)-fast
79: FORTH_FAST = $(ENGINE_FAST) $(FORTH_ARGS)
80: FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
81: FORTHK = $(ENGINE) $(FORTHKFLAGS)
82: #FORTHP = $(ENGINE) --die-on-signal -i ./$(kernel_fi)
83: #the "-2 image-included-files +!" undoes the change to image-included-files
84: # in exboot.fs
85: STARTUP = -e 3 exboot.fs startup.fs @asm_fs@ @disasm_fs@
86: STRIP = strip
87: TEXI2DVI = texi2dvi -e
88: DVI2PS = dvips -Z
89: #you can get texi2html from http://wwwcn.cern.ch/dci/texi2html/
90: MAKEINFO = makeinfo
91: TEXI2HTML = texi2html
92:
93: # ------------- Compiler Flags
94:
95: XCFLAGS = @CFLAGS@
96: XDEFINES = @DEFS@
97: SWITCHES = $(XCFLAGS) $(XDEFINES) #-DNDEBUG #turn off assertions
98: ENGINE_FLAGS = @ENGINE_FLAGS@ -fno-defer-pop -fcaller-saves
99: DEBUGFLAG = @DEBUGFLAG@
100: CFLAGS = $(DEBUGFLAG) -I$(srcdir)/engine -I$(srcdir)/arch/$(machine) -O3 -Wall $(SWITCHES) -DDEFAULTPATH=\"$(FORTHPATH)\"
101:
102: #John Wavrik should use -Xlinker -N to get a writable text (executable)
103: XLDFLAGS = @LDFLAGS@
104: LDFLAGS = $(DEBUGFLAG) $(XLDFLAGS)
105: LDLIBS = @LIBS@
106:
107: # ------------ Install Directorys
108:
109: VPATH = @srcdir@
110: prefix = @prefix@
111: exec_prefix = @exec_prefix@
112: srcdir = @srcdir@
113: bindir = $(exec_prefix)/bin
114: #read-only architecture-independent files
115: datadir = $(prefix)/share
116: #read-only architecture-dependent non-ascii files
117: libdir = $(prefix)/lib
118: infodir = $(prefix)/info
119: mandir = $(prefix)/man
120: man1dir= $(mandir)/man1
121: man1ext= .1
122: #older emacses have their site-lisp in $(libdir)/emacs/
123: emacssitelispdir=@lispdir@
124: siteforthdir=$(datadir)/gforth/site-forth
125:
126: CVSDIRS = CVS engine/CVS kernel/CVS doc/CVS asm/CVS ec/CVS test/CVS \
127: compat/CVS unix/CVS \
128: arch/CVS arch/generic/CVS arch/m68k/CVS arch/mips/CVS \
129: arch/386/CVS arch/hppa/CVS arch/sparc/CVS arch/power/CVS \
130: arch/alpha/CVS arch/4stack/CVS arch/misc/CVS arch/6502/CVS \
131: arch/8086/CVS arch/avr/CVS arch/c165/CVS arch/h8/CVS \
132: arch/shboom/CVS arch/sharc/CVS arch/ia64/CVS
133:
134: INCLUDES = engine/forth.h engine/threaded.h engine/io.h
135:
136: KERN_SRC = \
137: mach16b.fs mach16l.fs mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
138: machpc.fs.in \
139: kernel/aliases0.fs \
140: kernel/aliases.fs \
141: kernel/args.fs \
142: chains.fs \
143: kernel/cbr.fs \
144: kernel/cloop.fs \
145: kernel/cond.fs \
146: kernel/cond-old.fs \
147: cross.fs \
148: kernel/errore.fs \
149: kernel/files.fs \
150: kernel/require.fs \
151: kernel/paths.fs \
152: kernel/kernel.fs \
153: kernel/main.fs \
154: kernel/prim0.fs \
155: search.fs \
156: kernel/quotes.fs \
157: kernel/tools.fs \
158: kernel/toolsext.fs \
159: kernel/vars.fs \
160: kernel/accept.fs \
161: kernel/basics.fs \
162: kernel/int.fs \
163: kernel/comp.fs \
164: kernel/io.fs \
165: kernel/input.fs \
166: kernel/license.fs \
167: kernel/nio.fs \
168: kernel/saccept.fs \
169: kernel/doers.fs \
170: kernel/getdoers.fs \
171: kernel/pass.fs
172:
173: EC_SRC = \
174: asm/README \
175: asm/bitmask.fs \
176: asm/numref.fs \
177: asm/basic.fs \
178: asm/generic.fs \
179: asm/target.fs \
180: ec/README \
181: ec/mirror.fs \
182: ec/shex.fs \
183: ec/builttag.fs \
184: ec/dotx.fs \
185: ec/nesting.fs
186:
187: GFORTH_FI_SRC = \
188: assert.fs \
189: backtrac.fs \
190: blocked.fb \
191: blocks.fs \
192: bufio.fs \
193: debug.fs \
194: debugs.fs \
195: ekey.fs \
196: savesys.fs \
197: environ.fs \
198: errors.fs \
199: exboot.fs \
200: except.fs \
201: extend.fs \
202: float.fs \
203: glocals.fs \
204: hash.fs \
205: history.fs \
206: intcomp.fs \
207: locals.fs \
208: look.fs \
209: search.fs \
210: see.fs \
211: see-ext.fs \
212: simp-see.fs \
213: source.fs \
214: startup.fs \
215: struct.fs \
216: stuff.fs \
217: tasker.fs \
218: termsize.fs \
219: vt100.fs \
220: vt100key.fs \
221: wordinfo.fs \
222: arch/386/asm.fs arch/386/disasm.fs \
223: arch/alpha/asm.fs arch/alpha/disasm.fs \
224: arch/mips/asm.fs arch/mips/disasm.fs arch/mips/insts.fs
225:
226: FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_SRC) $(EC_SRC) \
227: ans-report.fs ansi.fs answords.fs \
228: code.fs colorize.fs comp-i.fs \
229: doskey.fs ds2texi.fs \
230: envos.fs envos.dos envos.os2 etags.fs filedump.fs fi2c.fs \
231: glosgen.fs gray.fs httpd.fs proxy.fs \
232: make-app.fs doc/makedoc.fs \
233: more.fs other.fs prims2x.fs random.fs \
234: table.fs string.fs \
235: tt.fs sokoban.fs \
236: unbuffer.fs wordsets.fs \
237: test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs \
238: test/string.fs test/other.fs test/checkans.fs \
239: bubble.fs siev.fs matrix.fs fib.fs \
240: oof.fs oofsampl.fs objects.fs objexamp.fs mini-oof.fs moof-exm.fs \
241: moofglos.fs fixpath.fs \
242: add.fs lib.fs sieve.fs unix/socket.fs
243:
244: COMPAT = compat/README \
245: compat/anslocal.fs \
246: compat/assert.fs \
247: compat/control.fs \
248: compat/defer.fs \
249: compat/exception.fs \
250: compat/loops.fs \
251: compat/required.fs \
252: compat/struct.fs \
253: compat/vocabulary.fs
254:
255: GFORTH_TEXI = doc/gforth.texi doc/version.texi
256:
257: ALLSUBDIRS = engine
258:
259: ARCHS = \
260: arch/generic/machine.h \
261: arch/m68k/machine.h \
262: arch/mips/machine.h \
263: arch/386/machine.h \
264: arch/hppa/machine.h \
265: arch/hppa/cache.c \
266: arch/sparc/machine.h \
267: arch/power/machine.h \
268: arch/power/_sync_cache_range.c \
269: arch/power/elf32ppc.x \
270: arch/alpha/machine.h \
271: arch/ia64/machine.h \
272: arch/4stack/README \
273: arch/4stack/asm.fs \
274: arch/4stack/mach.fs \
275: arch/4stack/prim.fs \
276: arch/4stack/mach.sh \
277: arch/4stack/relocate.fs \
278: arch/misc/README \
279: arch/misc/asm.fs \
280: arch/misc/mach.fs \
281: arch/misc/prim.fs \
282: arch/misc/sim.fs \
283: arch/misc/sokoban.fs \
284: arch/misc/tt.fs \
285: arch/6502/asm.fs \
286: arch/6502/prim.fs \
287: arch/6502/mach.fs \
288: arch/6502/zero.fs \
289: arch/6502/softuart.fs \
290: arch/6502/cold.fs \
291: arch/8086/asm.fs \
292: arch/8086/mach.fs \
293: arch/8086/mach.sh \
294: arch/8086/prim.fs \
295: arch/avr/asm.fs \
296: arch/c165/asm.fs \
297: arch/c165/mach.fs \
298: arch/c165/prim.fs \
299: arch/h8/asm.fs \
300: arch/shboom/asm.fs \
301: arch/shboom/compiler.fs \
302: arch/shboom/dis.fs \
303: arch/shboom/mach.fs \
304: arch/shboom/prim.fs \
305: arch/shboom/dis2.fs \
306: arch/shboom/sh.p \
307: arch/shboom/doers.fs \
308: arch/sharc/mach.fs \
309: arch/sharc/machine.h \
310: arch/sharc/compile.sharc \
311: arch/sharc/unistd.h \
312: arch/sharc/systypes.h \
313: arch/sharc/types.h \
314: arch/sharc/g21k-3.3.4-bp1.diff
315:
316: VMGEN_EX = vmgen-ex/CVS vmgen-ex/Makefile vmgen-ex/README vmgen-ex/disasm.c \
317: vmgen-ex/engine.c vmgen-ex/fib.mini \
318: vmgen-ex/mini-inst.vmg vmgen-ex/mini-super.vmg vmgen-ex/mini.h \
319: vmgen-ex/mini.l vmgen-ex/mini.y vmgen-ex/peephole-blacklist \
320: vmgen-ex/peephole.c vmgen-ex/profile.c vmgen-ex/seq2rule.awk \
321: vmgen-ex/simple.mini vmgen-ex/stat.awk vmgen-ex/support.c \
322: vmgen-ex/test.mini vmgen-ex/test.out
323:
324: SOURCES = $(CVSDIRS) compat Makefile.in Makedist.in engine/Makefile.in \
325: gforthmi.in vmgen.in README.vmgen \
326: configure.in configure config.sub config.guess elisp-comp missing \
327: acconfig.h acinclude.m4 engine/config.h.in stamp-h.in \
328: iss.sh install-sh INSTALL INSTALL.BINDIST NEWS README ToDo BUGS model \
329: COPYING AUTHORS ChangeLog Benchres aclocal.m4 \
330: doc/gforth.ds doc/texinfo.tex doc/gforth.1 doc/version.texi.in \
331: gforth.el \
332: prim peeprules.vmg engine/engine.c engine/main.c \
333: engine/io.c engine/memcmpc.c engine/signals.c $(ARCHS) \
334: engine/peephole.c engine/profile.c \
335: engine/getopt.c engine/getopt1.c engine/getopt.h engine/select.c \
336: engine/ecvt.c engine/memcmp.c engine/strtol.c engine/strtoul.c \
337: engine/ansidecl.h engine/memmove.c \
338: engine/pow10.c engine/atanh.c engine/cleanalign.c \
339: engine/strerror.c engine/strsignal.c engine/dblsub.c \
340: engine/fnmatch.h engine/fnmatch.c \
341: INSTALL.DOS makefile.dos engine/makefile.dos mkdosmf.sed config.bat \
342: dosconf.h gforthmi.bat mkinstalldirs siteinit.fs \
343: versions.bsh \
344: configure.cmd mkos2mf.sed os2conf.h makefile.os2 engine/makefile.os2 \
345: gforthmi.cmd glosgen.glo doc/glossaries.doc \
346: $(INCLUDES) $(FORTH_SRC) $(COMPAT) $(VMGEN_EX) \
347: timings.sc \
348: test/coretest.out test/checkans.out
349:
350: RCS_FILES = ToDo model high-level
351:
352: GEN = gforth$(EXE) gforth-ditc$(EXE) gforth-fast$(EXE) gforth-prof$(EXE) kernel/version.fs
353:
354: # things that need a working forth system to be generated
355: FORTH_GEN0 = prim.b engine/prim.i engine/prim_lab.i engine/prim_names.i engine/prim_superend.i engine/peephole.i engine/profile.i kernel/aliases.fs kernel/prim.fs
356: FORTH_GEN = $(FORTH_GEN0) @KERNEL@ gforth.fi
357: # this is used for antidependences,
358: FORTH_GEN1 = $(FORTH_GEN0) @kernel_fi@
359:
360: #distributed documentation
361: DOCDIST = doc/gforth.info doc/gforth.info-* doc/gforth.ps
362:
363: KERNLS = kernl16b.fi- kernl16l.fi- \
364: kernl32b.fi- kernl32l.fi- \
365: kernl64b.fi- kernl64l.fi-
366:
367: GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) doc/gforth.texi doc/gforth.dvi doc/gforth.ps Makefile Makedist engine/Makefile configure
368:
369: #standards.info recommends this:
370: .SUFFIXES:
371: .SUFFIXES: .c .o
372:
373:
374: all: kernel/version.fs more
375:
376: # use this dependency for phony targets just as mostlyclean,...
377: FORCE: ;
378:
379: #this rule avoids remaking everything after minor changes in Makefile.in
380: version: Makefile.in configure.in
381: if test -r $@ && test x'$(VERSION)' = x`cat $@` ; then true ; else echo $(VERSION) > $@ ; fi
382:
383: # With dos we use normal dos echo
384: # we cannot pipe the output to engine/version.h directly because
385: # of the "/ and \" problem. Copying works because we use the
386: # shell und file utilities.
387:
388: kernel/version.fs: version
389: $(MAKE) gforth$(EXE)
390: echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs
391:
392: more: engine $(FORTH_GEN) $(GEN)
393:
394: #from the gcc Makefile:
395: #"Deletion of files made during compilation.
396: # There are four levels of this:
397: # `mostlyclean', `clean', `distclean' and `realclean'.
398: # `mostlyclean' is useful while working on a particular type of machine.
399: # It deletes most, but not all, of the files made by compilation.
400: # It does not delete libgcc.a or its parts, so it won't have to be recompiled.
401: # `clean' deletes everything made by running `make all'.
402: # `distclean' also deletes the files made by config.
403: # `realclean' also deletes everything that could be regenerated automatically."
404:
405: mostlyclean: FORCE
406: -$(RM) -rf engine/*.s gforth.fi *.fi~ *.fi- kernel/version.fs \
407: *TAGS gforth~ \
408: doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
409: doc/gforth.aux doc/gforth.cp doc/gforth.cps \
410: doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
411: doc/gforth.pg \
412: doc/gforth.toc doc/gforth.tp doc/gforth.vr html \
413: gforth-$(VERSION).tar.gz
414:
415: # Just the stuff needed to rebuild the documentation nac03feb1999
416: docclean: FORCE
417: -$(RM) -rf doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
418: doc/gforth.aux doc/gforth.cp doc/gforth.cps \
419: doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
420: doc/gforth.pg \
421: doc/gforth.toc doc/gforth.tp doc/gforth.vr html
422:
423: clean: mostlyclean
424: -$(RM) -rf $(GEN) engine/gforth$(EXE) \
425: engine/gforth-fast$(EXE) engine/gforth-ditc$(EXE) engine/gforth-prof$(EXE) \
426: *.o engine/*.o arch/*/*.o version
427:
428: distclean: clean
429: -$(RM) config.cache config.log config.status \
430: engine/config.h Makefile Makedist engine/Makefile \
431: stamp-h engine/stamp-h \
432: doc/version.texi gforthmi vmgen
433:
434: #realclean is useless, but dangerous, so it's commented out
435: realclean: distclean
436: -$(RM) $(GEN_PRECIOUS)
437:
438: #mostlyclean, but also remove some of the stuff that is distributed
439: virtualclean: mostlyclean
440: -$(RM) -rf gforth.fns gforth.texi gforth.ps gforth.info* \
441: gforth-$(VERSION).tar.gz config.cache *~ */*~
442:
443: #Some makes (Ultrix, SunOS, IRIX) are so broken, they cannot read the
444: #Makefile if it contains our dist rules. Therefore we have put these
445: #rules in Makedist (you can use them with GNU make on these systems).
446: dist: Makedist FORCE
447: $(MAKE) -f Makedist d$@
448:
449: dosdist: Makedist FORCE
450: $(MAKE) -f Makedist d$@
451:
452: srcdist: Makedist FORCE
453: $(MAKE) -f Makedist d$@
454:
455: srconlydist: Makedist FORCE
456: $(MAKE) -f Makedist d$@
457:
458: docdist: Makedist FORCE
459: $(MAKE) -f Makedist d$@
460:
461: htmldist: Makedist FORCE
462: $(MAKE) -f Makedist d$@
463:
464: bindist: Makedist FORCE
465: $(MAKE) -f Makedist d$@
466:
467: binonlydist: Makedist FORCE
468: $(MAKE) -f Makedist d$@
469:
470:
471: #strip gforth, because the debugging stuff is hardly useful once
472: # gforth manages to execute more than a few primitives.
473:
474: #install does not depend on gforth.info, because that would require
475: #supplying a lot of files that can be easily generated (only info is
476: #hard to generate).
477: #we rebuild gforth.fi, because it contains some path names.
478: #we delete $build/gforth.fi and $build/install.TAGS after installation because of ownership.
479: install: gforth$(EXE) $(FORTH_SRC) $(kernel_fi) gforth.fi gforthmi vmgen doc/gforth.1 prim install.TAGS installdirs
480: touch $(siteforthdir)/siteinit.fs
481: -$(RM) $(bindir)/gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforthmi $(bindir)/vmgen
482: -$(RM) $(bindir)/gforth-fast$(EXE) $(bindir)/gforth-fast-$(VERSION)$(EXE)
483: $(INSTALL_PROGRAM) -s gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE)
484: (cd $(bindir) && $(LN_S) gforth-$(VERSION)$(EXE) gforth$(EXE))
485: $(INSTALL_PROGRAM) -s gforth-fast$(EXE) $(bindir)/gforth-fast-$(VERSION)$(EXE)
486: (cd $(bindir) && $(LN_S) gforth-fast-$(VERSION)$(EXE) gforth-fast$(EXE))
487: $(INSTALL_PROGRAM) gforthmi $(bindir)/gforthmi-$(VERSION)
488: $(INSTALL_PROGRAM) vmgen $(bindir)/vmgen-$(VERSION)
489: $(INSTALL_PROGRAM) gforth-ditc $(libdir)/gforth/$(VERSION)
490: (cd $(bindir) && $(LN_S) gforthmi-$(VERSION) gforthmi)
491: (cd $(bindir) && $(LN_S) vmgen-$(VERSION) vmgen)
492: -$(INSTALL_DATA) $(srcdir)/doc/gforth.1 $(man1dir)
493: -for i in $(srcdir)/doc/gforth.info*; do $(INSTALL_DATA) $$i $(infodir); done
494: for i in $(FORTH_SRC) $(COMPAT) prim; do \
495: $(INSTALL_DATA) $(srcdir)/$$i $(datadir)/gforth/$(VERSION)/$$i; \
496: done
497: $(INSTALL_DATA) $(kernel_fi) $(datadir)/gforth/$(VERSION)
498: @if test -d "$(emacssitelispdir)"; then \
499: $(INSTALL_DATA) $(srcdir)/gforth.el $(emacssitelispdir); \
500: else \
501: echo ">>>>>Please install $(srcdir)/gforth.el in your .../emacs/site-lisp directory"; \
502: fi
503: -$(RM) gforth.fi
504: 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)
505: $(INSTALL_DATA) gforth.fi $(libdir)/gforth/$(VERSION)
506: $(INSTALL_DATA) install.TAGS $(datadir)/gforth/$(VERSION)/TAGS
507: $(RM) gforth.fi install.TAGS
508: @echo ">>>>> Please make an entry for Gforth in your info dir file; e.g.:"; \
509: echo "* Gforth: (gforth). A fast interpreter for the Forth language."
510:
511: install-strip: install
512:
513: installdirs: mkinstalldirs
514: for i in $(bindir) $(man1dir) $(infodir) $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(libdir)/gforth/site-forth $(siteforthdir); do \
515: $(srcdir)/mkinstalldirs $$i; \
516: done
517: for i in $(CVSDIRS); do \
518: $(srcdir)/mkinstalldirs $(datadir)/gforth/$(VERSION)/`dirname $$i`; \
519: done
520: $(RM) -rf $(datadir)/gforth/$(VERSION)/engine
521:
522: #deinstall all files specific to this version of gforth
523: #to uninstall version foo, type `make uninstall VERSION=foo'
524: uninstall: FORCE
525: -$(RM) -rf $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforth-fast-$(VERSION)$(EXE) $(bindir)/gforthmi-$(VERSION) (bindir)/vmgen-$(VERSION)
526: @echo -e "To remove Gforth completely, type\n$(RM) -rf $(bindir)/gforth$(EXE) $(bindir)/gforth-fast$(EXE) $(bindir)/gforthmi $(bindir)/vmgen $(man1dir)/gforth.1 $(infodir)/gforth.info* $(datadir)/gforth $(libdir)/gforth"
527:
528: check test: gforth$(EXE) gforth.fi
529: $(FORTH) test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs test/string.fs -e bye | diff -c - $(srcdir)/test/coretest.out
530: $(FORTH) test/other.fs -e bye
531: $(FORTH) code.fs test/checkans.fs -e bye | diff -c - $(srcdir)/test/checkans.out
532: $(FORTH) prims2x.fs -e \
533: "c-flag on s\" $(srcdir)/prim.b\" ' output-c ' output-c-combined process-file bye"| \
534: diff -c - $(srcdir)/engine/prim.i
535:
536: bench: gforth-fast$(EXE) gforth.fi
537: @echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)'
538: time $(FORTH_FAST) siev.fs -e "main bye"
539: time $(FORTH_FAST) bubble.fs -e "main bye"
540: time $(FORTH_FAST) matrix.fs -e "main bye"
541: time $(FORTH_FAST) fib.fs -e "main bye"
542:
543: # ------------- Make forth images
544:
545: # How to make new images:
546: # 1. Produce an image called kernlXYZ.fi-
547: # the original kernel.fi is not touched because it's needed for creation
548: # 2. copy old kernlXYZ.fi to kernlXYZ.fi~
549: # that's a backup copy in case the new kernels don't work
550: # 3. copy new kernels to kernlXYZ.fi
551: # these are the ones we want to use now
552:
553: kernl16l.fi-: $(KERN_SRC) kernel/version.fs mach16l.fs machpc.fs $(FORTH_GEN0)
554: $(FORTHB) -e 's" mach16l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl16l.fi- $(bindir)/gforth-$(VERSION) bye"
555:
556: kernl16b.fi-: $(KERN_SRC) kernel/version.fs mach16b.fs machpc.fs $(FORTH_GEN0)
557: $(FORTHB) -e 's" mach16b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl16b.fi- $(bindir)/gforth-$(VERSION) bye"
558:
559: kernl32l.fi-: $(KERN_SRC) kernel/version.fs mach32l.fs machpc.fs $(FORTH_GEN0)
560: $(FORTHB) -e 's" mach32l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32l.fi- $(bindir)/gforth-$(VERSION) bye"
561:
562: kernl32b.fi-: $(KERN_SRC) kernel/version.fs mach32b.fs machpc.fs $(FORTH_GEN0)
563: $(FORTHB) -e 's" mach32b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32b.fi- $(bindir)/gforth-$(VERSION) bye"
564:
565: kernl64l.fi-: $(KERN_SRC) kernel/version.fs mach64l.fs machpc.fs $(FORTH_GEN0)
566: $(FORTHB) -e 's" mach64l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64l.fi- $(bindir)/gforth-$(VERSION) bye"
567:
568: kernl64b.fi-: $(KERN_SRC) kernel/version.fs mach64b.fs machpc.fs $(FORTH_GEN0)
569: $(FORTHB) -e 's" mach64b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64b.fi- $(bindir)/gforth-$(VERSION) bye"
570:
571: kernl-%.fi: arch/%/mach.fs $(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
572: $(FORTHB) -e 's" $<"' $(srcdir)/kernel/main.fs -e "save-cross $@- $(bindir)/gforth-$(VERSION) bye"
573: if [ -f `echo $< | sed s/fs/sh/` ]; \
574: then sh `echo $< | sed s/fs/sh/` $@; \
575: else $(CP) $@- $@; \
576: fi
577:
578: #SunOS make does not like that
579: #arch/%/mach.fs: arch/%/prim.fs arch/%/asm.fs
580:
581: kernl16b.fi: $(KERNLS)
582: -$(CP) kernl16b.fi kernl16b.fi~
583: -$(CP) kernl16b.fi- kernl16b.fi
584:
585: kernl16l.fi: $(KERNLS)
586: -$(CP) kernl16l.fi kernl16l.fi~
587: -$(CP) kernl16l.fi- kernl16l.fi
588:
589: kernl32b.fi: $(KERNLS)
590: -$(CP) kernl32b.fi kernl32b.fi~
591: -$(CP) kernl32b.fi- kernl32b.fi
592:
593: kernl32l.fi: $(KERNLS)
594: -$(CP) kernl32l.fi kernl32l.fi~
595: -$(CP) kernl32l.fi- kernl32l.fi
596:
597: kernl64b.fi: $(KERNLS)
598: -$(CP) kernl64b.fi kernl64b.fi~
599: -$(CP) kernl64b.fi- kernl64b.fi
600:
601: kernl64l.fi: $(KERNLS)
602: -$(CP) kernl64l.fi kernl64l.fi~
603: -$(CP) kernl64l.fi- kernl64l.fi
604:
605: #kernl%.fi: kernl%.fi- $(KERNLS)
606: # -$(CP) $@ $@~
607: # -$(CP) $< $@
608:
609: gforth.fi: $(kernel_fi) gforthmi gforth$(EXE) gforth-ditc$(EXE) $(GFORTH_FI_SRC) comp-i.fs
610: 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)
611:
612: # ------------- Make c-engine
613:
614: prim.b: prim peeprules.vmg
615: m4 -s $(srcdir)/prim >$@
616:
617: engine/prim.i: prim.b prims2x.fs
618: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-c ' output-c-combined process-file bye" >$@-
619: $(CP) $@- $@
620: $(RM) $@-
621:
622: engine/prim_lab.i: prim.b prims2x.fs
623: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-label dup process-file bye" >$@-
624: $(CP) $@- $@
625: $(RM) $@-
626:
627: engine/prim_names.i: prim.b prims2x.fs
628: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-forthname dup process-file bye" >$@-
629: $(CP) $@- $@
630: $(RM) $@-
631:
632: engine/prim_superend.i: prim.b prims2x.fs
633: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-superend dup process-file bye" >$@-
634: $(CP) $@- $@
635: $(RM) $@-
636:
637: engine/peephole.i: prim.b prims2x.fs
638: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' noop ' output-peephole process-file bye" >$@-
639: $(CP) $@- $@
640: $(RM) $@-
641:
642: engine/profile.i: prim.b prims2x.fs
643: $(FORTHP) prims2x.fs -e "c-flag on s\" prim.b\" ' output-profile ' output-profile-combined process-file bye" >$@-
644: $(CP) $@- $@
645: $(RM) $@-
646:
647: kernel/aliases.fs: prim.b prims2x.fs kernel/aliases0.fs
648: $(CP) kernel/aliases0.fs $@-
649: $(FORTHP) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-alias dup process-file bye" >>$@-
650: $(CP) $@- $@
651: $(RM) $@-
652:
653: kernel/prim.fs: prim.b prims2x.fs kernel/prim0.fs
654: $(CP) kernel/prim0.fs kernel/prim.fs-
655: $(FORTHP) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-forth ' output-forth-combined process-file bye" >>$@-
656: $(CP) $@- $@
657: $(RM) $@-
658:
659: kernel/peephole.fs: prim.b prims2x.fs
660: $(FORTHP) prims2x.fs -e "forth-flag on s\" prim.b\" ' noop ' output-forth-peephole process-file bye" >$@-
661: $(CP) $@- $@
662: $(RM) $@-
663:
664: gforth$(EXE): engines
665: -$(CP) gforth$(EXE) gforth~
666: $(CP) engine/$@ $@
667: @GFORTH_EXE@
668:
669: gforth-fast$(EXE): engines
670: $(CP) engine/$@ $@
671: @GFORTHFAST_EXE@
672:
673: gforth-ditc$(EXE): engines
674: $(CP) engine/$@ $@
675: @GFORTHDITC_EXE@
676:
677: gforth-prof$(EXE): engines
678: $(CP) engine/$@ $@
679:
680: engines: FORCE engine/Makefile engine/prim.i engine/prim_lab.i engine/prim_names.i engine/peephole.i engine/profile.i
681: cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-ditc$(EXE) gforth-prof$(EXE)
682:
683: # ------------- additional C primitives
684:
685: %.c: %.pri prim2cl.fs
686: $(FORTHK) prim2cl.fs -e "file $< altogether bye" >$@
687:
688: %.so: %.c
689: $(GCC) -shared $(CFLAGS) $< -o $@
690:
691: # ------------- Make Documentation
692:
693: #TAGS is a GNU standard target
694: TAGS: gforth.TAGS
695: $(CP) gforth.TAGS $@
696:
697: tags: gforth.tags
698: $(CP) gforth.tags $@
699:
700: install.TAGS: gforth.TAGS
701: sed 's:^\$(srcdir)/:$(datadir)/gforth/$(VERSION)/:' gforth.TAGS >install.TAGS
702:
703: gforth.TAGS: @kernel_fi@ gforth$(EXE) $(GFORTH_FI_SRC) prim.TAGS kernel.TAGS
704: $(FORTHK) etags.fs except.fs startup.fs -e bye
705: cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS
706: rm TAGS
707:
708: gforth.tags: @kernel_fi@ gforth$(EXE) $(GFORTH_FI_SRC) prim.tags kernel.tags
709: $(FORTHK) tags.fs except.fs startup.fs -e bye
710: cat tags prim.tags kernel.tags >gforth.tags
711: rm tags
712:
713: prim.TAGS: prim.b prims2x.fs
714: #echo '2c\' >prim.TAGS.sed
715: #echo $(srcdir)/prim >>prim.TAGS.sed
716: #$(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye" | sed -f prim.TAGS.sed >$@-
717: $(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye" >$@-
718: $(CP) $@- $@
719: $(RM) $@-
720:
721: prim.tags: prim.b prims2x.fs
722: #echo '2c\' >prim.TAGS.sed
723: #echo $(srcdir)/prim >>prim.TAGS.sed
724: #$(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye" | sed -f prim.TAGS.sed >$@-
725: $(FORTHP) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-vi-tag dup process-file bye" >$@-
726: $(CP) $@- $@
727: $(RM) $@-
728:
729: kernel.TAGS:
730: rm kernl16l.fi-; $(MAKE) @kernel_fi@
731:
732: kernel.tags:
733: rm kernl16l.fi-; $(MAKE) @kernel_fi@
734:
735: doc/doc.fd: doc/makedoc.fs $(GFORTH_FI_SRC) code.fs objects.fs oof.fs moofglos.fs
736: $(FORTHK) -e "s\" doc/doc.fd\"" doc/makedoc.fs except.fs startup.fs code.fs objects.fs oof.fs moofglos.fs -e bye
737:
738: doc/crossdoc.fd: $(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
739: $(FORTHK) -e 's" mach32l.fs"' kernel/main.fs -e bye
740:
741: doc/gforth.texi: doc/gforth.ds prim.b ds2texi.fs prims2x.fs \
742: doc/doc.fd doc/crossdoc.fd
743: $(FORTHP) ds2texi.fs prims2x.fs -e "s\" $(srcdir)/prim.b\" ' register-doc ' noop process-file" doc/crossdoc.fd doc/doc.fd -e "s\" $(srcdir)/doc/gforth.ds\" r/o open-file throw ds2texi bye" >$@-
744: $(CP) $@- $@
745: $(RM) $@-
746:
747: checkdoc: doc/gforth.ds prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi
748: $(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
749: -grep unknown doc/gforth.texi
750:
751: dvi: doc/gforth.dvi
752:
753: doc/gforth.dvi doc/gforth.fns: $(GFORTH_TEXI)
754: cd doc; $(TEXI2DVI) gforth.texi
755:
756: doc/gforth.ps: doc/gforth.dvi
757: $(DVI2PS) doc/gforth.dvi -o $@
758:
759: info: doc/gforth.info
760:
761: doc/gforth.info doc/gforth.info-*: $(GFORTH_TEXI)
762: -cd doc; $(MAKEINFO) gforth.texi
763:
764: ### need makeinfo 4.0 to generate html. Otherwise, use texi2html..
765: html: $(GFORTH_TEXI)
766: -$(RMTREE) html
767: -mkdir html
768: cd html; $(MAKEINFO) --html -I ../doc ../doc/gforth.texi
769: ### cd html; $(TEXI2HTML) -menu -split_node ../doc/gforth.texi
770:
771: doc/gforth.txt: $(GFORTH_TEXI)
772: -cd doc; $(MAKEINFO) --no-headers --no-split gforth.texi >gforth.txt
773:
774: doc: info html doc/gforth.ps doc/gforth.txt TAGS
775:
776: # For an explanation of the following Makefile rules, see node
777: # `Automatic Remaking' in GNU Autoconf documentation.
778:
779: #Note: no target "$(srcdir)/configure", because that does not trigger
780: #unless $(srcdir)!="."
781: configure: configure.in aclocal.m4
782: cd $(srcdir) && autoconf
783:
784: aclocal.m4: acinclude.m4 configure.in
785: aclocal
786:
787: # autoheader might not change config.h.in, so touch a stamp file.
788: engine/config.h.in: stamp-h.in
789: stamp-h.in: configure.in acconfig.h
790: cd $(srcdir) && autoheader
791: echo timestamp > $(srcdir)/stamp-h.in
792:
793: engine/config.h: stamp-h
794: stamp-h: engine/config.h.in config.status
795: CONFIG_FILES=$@ CONFIG_HEADERS=engine/config.h ./config.status
796: echo timestamp > stamp-h
797:
798: Makefile Makedist engine/Makefile gforthmi vmgen machpc.fs: Makefile.in Makedist.in engine/Makefile.in gforthmi.in vmgen.in machpc.fs.in config.status
799: CONFIG_FILES="$@" CONFIG_HEADERS=engine/config.h ./config.status
800:
801: config.status: configure
802: ./config.status --recheck
803:
804:
805: #create files for DOS, because DOS cannot do it itself
806: makefile.dos: mkdosmf.sed Makefile.in engine/Makefile.in
807: sed -f mkdosmf.sed <Makefile.in >makefile.dos
808: sed -f mkdosmf.sed <engine/Makefile.in >engine/makefile.dos
809:
810: makefile.os2: mkos2mf.sed Makefile.in engine/Makefile.in
811: sed -f mkos2mf.sed <Makefile.in >makefile.os2
812: sed -f mkos2mf.sed <engine/Makefile.in >engine/makefile.os2
813: echo '%.o: %.c' >>makefile.os2
814: echo ' $$(GCC) $$(CFLAGS) -c $$<' >>makefile.os2
815: echo '%.o: %.c' >>engine/makefile.os2
816: echo ' $$(GCC) $$(CFLAGS) -c $$<' >>engine/makefile.os2
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>