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>