File:  [gforth] / gforth / Makefile.in
Revision 1.143: download - view: text, annotated - select for diffs
Fri Jan 8 16:58:29 1999 UTC (21 years, 9 months ago) by anton
Branches: MAIN
CVS tags: HEAD
there is now a debugging version of the engine that maintains ip and
rp in global variables (to allow backtrace on signals). The debugging
engine is called gforth and the original engine is called gforth-fast.

    1: #Makefile for Gforth
    2: 
    3: #Copyright (C) 1995,1996,1997,1998 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., 675 Mass Ave, Cambridge, MA 02139, 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'`
   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
   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: ENGINE_FAST = $(ENGINE)-fast
   71: FORTH_FAST	= $(ENGINE_FAST) $(FORTH_ARGS)
   72: FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
   73: FORTHK	= ./gforth $(FORTHKFLAGS)
   74: FORTHP	= ./gforth --die-on-signal -i ./$(kernel_fi)
   75: STRIP	= strip
   76: TEXI2DVI = texi2dvi
   77: DVI2PS	= dvips -Z
   78: #you can get texi2html from http://wwwcn.cern.ch/dci/texi2html/
   79: TEXI2HTML = texi2html
   80: MAKEINFO = makeinfo
   81: 
   82: # -------------	Compiler Flags
   83: 
   84: XCFLAGS	= @CFLAGS@
   85: XDEFINES = @DEFS@
   86: SWITCHES = $(XCFLAGS) $(XDEFINES) #-DNDEBUG #turn off assertions
   87: ENGINE_FLAGS = @ENGINE_FLAGS@ -fno-defer-pop -fcaller-saves
   88: DEBUGFLAG = @DEBUGFLAG@
   89: CFLAGS	= $(DEBUGFLAG) -I$(srcdir)/engine -I$(srcdir)/arch/$(machine) -O4 -Wall $(SWITCHES) -DDEFAULTPATH=\"$(FORTHPATH)\"
   90: 
   91: #John Wavrik should use -Xlinker -N to get a writable text (executable)
   92: XLDFLAGS = @LDFLAGS@
   93: LDFLAGS	=  $(DEBUGFLAG) $(XLDFLAGS)
   94: LDLIBS	= @LIBS@
   95: 
   96: # ------------	Install Directorys
   97: 
   98: VPATH = @srcdir@
   99: prefix = @prefix@
  100: exec_prefix = @exec_prefix@
  101: srcdir = @srcdir@
  102: bindir = $(exec_prefix)/bin
  103: #read-only architecture-independent files
  104: datadir = $(prefix)/share
  105: #read-only architecture-dependent non-ascii files
  106: libdir = $(prefix)/lib
  107: infodir = $(prefix)/info
  108: mandir = $(prefix)/man
  109: man1dir= $(mandir)/man1
  110: man1ext= .1
  111: #older emacses have their site-lisp in $(libdir)/emacs/
  112: emacssitelispdir=@lispdir@
  113: siteforthdir=$(datadir)/gforth/site-forth
  114: 
  115: CVSDIRS = CVS engine/CVS kernel/CVS doc/CVS asm/CVS ec/CVS test/CVS \
  116: 	compat/CVS \
  117: 	arch/CVS arch/generic/CVS arch/m68k/CVS arch/mips/CVS \
  118: 	arch/386/CVS arch/hppa/CVS arch/sparc/CVS arch/power/CVS \
  119: 	arch/alpha/CVS arch/4stack/CVS arch/misc/CVS arch/6502/CVS \
  120: 	arch/8086/CVS arch/avr/CVS arch/c165/CVS arch/h8/CVS \
  121: 	arch/shboom/CVS \
  122: 
  123: INCLUDES = engine/forth.h engine/threaded.h engine/io.h
  124: 
  125: KERN_SRC = \
  126: 	kernel/aliases0.fs \
  127: 	kernel/aliases.fs \
  128: 	kernel/args.fs \
  129: 	chains.fs \
  130: 	kernel/cond.fs \
  131: 	kernel/cond-old.fs \
  132: 	cross.fs \
  133: 	kernel/errore.fs \
  134: 	kernel/files.fs \
  135: 	kernel/require.fs \
  136: 	kernel/paths.fs \
  137: 	kernel/kernel.fs \
  138: 	kernel/main.fs \
  139: 	kernel/prim0.fs \
  140: 	search.fs \
  141: 	kernel/special.fs \
  142: 	kernel/tools.fs \
  143: 	kernel/toolsext.fs \
  144: 	kernel/vars.fs \
  145: 	kernel/accept.fs \
  146: 	kernel/basics.fs \
  147: 	kernel/int.fs \
  148: 	kernel/comp.fs \
  149: 	kernel/io.fs \
  150: 	kernel/license.fs \
  151: 	kernel/nio.fs \
  152: 	kernel/saccept.fs \
  153: 	kernel/doers.fs \
  154: 	kernel/getdoers.fs
  155: 
  156: EC_SRC = \
  157: 	asm/README \
  158: 	asm/bitmask.fs \
  159: 	asm/numref.fs \
  160: 	asm/basic.fs \
  161: 	asm/generic.fs \
  162: 	asm/target.fs \
  163: 	ec/README \
  164: 	ec/mirror.fs \
  165: 	ec/mirrors.fs \
  166: 	ec/shex.fs \
  167: 	ec/builttag.fs \
  168: 	ec/dotx.fs \
  169: 	ec/mirrored.fs \
  170: 	ec/nesting.fs
  171: 
  172: GFORTH_FI_SRC = \
  173: 	assert.fs \
  174: 	blocked.fb \
  175: 	blocks.fs \
  176: 	bufio.fs \
  177: 	debug.fs \
  178: 	debugs.fs \
  179: 	savesys.fs \
  180: 	environ.fs \
  181: 	errors.fs \
  182: 	extend.fs \
  183: 	float.fs \
  184: 	glocals.fs \
  185: 	hash.fs \
  186: 	history.fs \
  187: 	intcomp.fs \
  188: 	locals.fs \
  189: 	look.fs \
  190: 	search.fs \
  191: 	see.fs \
  192: 	see-ext.fs \
  193: 	source.fs \
  194: 	startup.fs \
  195: 	struct.fs \
  196: 	stuff.fs \
  197: 	tasker.fs \
  198: 	termsize.fs \
  199: 	vt100.fs \
  200: 	vt100key.fs \
  201: 	wordinfo.fs \
  202: 	lib.fs \
  203: 	sieve.fs \
  204: 	add.fs
  205: 
  206: FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_SRC) $(EC_SRC) \
  207: 	ans-report.fs ansi.fs answords.fs \
  208: 	code.fs colorize.fs comp-i.fs \
  209: 	doskey.fs ds2texi.fs \
  210: 	envos.fs envos.dos envos.os2 etags.fs filedump.fs fi2c.fs \
  211: 	glosgen.fs gray.fs \
  212: 	doc/makedoc.fs \
  213: 	mach16b.fs mach16l.fs mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
  214: 	machpc.fs more.fs other.fs prims2x.fs random.fs \
  215: 	table.fs \
  216: 	tt.fs sokoban.fs \
  217: 	unbuffered.fs wordsets.fs \
  218: 	test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs \
  219: 	test/other.fs test/checkans.fs \
  220: 	bubble.fs siev.fs matrix.fs fib.fs \
  221: 	oof.fs oofsampl.fs objects.fs objexamp.fs mini-oof.fs moof-exm.fs
  222: 
  223: COMPAT = compat/README \
  224: 	compat/anslocal.fs \
  225: 	compat/assert.fs \
  226: 	compat/control.fs \
  227: 	compat/defer.fs \
  228: 	compat/exception.fs \
  229: 	compat/loops.fs \
  230: 	compat/required.fs \
  231: 	compat/struct.fs \
  232: 	compat/vocabulary.fs
  233: 
  234: GFORTH_TEXI =  doc/gforth.texi doc/version.texi
  235: 
  236: ALLSUBDIRS = engine
  237: 
  238: ARCHS =	\
  239: 	arch/generic/machine.h \
  240: 	arch/m68k/machine.h \
  241: 	arch/mips/machine.h \
  242: 	arch/386/machine.h \
  243: 	arch/hppa/machine.h \
  244: 	arch/hppa/cache.c \
  245: 	arch/sparc/machine.h \
  246: 	arch/power/machine.h \
  247: 	arch/power/_sync_cache_range.c \
  248: 	arch/alpha/machine.h \
  249: 	arch/4stack/README \
  250: 	arch/4stack/asm.fs \
  251: 	arch/4stack/mach.fs \
  252: 	arch/4stack/prim.fs \
  253: 	arch/4stack/mach.sh \
  254: 	arch/4stack/relocate.fs \
  255: 	arch/misc/README \
  256: 	arch/misc/asm.fs \
  257: 	arch/misc/mach.fs \
  258: 	arch/misc/prim.fs \
  259: 	arch/misc/sim.fs \
  260: 	arch/misc/sokoban.fs \
  261: 	arch/misc/tt.fs \
  262: 	arch/6502/asm.fs \
  263: 	arch/6502/prim.fs \
  264: 	arch/6502/mach.fs \
  265: 	arch/6502/zero.fs \
  266: 	arch/6502/softuart.fs \
  267: 	arch/6502/cold.fs \
  268: 	arch/8086/asm.fs \
  269: 	arch/8086/mach.fs \
  270: 	arch/8086/mach.sh \
  271: 	arch/8086/prim.fs \
  272: 	arch/avr/asm.fs \
  273: 	arch/c165/asm.fs \
  274: 	arch/c165/mach.fs \
  275: 	arch/c165/prim.fs \
  276: 	arch/h8/asm.fs \
  277: 	arch/shboom/asm.fs \
  278: 	arch/shboom/compiler.fs \
  279: 	arch/shboom/dis.fs \
  280: 	arch/shboom/mach.fs \
  281: 	arch/shboom/prim.fs \
  282: 	arch/shboom/dis2.fs \
  283: 	arch/shboom/sh.p \
  284: 	arch/shboom/doers.fs
  285: 
  286: SOURCES	= $(CVSDIRS) compat Makefile.in Makedist.in engine/Makefile.in gforthmi.in \
  287: 	configure.in configure config.sub config.guess elisp-comp missing \
  288: 	acconfig.h acinclude.m4 engine/config.h.in stamp-h.in \
  289: 	install-sh INSTALL INSTALL.BINDIST NEWS README ToDo BUGS model \
  290: 	COPYING AUTHORS ChangeLog Benchres aclocal.m4 \
  291: 	doc/gforth.ds doc/texinfo.tex doc/gforth.1 doc/version.texi.in \
  292: 	gforth.el \
  293: 	prim engine/engine.c engine/main.c engine/io.c engine/memcmpc.c \
  294: 	$(ARCHS) \
  295: 	engine/getopt.c engine/getopt1.c engine/getopt.h engine/select.c \
  296: 	engine/ecvt.c engine/memcmp.c engine/strtol.c engine/strtoul.c \
  297: 	engine/ansidecl.h engine/memmove.c \
  298: 	engine/pow10.c engine/atanh.c engine/cleanalign.c \
  299: 	engine/strerror.c engine/strsignal.c engine/dblsub.c \
  300: 	INSTALL.DOS makefile.dos engine/makefile.dos mkdosmf.sed config.bat \
  301: 	dosconf.h gforthmi.bat mkinstalldirs siteinit.fs \
  302: 	versions.bsh \
  303: 	configure.cmd mkos2mf.sed os2conf.h makefile.os2 engine/makefile.os2 \
  304: 	gforthmi.cmd glosgen.glo doc/glossaries.doc \
  305: 	$(INCLUDES) $(FORTH_SRC) $(COMPAT) \
  306: 	timings.sc
  307: 
  308: RCS_FILES =  ToDo model high-level
  309: 
  310: GEN = gforth$(EXE) gforth-ditc$(EXE) gforth-fast$(EXE) kernel/version.fs
  311: 
  312: # things that need a working forth system to be generated
  313: FORTH_GEN0 = prim.b engine/prim.i engine/prim_lab.i kernel/aliases.fs kernel/prim.fs
  314: FORTH_GEN =  $(FORTH_GEN0) @KERNEL@ gforth.fi
  315: # this is used for antidependences,
  316: FORTH_GEN1 = $(FORTH_GEN0) @kernel_fi@ 
  317: 
  318: #distributed documentation
  319: DOCDIST = doc/gforth.info doc/gforth.info-* doc/gforth.ps
  320: 
  321: KERNLS = kernl16b.fi- kernl16l.fi- \
  322: 	 kernl32b.fi- kernl32l.fi- \
  323: 	 kernl64b.fi- kernl64l.fi-
  324: 
  325: GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) doc/gforth.texi doc/gforth.dvi doc/gforth.ps Makefile Makedist engine/Makefile configure
  326: 
  327: #standards.info recommends this:
  328: .SUFFIXES:
  329: .SUFFIXES: .c .o
  330: 
  331: 
  332: all:	kernel/version.fs more
  333: 
  334: # use this dependency for phony targets just as mostlyclean,...
  335: FORCE: ;
  336: 
  337: #this rule avoids remaking everything after minor changes in Makefile.in
  338: version:	Makefile.in
  339: 		if test -r $@ && test x'$(VERSION)' = x`cat $@` ; then true ; else echo $(VERSION) > $@ ; fi
  340: 
  341: # With dos we use normal dos echo
  342: # we cannot pipe the output to engine/version.h directly because
  343: # of the "/ and \" problem. Copying works because we use the
  344: # shell und file utilities.
  345: 
  346: kernel/version.fs:	version
  347: 	$(MAKE) gforth$(EXE)
  348: 	echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs
  349: 
  350: more:	engine $(FORTH_GEN) gforth$(EXE)
  351: 
  352: #from the gcc Makefile: 
  353: #"Deletion of files made during compilation.
  354: # There are four levels of this:
  355: #   `mostlyclean', `clean', `distclean' and `realclean'.
  356: # `mostlyclean' is useful while working on a particular type of machine.
  357: # It deletes most, but not all, of the files made by compilation.
  358: # It does not delete libgcc.a or its parts, so it won't have to be recompiled.
  359: # `clean' deletes everything made by running `make all'.
  360: # `distclean' also deletes the files made by config.
  361: # `realclean' also deletes everything that could be regenerated automatically."
  362: 
  363: mostlyclean:	FORCE
  364: 		-$(RM) -rf engine/*.s gforth.fi *.fi~ *.fi- kernel/version.fs \
  365: 		*TAGS gforth~ \
  366: 		doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
  367: 		doc/gforth.aux doc/gforth.cp doc/gforth.cps \
  368: 		doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
  369: 		doc/gforth.pg \
  370: 		doc/gforth.toc doc/gforth.tp doc/gforth.vr html \
  371: 		gforth-$(VERSION).tar.gz
  372: 
  373: clean:		mostlyclean
  374: 		-$(RM) -rf $(GEN) engine/gforth$(EXE) \
  375: 		engine/gforth-fast$(EXE) engine/gforth-ditc$(EXE) \
  376: 		*.o engine/*.o arch/*/*.o version
  377: 
  378: distclean:	clean
  379: 		-$(RM) config.cache config.log config.status \
  380: 		engine/config.h Makefile Makedist engine/Makefile \
  381: 		stamp-h engine/stamp-h \
  382: 		doc/version.texi gforthmi
  383: 
  384: #realclean is useless, but dangerous, so it's commented out
  385: #realclean:	distclean
  386: #		-$(RM) $(GEN_PRECIOUS)
  387: 
  388: #mostlyclean, but also remove some of the stuff that is distributed
  389: virtualclean:	mostlyclean
  390: 		-$(RM) -rf gforth.fns gforth.texi gforth.ps gforth.info* \
  391: 		gforth-$(VERSION).tar.gz config.cache *~ */*~
  392: 
  393: #Some makes (Ultrix, SunOS, IRIX) are so broken, they cannot read the
  394: #Makefile if it contains our dist rules.  Therefore we have put these
  395: #rules in Makedist (you can use them with GNU make on these systems).
  396: dist:		Makedist FORCE
  397: 		$(MAKE) -f Makedist d$@
  398: 
  399: dosdist:	Makedist FORCE
  400: 		$(MAKE) -f Makedist d$@
  401: 
  402: srcdist:	Makedist FORCE
  403: 		$(MAKE) -f Makedist d$@
  404: 
  405: srconlydist:	Makedist FORCE
  406: 		$(MAKE) -f Makedist d$@
  407: 
  408: docdist:	Makedist FORCE
  409: 		$(MAKE) -f Makedist d$@
  410: 
  411: htmldist:	Makedist FORCE
  412: 		$(MAKE) -f Makedist d$@
  413: 
  414: bindist:	Makedist FORCE
  415: 		$(MAKE) -f Makedist d$@
  416: 
  417: binonlydist:	Makedist FORCE
  418: 		$(MAKE) -f Makedist d$@
  419: 
  420: 
  421: #strip gforth, because the debugging stuff is hardly useful once
  422: # gforth manages to execute more than a few primitives
  423: 
  424: #install does not depend on gforth.info, because that would require
  425: #supplying a lot of files that can be easily generated (only info is
  426: #hard to generate)
  427: install:	gforth$(EXE) $(FORTH_SRC) $(kernel_fi) gforth.fi gforthmi doc/gforth.1 prim install.TAGS installdirs
  428: 		touch $(siteforthdir)/siteinit.fs
  429: 		-$(RM) $(bindir)/gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforthmi
  430: 		$(INSTALL_PROGRAM) -s gforth$(EXE) $(bindir)/gforth-$(VERSION)$(EXE)
  431: 		$(LN_S) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforth$(EXE)
  432: 		$(INSTALL_PROGRAM) -s gforth-fast$(EXE) $(bindir)/gforth-fast-$(VERSION)$(EXE)
  433: 		$(LN_S) $(bindir)/gforth-fast-$(VERSION)$(EXE) $(bindir)/gforth-fast$(EXE)
  434: 		$(INSTALL_PROGRAM) gforthmi $(bindir)/gforthmi-$(VERSION)
  435: 		$(LN_S) $(bindir)/gforthmi-$(VERSION) $(bindir)/gforthmi
  436: 		-$(INSTALL_DATA) $(srcdir)/doc/gforth.1 $(man1dir)
  437: 		-for i in $(srcdir)/doc/gforth.info*; do $(INSTALL_DATA) $$i $(infodir); done
  438: 		for i in $(FORTH_SRC) $(COMPAT) prim; do \
  439: 			$(INSTALL_DATA) $(srcdir)/$$i $(datadir)/gforth/$(VERSION)/$$i; \
  440: 		done
  441: 		$(INSTALL_DATA) $(kernel_fi) $(datadir)/gforth/$(VERSION)
  442: 		$(RM) gforth.fi
  443: 		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
  444: 		$(INSTALL_DATA) gforth.fi $(libdir)/gforth/$(VERSION)
  445: 		$(INSTALL_DATA) install.TAGS $(datadir)/gforth/$(VERSION)/TAGS
  446: 		@if test -d "$(emacssitelispdir)"; then \
  447: 			$(INSTALL_DATA) $(srcdir)/gforth.el $(emacssitelispdir); \
  448: 		else \
  449: 			echo ">>>>>Please install $(srcdir)/gforth.el in your .../emacs/site-lisp directory"; \
  450: 		fi
  451: 		@echo ">>>>> Please make an entry for Gforth in your info dir file; e.g.:"; \
  452: 		echo "* Gforth: (gforth).	A fast interpreter for the Forth language."
  453: 
  454: install-strip:	install
  455: 
  456: installdirs:	mkinstalldirs
  457: 		for i in $(bindir) $(man1dir) $(infodir) $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(libdir)/gforth/site-forth $(siteforthdir); do \
  458: 			$(srcdir)/mkinstalldirs $$i; \
  459: 		done
  460: 		for i in $(CVSDIRS); do \
  461: 			$(srcdir)/mkinstalldirs $(datadir)/gforth/$(VERSION)/`dirname $$i`; \
  462: 		done
  463: 		$(RM) -rf $(datadir)/gforth/$(VERSION)/arch $(datadir)/gforth/$(VERSION)/engine
  464: 
  465: #deinstall all files specific to this version of gforth
  466: #to uninstall version foo, type `make uninstall VERSION=foo'
  467: uninstall:	FORCE
  468: 		-$(RM) -rf $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(bindir)/gforth-$(VERSION)$(EXE) $(bindir)/gforthmi-$(VERSION)
  469: 		@echo -e "To remove Gforth completely, type\n$(RM) -rf $(bindir)/gforth$(EXE) $(bindir)/gforthmi $(man1dir)/gforth.1 $(infodir)/gforth.info* $(datadir)/gforth $(libdir)/gforth"
  470: 
  471: check test:	gforth$(EXE) gforth.fi
  472: 		$(FORTH) test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs -e bye
  473: 		$(FORTH) test/other.fs -e bye
  474: 		@echo "Expect 'Missing: EKEY EKEY>CHAR EKEY? EMIT?'"
  475: 		@echo "Expect 'Missing: EDITOR FORGET'"
  476: 		$(FORTH) code.fs test/checkans.fs -e bye
  477: 		@echo 'Expect no differences'
  478: 		$(FORTHK) -m 100000 prims2x.fs -e "s\" $(srcdir)/prim.b\"' output-c process-file bye"| diff -c - $(srcdir)/engine/prim.i
  479: 
  480: bench:		gforth-fast$(EXE) gforth.fi
  481: 		@echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)'
  482: 		time $(FORTH_FAST) siev.fs -e "main bye"
  483: 		time $(FORTH_FAST) bubble.fs -e "main bye"
  484: 		time $(FORTH_FAST) -m 160000 matrix.fs -e "main bye"
  485: 		time $(FORTH_FAST) fib.fs -e "main bye"
  486: 
  487: # -------------	Make forth images
  488: 
  489: # Hot to make new images:
  490: # 1. Produce an image called kernlXYZ.fi-
  491: #    the original kernel.fi is not touched because it's needed for creation
  492: # 2. copy old kernlXYZ.fi to kernlXYZ.fi~
  493: #    that's a backup copy in case the new kernels don't work
  494: # 3. copy new kernels to kernlXYZ.fi
  495: #    these are the ones we want to use now
  496: 
  497: kernl16l.fi-:	$(KERN_SRC) kernel/version.fs mach16l.fs $(FORTH_GEN0)
  498: 		$(FORTHK) -e 's" mach16l.fs"' kernel/main.fs -e "save-cross kernl16l.fi- $(bindir)/gforth-$(VERSION) bye"
  499: 
  500: kernl16b.fi-:	$(KERN_SRC) kernel/version.fs mach16b.fs $(FORTH_GEN0)
  501: 		$(FORTHK) -e 's" mach16b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl16b.fi- $(bindir)/gforth-$(VERSION) bye"
  502: 
  503: kernl32l.fi-:	$(KERN_SRC) kernel/version.fs mach32l.fs $(FORTH_GEN0)
  504: 		$(FORTHK) -e 's" mach32l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32l.fi- $(bindir)/gforth-$(VERSION) bye"
  505: 
  506: kernl32b.fi-:	$(KERN_SRC) kernel/version.fs mach32b.fs $(FORTH_GEN0)
  507: 		$(FORTHK) -e 's" mach32b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32b.fi- $(bindir)/gforth-$(VERSION) bye"
  508: 
  509: kernl64l.fi-:	$(KERN_SRC) kernel/version.fs mach64l.fs $(FORTH_GEN0)
  510: 		$(FORTHK) -e 's" mach64l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64l.fi- $(bindir)/gforth-$(VERSION) bye"
  511: 
  512: kernl64b.fi-:	$(KERN_SRC) kernel/version.fs mach64b.fs $(FORTH_GEN0)
  513: 		$(FORTHK) -e 's" mach64b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64b.fi- $(bindir)/gforth-$(VERSION) bye"
  514: 
  515: kernl-%.fi:	arch/%/mach.fs \
  516: 		$(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
  517: 		$(FORTHK) -e 's" $<"' $(srcdir)/kernel/main.fs -e "save-cross $@- $(bindir)/gforth-$(VERSION) bye"
  518: 		if [ -f `echo $< | sed s/fs/sh/` ]; \
  519: 		then sh `echo $< | sed s/fs/sh/` $@; \
  520: 		else $(CP) $@- $@; \
  521: 		fi
  522: 
  523: arch/%/mach.fs:	arch/%/prim.fs
  524: 
  525: arch/%/prim.fs:	arch/%/asm.fs
  526: 
  527: kernl16b.fi:	$(KERNLS)
  528: 		-$(CP) kernl16b.fi kernl16b.fi~
  529: 		-$(CP) kernl16b.fi- kernl16b.fi
  530: 
  531: kernl16l.fi:	$(KERNLS)
  532: 		-$(CP) kernl16l.fi kernl16l.fi~
  533: 		-$(CP) kernl16l.fi- kernl16l.fi
  534: 
  535: kernl32b.fi:	$(KERNLS)
  536: 		-$(CP) kernl32b.fi kernl32b.fi~
  537: 		-$(CP) kernl32b.fi- kernl32b.fi
  538: 
  539: kernl32l.fi:	$(KERNLS)
  540: 		-$(CP) kernl32l.fi kernl32l.fi~
  541: 		-$(CP) kernl32l.fi- kernl32l.fi
  542: 
  543: kernl64b.fi:	$(KERNLS)
  544: 		-$(CP) kernl64b.fi kernl64b.fi~
  545: 		-$(CP) kernl64b.fi- kernl64b.fi
  546: 
  547: kernl64l.fi:	$(KERNLS)
  548: 		-$(CP) kernl64l.fi kernl64l.fi~
  549: 		-$(CP) kernl64l.fi- kernl64l.fi
  550: 
  551: #kernl%.fi:	kernl%.fi- $(KERNLS)
  552: #		-$(CP) $@ $@~
  553: #		-$(CP) $< $@
  554: 
  555: gforth.fi:	$(kernel_fi) gforthmi gforth$(EXE) gforth-ditc$(EXE) $(GFORTH_FI_SRC)
  556: 		GFORTHD="./gforth-ditc -p .$(PATHSEP)$(srcdir)" GFORTH="./gforth-ditc -p .$(PATHSEP)$(srcdir) -i $(kernel_fi) startup.fs" ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) startup.fs
  557: 
  558: # -------------	Make c-engine
  559: 
  560: prim.b:		prim
  561: 		m4 -s $(srcdir)/prim >$@ 
  562: 
  563: engine/prim.i:		prim.b prims2x.fs
  564: 		$(FORTHK) prims2x.fs -e "s\" prim.b\" ' output-c process-file bye" >$@-
  565: 		$(CP) $@- $@
  566: 		$(RM) $@-
  567: 
  568: engine/prim_lab.i:	prim.b prims2x.fs
  569: 		$(FORTHK) prims2x.fs -e "s\" prim.b\" ' output-label process-file bye" >$@-
  570: 		$(CP) $@- $@
  571: 		$(RM) $@-
  572: 
  573: kernel/aliases.fs:	prim.b prims2x.fs kernel/aliases0.fs
  574: 		$(CP) kernel/aliases0.fs $@-
  575: 		$(FORTHK) prims2x.fs -e "s\" prim.b\" ' output-alias process-file bye" >>$@-
  576: 		$(CP) $@- $@
  577: 		$(RM) $@-
  578: 
  579: kernel/prim.fs:	prim.b prims2x.fs kernel/prim0.fs
  580: 		$(CP) kernel/prim0.fs kernel/prim.fs-
  581: 		$(FORTHK) prims2x.fs -e "s\" prim.b\" ' output-forth process-file bye" >>$@-
  582: 		$(CP) $@- $@
  583: 		$(RM) $@-
  584: 
  585: gforth$(EXE):		engines
  586: 		-$(CP) gforth$(EXE) gforth~
  587: 		$(CP) engine/$@ $@
  588: 		@GFORTH_EXE@
  589: 
  590: gforth-fast$(EXE):	engines
  591: 		$(CP) engine/$@ $@
  592: 		@GFORTHFAST_EXE@
  593: 
  594: gforth-ditc$(EXE):	engines
  595: 		$(CP) engine/$@ $@
  596: 		@GFORTHDITC_EXE@
  597: 
  598: engines:	FORCE engine/Makefile
  599: 		cd engine && $(MAKE) gforth$(EXE) gforth-fast$(EXE) gforth-ditc$(EXE)
  600: 
  601: # ------------- additional C primitives
  602: 
  603: %.c:		%.pri prim2cl.fs
  604: 		$(FORTHK) prim2cl.fs -e "file $< altogether bye" >$@
  605: 
  606: %.so:		%.c
  607: 		$(GCC) -shared $(CFLAGS) $< -o $@
  608: 
  609: # -------------	Make Documentation
  610: 
  611: #TAGS is a GNU standard target
  612: TAGS:		gforth.TAGS
  613: 		$(CP) gforth.TAGS $@
  614: 
  615: install.TAGS:	gforth.TAGS
  616: 		sed 's:^\$(srcdir)/:$(datadir)/gforth/$(VERSION)/:' gforth.TAGS >install.TAGS
  617: 
  618: gforth.TAGS:	@kernel_fi@ gforth $(GFORTH_FI_SRC) prim.TAGS
  619: 		$(FORTHK) etags.fs startup.fs -e bye
  620: 		cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS
  621: 		rm TAGS
  622: 
  623: prim.TAGS: 	prim.b prims2x.fs
  624: 		$(FORTHK) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag process-file bye" >$@-
  625: 		$(CP) $@- $@
  626: 		$(RM) $@-
  627: 
  628: doc/doc.fd:	doc/makedoc.fs $(GFORTH_FI_SRC) code.fs objects.fs oof.fs mini-oof.fs
  629: 		$(FORTHK) -e "s\" doc/doc.fd\"" doc/makedoc.fs startup.fs code.fs objects.fs oof.fs mini-oof.fs -e bye
  630: 
  631: doc/crossdoc.fd:	$(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
  632: 		$(FORTHK) -e 's" mach32l.fs"' kernel/main.fs -e bye
  633: 
  634: doc/gforth.texi:	doc/gforth.ds prim.b ds2texi.fs prims2x.fs \
  635: 		doc/doc.fd doc/crossdoc.fd
  636: 		$(FORTHK) -m 100000 ds2texi.fs prims2x.fs -e "s\" $(srcdir)/prim.b\" ' register-doc process-file" doc/crossdoc.fd doc/doc.fd -e "s\" $(srcdir)/doc/gforth.ds\" r/o open-file throw ds2texi bye" >$@-
  637: 		$(CP) $@- $@
  638: 		$(RM) $@-
  639: 
  640: checkdoc:	doc/gforth.ds prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi
  641: 		$(FORTHK) -m 1M ds2texi.fs prims2x.fs -e "s\" $(srcdir)/prim.b\" ' register-doc process-file" doc/crossdoc.fd doc/doc.fd answords.fs -e bye
  642: 		-grep unknown doc/gforth.texi
  643: 
  644: dvi:		doc/gforth.dvi
  645: 
  646: doc/gforth.dvi doc/gforth.fns:	$(GFORTH_TEXI)
  647: 		cd doc; $(TEXI2DVI) gforth.texi
  648: 
  649: doc/gforth.ps:	doc/gforth.dvi
  650: 		$(DVI2PS) doc/gforth.dvi -o $@
  651: 
  652: info:		doc/gforth.info
  653: 
  654: doc/gforth.info doc/gforth.info-*: $(GFORTH_TEXI)
  655: 		-cd doc; $(MAKEINFO) gforth.texi
  656: 
  657: html:		$(GFORTH_TEXI)
  658: 		-$(RMTREE) html
  659: 		-mkdir html
  660: 		cd html; $(TEXI2HTML) -menu -split_node ../doc/gforth.texi
  661: 
  662: doc/gforth.txt:	$(GFORTH_TEXI)
  663: 		-cd doc; $(MAKEINFO) --no-headers --no-split gforth.texi >gforth.txt
  664: 
  665: doc:		doc/gforth.ps html doc/gforth.txt
  666: 
  667: # For an explanation of the following Makefile rules, see node
  668: # `Automatic Remaking' in GNU Autoconf documentation.
  669: $(srcdir)/configure:	configure.in aclocal.m4
  670: 		cd $(srcdir) && autoconf
  671: 
  672: aclocal.m4:	acinclude.m4 configure.in
  673: 		aclocal
  674: 
  675: # autoheader might not change config.h.in, so touch a stamp file.
  676: engine/config.h.in:	stamp-h.in
  677: stamp-h.in:	configure.in  acconfig.h
  678: 		cd $(srcdir) && autoheader
  679: 		echo timestamp > $(srcdir)/stamp-h.in
  680: 
  681: engine/config.h:	stamp-h
  682: stamp-h:	engine/config.h.in config.status
  683: 		CONFIG_FILES=$@ CONFIG_HEADERS=engine/config.h ./config.status
  684: 		echo timestamp > stamp-h
  685: 
  686: Makefile Makedist engine/Makefile gforthmi:	Makefile.in Makedist.in engine/Makefile.in gforthmi.in config.status
  687: 		CONFIG_FILES="$@" CONFIG_HEADERS=engine/config.h ./config.status
  688: 
  689: config.status:	configure
  690: 		./config.status --recheck
  691: 
  692: 
  693: #create files for DOS, because DOS cannot do it itself
  694: makefile.dos: mkdosmf.sed Makefile.in engine/Makefile.in
  695: 	sed -f mkdosmf.sed <Makefile.in >makefile.dos
  696: 	sed -f mkdosmf.sed <engine/Makefile.in >engine/makefile.dos
  697: 
  698: makefile.os2: mkos2mf.sed Makefile.in engine/Makefile.in
  699: 	sed -f mkos2mf.sed <Makefile.in >makefile.os2
  700: 	sed -f mkos2mf.sed <engine/Makefile.in >engine/makefile.os2
  701: 	echo '%.o:	%.c' >>makefile.os2
  702: 	echo '		$$(GCC) $$(CFLAGS) -c $$<' >>makefile.os2
  703: 	echo '%.o:	%.c' >>engine/makefile.os2
  704: 	echo '		$$(GCC) $$(CFLAGS) -c $$<' >>engine/makefile.os2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>