File:  [gforth] / gforth / Makefile.in
Revision 1.450: download - view: text, annotated - select for diffs
Mon Mar 22 17:08:06 2010 UTC (14 years, 1 month ago) by anton
Branches: MAIN
CVS tags: HEAD
added ARM disassembler (contributed by Andreas Bolka)
some fixes in the ARM assembler (contributed by Andreas Bolka)
ARM assembler and disassembler are now distributed
FCOPYSIGN now works with the strangely ordered floats on ARM

    1: #Makefile for Gforth
    2: 
    3: #Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009 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 3
   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, see http://www.gnu.org/licenses/.
   19: 
   20: # To change the values of `make' variables: instead of editing Makefiles,
   21: # (1) if the variable is set in `config.status', edit `config.status'
   22: #     (which will cause the Makefiles to be regenerated when you run `make');
   23: # (2) otherwise, pass the desired values on the `make' command line.
   24: 
   25: # Warning:
   26: # For some stupid reason setting SHELL to bash does not work properly with
   27: # DOS. If you want to use shell-specific things that must run with DOS make
   28: # an external batch file and call it with bash (see versions.bsh).
   29: 
   30: # ------------- gforth version
   31: 
   32: VERSION	= @PACKAGE_VERSION@
   33: DOSVERSION=`echo $(VERSION)|sed 's/\.//g'|sed 's/-.*//g'`
   34: 
   35: # -------------	System specific variables	
   36: 
   37: machine=@machine@
   38: kernel_fi=@kernel_fi@
   39: EXE=@EXEEXT@
   40: 
   41: # this is the type of machine
   42: # used to extend the include path with ./arch/$machine
   43: # so we can include a machine specific 
   44: # machine.h file
   45: 
   46: PATHSEP = @PATHSEP@
   47: 
   48: EC = @EC@
   49: 
   50: # -------------	Utility programs
   51: 
   52: SHELL	= /bin/sh
   53: RM	= rm
   54: RMTREE	= rm -rf
   55: CP	= cp -p
   56: MV	= mv
   57: TAR	= tar cf -
   58: INSTALL	= @INSTALL@
   59: INSTALL_PROGRAM = @INSTALL_PROGRAM@
   60: MASSAGE_EXE = @MASSAGE_EXE@
   61: INSTALL_SCRIPT = @INSTALL_SCRIPT@
   62: INSTALL_DATA = @INSTALL_DATA@
   63: INSTALL_INFO = @INSTALL_INFO@
   64: LN_S	= @LN_S@
   65: M4      = @M4@
   66: GCC	= @CC@
   67: EMACS   = emacs
   68: LIBTOOL = @GNU_LIBTOOL@
   69: PREFORTH	= ./preforth -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)"
   70: CC	= $(GCC)
   71: FORTHPATH = .$(PATHSEP)$(libdir)/gforth/site-forth$(PATHSEP)$(siteforthdir)$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION)
   72: FORTHSIZES = @FORTHSIZES@
   73: FORTHS_ARGS =  -p "$(FORTHPATH)$(PATHSEP)$(srcdir)"
   74: FORTH_ARGS = --die-on-signal $(FORTHS_ARGS)
   75: ENGINE = ./gforth
   76: FORTH	= $(ENGINE) $(FORTH_ARGS)
   77: FORTHS	= $(ENGINE) $(FORTHS_ARGS)
   78: # the (existing) forth system to use for cross compiling and primitives tables
   79: # per default we use the one in this directory for a rebuild. It is also
   80: # possible to override this variable at the command line for an initial build (jaw)
   81: BUILDFORTH = $(ENGINE) --die-on-signal -m 4M -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
   82: # the forth system plus flags we use to build
   83: FORTHB = $(BUILDFORTH) exboot.fs -e 'fpath= .|~+|$(srcdir)'
   84: # the Forth system for running prims2x.fs
   85: #FORTHP = $(FORTH)
   86: ENGINE_FAST = ./gforth-fast
   87: FORTH_FAST	= $(ENGINE_FAST) $(FORTH_ARGS)
   88: FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
   89: FORTHK	= $(ENGINE) $(FORTHKFLAGS)
   90: #FORTHP	= $(ENGINE) --die-on-signal -i ./$(kernel_fi)
   91: #the "-2 image-included-files +!" undoes the change to image-included-files
   92: # in exboot.fs
   93: STARTUP	= exboot.fs startup.fs @asm_fs@ @disasm_fs@
   94: STRIP	= strip
   95: TEXI2DVI = @TEXI2DVI@
   96: TEXI2PDF = @TEXI2DVI@ --pdf
   97: DVI2PS	= dvips -t letterSize -Z
   98: #you can get texi2html from http://wwwcn.cern.ch/dci/texi2html/
   99: MAKEINFO = makeinfo
  100: TEXI2HTML = texi2html
  101: 
  102: # -------------	Compiler Flags
  103: 
  104: XCFLAGS	= @CFLAGS@
  105: XDEFINES = @DEFS@
  106: SWITCHES = $(XCFLAGS) $(XDEFINES) $(OPTDEFINES) #-DNDEBUG #turn off assertions
  107: ENGINE_FLAGS = @ENGINE_FLAGS@ -fno-defer-pop -fcaller-saves
  108: DEBUGFLAG = @DEBUGFLAG@
  109: CFLAGS	= $(DEBUGFLAG) -I$(srcdir)/engine -I$(srcdir)/arch/$(machine) -O3 -Wall $(SWITCHES) -DDEFAULTPATH='"$(FORTHPATH)"'
  110: CPPFLAGS = @CPPFLAGS@
  111: 
  112: #John Wavrik should use -Xlinker -N to get a writable text (executable)
  113: XLDFLAGS = @LDFLAGS@
  114: LDFLAGS	=  $(DEBUGFLAG) $(XLDFLAGS)
  115: LDLIBS	= @LIBS@
  116: 
  117: STACK_CACHE_REGS = @STACK_CACHE_REGS@
  118: STACK_CACHE_DEFAULT_FAST = @STACK_CACHE_DEFAULT_FAST@
  119: 
  120: # ------------	Install Directories
  121: 
  122: VPATH = @srcdir@
  123: prefix = @prefix@
  124: exec_prefix = @exec_prefix@
  125: srcdir = @srcdir@
  126: bindir = @bindir@
  127: #read-only architecture-independent files
  128: datarootdir = @datarootdir@
  129: datadir = @datadir@
  130: #read-only architecture-dependent non-ascii files
  131: libdir = @libdir@
  132: libccdir = $(libdir)/gforth/$(VERSION)/libcc-named/
  133: includedir = @includedir@
  134: infodir = @infodir@
  135: htmldir = @htmldir@
  136: mandir = @mandir@
  137: man1dir= $(mandir)/man1
  138: man1ext= .1
  139: #older emacses have their site-lisp in $(libdir)/emacs/
  140: emacssitelispdir=@lispdir@
  141: siteforthdir=$(datadir)/gforth/site-forth
  142: 
  143: PROFOBJS = @PROFOBJS@
  144: PROFEXES = @PROFEXES@
  145: 
  146: INSTALLDIRS = kernel doc asm ec test \
  147: 	compat unix \
  148: 	arch arch/generic arch/m68k arch/mips \
  149: 	arch/386 arch/hppa arch/sparc arch/power \
  150: 	arch/alpha arch/4stack arch/misc arch/6502 \
  151: 	arch/8086 arch/avr arch/c165 arch/h8 \
  152: 	arch/shboom arch/sharc arch/ia64 arch/amd64 \
  153: 	arch/arm arch/r8c
  154: 
  155: INCLUDES = engine/forth.h engine/threaded.h engine/io.h engine/longlong.h
  156: 
  157: KERN_SRC = \
  158: 	mach16b.fs mach16l.fs mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
  159: 	machpc.fs.in \
  160: 	kernel/aliases0.fs \
  161: 	kernel/aliases.fs \
  162: 	kernel/args.fs \
  163: 	kernel/cbr.fs \
  164: 	kernel/cloop.fs \
  165: 	kernel/cond.fs \
  166: 	kernel/cond-old.fs \
  167: 	cross.fs \
  168: 	kernel/errore.fs \
  169: 	kernel/files.fs \
  170: 	kernel/require.fs \
  171: 	kernel/paths.fs \
  172: 	kernel/kernel.fs \
  173: 	kernel/main.fs \
  174: 	kernel/prim0.fs \
  175: 	search.fs \
  176: 	kernel/quotes.fs \
  177: 	kernel/tools.fs \
  178: 	kernel/toolsext.fs \
  179: 	kernel/vars.fs \
  180: 	kernel/accept.fs \
  181: 	kernel/basics.fs \
  182: 	kernel/int.fs \
  183: 	kernel/comp.fs \
  184: 	kernel/io.fs \
  185: 	kernel/input.fs \
  186: 	kernel/license.fs \
  187: 	kernel/nio.fs \
  188: 	kernel/saccept.fs \
  189: 	kernel/doers.fs \
  190: 	kernel/getdoers.fs \
  191: 	kernel/pass.fs \
  192: 	kernel/xchars.fs
  193: 
  194: EC_SRC = \
  195: 	asm/README \
  196: 	asm/bitmask.fs \
  197: 	asm/numref.fs \
  198: 	chains.fs \
  199: 	asm/basic.fs \
  200: 	asm/generic.fs \
  201: 	asm/target.fs \
  202: 	ec/README \
  203: 	ec/mirror.fs \
  204: 	ec/shex.fs \
  205: 	ec/builttag.fs \
  206: 	ec/dotx.fs \
  207: 	ec/nesting.fs \
  208: 	build-ec.in
  209: 
  210: GFORTH_FI_SRC = \
  211: 	assert.fs \
  212: 	backtrac.fs \
  213: 	blocked.fb \
  214: 	blocks.fs \
  215: 	bufio.fs \
  216: 	code.fs \
  217: 	debug.fs \
  218: 	debugs.fs \
  219: 	dis-gdb.fs \
  220: 	ekey.fs \
  221: 	envos.fs \
  222: 	savesys.fs \
  223: 	environ.fs \
  224: 	errors.fs \
  225: 	exboot.fs \
  226: 	except.fs \
  227: 	extend.fs \
  228: 	float.fs \
  229: 	glocals.fs \
  230: 	hash.fs \
  231: 	history.fs \
  232: 	intcomp.fs \
  233: 	mkdir.fs \
  234: 	libcc.fs \
  235: 	locals.fs \
  236: 	look.fs \
  237: 	mkdir.fs \
  238: 	prelude.fs \
  239: 	quotes.fs \
  240: 	search.fs \
  241: 	see.fs \
  242: 	see-ext.fs \
  243: 	simp-see.fs \
  244: 	source.fs \
  245: 	startup.fs \
  246: 	struct.fs \
  247: 	struct0x.fs \
  248: 	stuff.fs \
  249: 	tasker.fs \
  250: 	termsize.fs \
  251: 	utf-8.fs \
  252: 	vt100.fs \
  253: 	vt100key.fs \
  254: 	wordinfo.fs \
  255: 	arch/386/asm.fs arch/386/disasm.fs \
  256: 	arch/amd64/asm.fs arch/amd64/disasm.fs \
  257: 	arch/alpha/asm.fs arch/alpha/disasm.fs arch/alpha/testasm.fs\
  258: 	arch/arm/asm.fs arch/arm/disasm.fs \
  259: 	arch/arm/testdisasm.fs arch/arm/testdisasm.out arch/arm/Makefile \
  260: 	arch/mips/asm.fs arch/mips/disasm.fs arch/mips/insts.fs \
  261: 	arch/mips/testasm.fs arch/mips/testdisasm.fs \
  262: 	arch/power/asm.fs arch/power/disasm.fs arch/power/inst.fs
  263: 
  264: LIBCC_SRC = cstr.fs unix/socket.fs
  265: 
  266: LIBCC_DIST_SRC = libffi.fs fflib.fs $(LIBCC_SRC)
  267: 
  268: LIBCC_BUILD_SRC = @LIBCC_BUILD_SRC@ $(LIBCC_SRC)
  269: 
  270: FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_SRC) $(EC_SRC) $(LIBCC_DIST_SRC) \
  271: 	ans-report.fs ansi.fs answords.fs \
  272: 	colorize.fs comp-i.fs complex.fs \
  273: 	depth-changes.fs dosekey.fs doskey.fs ds2texi.fs \
  274: 	envos.dos envos.os2 etags.fs fft.fs filedump.fs fi2c.fs \
  275: 	fsl-util.4th glosgen.fs gray.fs httpd.fs install-tags.fs \
  276: 	make-app.fs doc/makedoc.fs locate.fs more.fs onebench.fs \
  277: 	other.fs prims2x.fs prims2x0.6.2.fs proxy.fs random.fs \
  278: 	regexp.fs sokoban.fs string.fs table.fs tags.fs \
  279: 	tt.fs \
  280: 	unbuffer.fs wordsets.fs xwords.fs \
  281: 	test/tester.fs test/ttester.fs \
  282: 	test/coretest.fs test/postpone.fs test/dbltest.fs \
  283: 	test/string.fs test/float.fs test/search.fs test/gforth.fs \
  284: 	test/other.fs test/signals.fs test/checkans.fs \
  285: 	test/primtest.fs test/coreext.fs test/deferred.fs \
  286: 	test/coremore.fs test/gforth-nofast.fs test/libcc.fs \
  287: 	test/macros.fs \
  288: 	bubble.fs siev.fs matrix.fs fib.fs \
  289: 	oof.fs oofsampl.fs objects.fs objexamp.fs mini-oof.fs moof-exm.fs \
  290: 	moofglos.fs fixpath.fs \
  291: 	add.fs lib.fs oldlib.fs sieve.fs \
  292: 	endtry-iferror.fs recover-endtry.fs
  293: 
  294: COMPAT = compat/README \
  295: 	compat/anslocal.fs \
  296: 	compat/assert.fs \
  297: 	compat/control.fs \
  298: 	compat/defer.fs \
  299: 	compat/exception.fs \
  300: 	compat/execute-parsing.fs \
  301: 	compat/loops.fs \
  302: 	compat/macros.fs \
  303: 	compat/required.fs \
  304: 	compat/strcomp.fs \
  305: 	compat/struct.fs \
  306: 	compat/vocabulary.fs
  307: 
  308: GFORTH_TEXI =  doc/gforth.texi doc/version.texi
  309: 
  310: VMGEN_TEXI = doc/vmgen.texi doc/version.texi doc/fdl.texi
  311: 
  312: ALLSUBDIRS = engine
  313: 
  314: ARCHS =	\
  315: 	arch/generic/machine.h \
  316: 	arch/m68k/machine.h \
  317: 	arch/mips/machine.h \
  318: 	arch/386/machine.h \
  319: 	arch/hppa/machine.h \
  320: 	arch/hppa/cache.c \
  321: 	arch/sparc/machine.h \
  322: 	arch/power/machine.h \
  323: 	arch/power/_sync_cache_range.c \
  324: 	arch/alpha/machine.h \
  325: 	arch/arm/machine.h \
  326: 	arch/arm/cacheflush0.c \
  327: 	arch/arm/cacheflush-linux.c \
  328: 	arch/ia64/machine.h \
  329: 	arch/ia64/flush_icache_block.c \
  330: 	arch/amd64/machine.h \
  331: 	arch/4stack/README \
  332: 	arch/4stack/asm.fs \
  333: 	arch/4stack/mach.fs \
  334: 	arch/4stack/prim.fs \
  335: 	arch/4stack/mach.sh \
  336: 	arch/4stack/relocate.fs \
  337: 	arch/misc/README \
  338: 	arch/misc/asm.fs \
  339: 	arch/misc/mach.fs \
  340: 	arch/misc/optcmove.fs \
  341: 	arch/misc/prim.fs \
  342: 	arch/misc/sim.fs \
  343: 	arch/misc/sokoban.fs \
  344: 	arch/misc/tt.fs \
  345: 	arch/6502/prim.fs \
  346: 	arch/6502/mach.fs \
  347: 	arch/shboom/asm.fs \
  348: 	arch/shboom/compiler.fs \
  349: 	arch/shboom/dis.fs \
  350: 	arch/shboom/mach.fs \
  351: 	arch/shboom/prim.fs \
  352: 	arch/shboom/dis2.fs \
  353: 	arch/shboom/sh.p \
  354: 	arch/shboom/doers.fs \
  355: 	arch/sharc/mach.fs \
  356: 	arch/sharc/machine.h \
  357: 	arch/sharc/compile.sharc \
  358: 	arch/sharc/systypes.h \
  359: 	arch/sharc/types.h \
  360: 	arch/sharc/g21k-3.3.4-bp1.diff \
  361: 	arch/r8c/asm.fs \
  362: 	arch/r8c/mach.fs \
  363: 	arch/r8c/errors.fs \
  364: 	arch/r8c/prim.fs \
  365: 	arch/r8c/asm-test.fs \
  366: 	arch/r8c/errors.fs \
  367: 	arch/r8c/lauflicht.fs \
  368: 	arch/r8c/tasker.fs \
  369: 	arch/r8c/terminal.fs \
  370: 	arch/sharc/unistd.h
  371: 
  372: #not included in distribution until distribution terms are included:
  373: ARCHS_NO_DIST = \
  374: 	arch/6502/asm.fs \
  375: 	arch/6502/cold.fs \
  376: 	arch/6502/softuart.fs \
  377: 	arch/6502/zero.fs \
  378: 	arch/8086/asm.fs \
  379: 	arch/8086/mach.fs \
  380: 	arch/8086/mach.sh \
  381: 	arch/8086/prim.fs \
  382: 	arch/avr/asm.fs \
  383: 	arch/c165/asm.fs \
  384: 	arch/c165/mach.fs \
  385: 	arch/c165/prim.fs \
  386: 	arch/h8/asm.fs \
  387: 	arch/r8c/tt.fs
  388: 
  389: VMGEN_EX = vmgen-ex/Makefile vmgen-ex/README vmgen-ex/disasm.c \
  390: 	vmgen-ex/engine.c vmgen-ex/fib.mini \
  391: 	vmgen-ex/mini-inst.vmg vmgen-ex/mini-super.vmg vmgen-ex/mini.h \
  392: 	vmgen-ex/mini.l vmgen-ex/mini.y vmgen-ex/peephole-blacklist \
  393: 	vmgen-ex/peephole.c vmgen-ex/profile.c vmgen-ex/seq2rule.awk \
  394: 	vmgen-ex/simple.mini vmgen-ex/stat.awk vmgen-ex/support.c \
  395: 	vmgen-ex/test.mini vmgen-ex/test.out
  396: 
  397: VMGEN_EX2 = $(VMGEN_EX:vmgen-ex/%=vmgen-ex2/%)
  398: 
  399: ENGINE_SOURCES = engine/Makefile.in engine/config.h.in \
  400: 	engine/engine.c engine/main.c \
  401: 	engine/io.c engine/support.c engine/signals.c engine/libcc.h.in \
  402: 	engine/profile.c engine/128bit.h \
  403: 	engine/getopt.c engine/getopt1.c engine/getopt.h engine/select.c \
  404: 	engine/ecvt.c engine/memcmp.c engine/rint.c \
  405: 	engine/strtol.c engine/strtoul.c \
  406: 	engine/ansidecl.h engine/memmove.c \
  407: 	engine/pow10.c engine/atanh.c engine/cleanalign.c \
  408: 	engine/strerror.c engine/strsignal.c engine/dblsub.c \
  409: 	engine/fnmatch.h engine/fnmatch.c \
  410: 	engine/makefile.dos engine/makefile.os2
  411: 
  412: SOURCES	= $(ENGINE_SOURCES) compat Makefile.in Makedist.in \
  413: 	gforthmi.in vmgen.in preforth.in gfgen README.vmgen NEWS.vmgen \
  414: 	autogen.sh configure.in configure config.sub config.guess \
  415: 	elisp-comp missing stamp-h.in envos.fs.in \
  416: 	iss.sh install-sh INSTALL INSTALL.BINDIST NEWS README ToDo BUGS \
  417: 	BUILD-FROM-SCRATCH model \
  418: 	COPYING COPYING.LIB COPYING.DOC AUTHORS ChangeLog Benchres aclocal.m4 \
  419: 	doc/gforth.ds doc/gforth.1 doc/version.texi.in \
  420: 	doc/vmgen.texi doc/fdl.texi doc/gpl.texi \
  421: 	gforth.el \
  422: 	$(ARCHS) \
  423: 	INSTALL.DOS makefile.dos mkdosmf.sed config.bat \
  424: 	dosconf.h gforthmi.bat mkinstalldirs siteinit.fs \
  425: 	versions.bsh \
  426: 	configure.cmd mkos2mf.sed os2conf.h makefile.os2 \
  427: 	gforthmi.cmd glosgen.glo doc/glossaries.doc \
  428: 	$(INCLUDES) $(FORTH_SRC) $(COMPAT) $(VMGEN_EX) $(VMGEN_EX2) \
  429: 	timings.sc \
  430: 	test/coretest.out test/checkans.out test/gforth.out \
  431: 	cache*.vmg peeprules.vmg prim
  432: 
  433: RCS_FILES =  ToDo model high-level
  434: 
  435: ENGINES = gforth$(EC)$(EXE) @NO_EC@ gforth-ditc$(EC)$(EXE) gforth-itc$(EC)$(EXE) $(PROFEXES)
  436: 
  437: ENGINES_FAST = @NO_EC@ gforth-fast$(OPT)$(EC)$(EXE) #gforth-native$(OPT)$(EC)$(EXE) 
  438: 
  439: GEN = $(ENGINES) $(ENGINES_FAST) gforth.elc
  440: 
  441: # things that need a working forth system to be generated
  442: FORTH_GEN_ENGINE=engine/prim.i engine/prim_lab.i engine/prim_names.i \
  443: 	engine/prim_superend.i engine/profile.i \
  444: 	engine/prim_num.i engine/prim_grp.i \
  445: 	engine/costs.i engine/super2.i
  446: FORTH_GEN_ENGINE_FAST= \
  447: 	engine/prim-fast.i engine/prim_lab-fast.i engine/prim_names-fast.i \
  448: 	engine/prim_superend-fast.i engine/profile-fast.i \
  449: 	engine/prim_num-fast.i engine/prim_grp-fast.i \
  450: 	engine/costs-fast.i engine/super2-fast.i
  451: FORTH_GEN_PRIMB = $(FORTH_GEN_ENGINE) kernel/aliases.fs kernel/prim.fs
  452: FORTH_GEN0 = prim.b $(FORTH_GEN_PRIMB)
  453: FORTH_GEN =  $(FORTH_GEN0) @KERNEL@ @NO_EC@ gforth.fi
  454: # this is used for antidependences,
  455: FORTH_GEN1 = $(FORTH_GEN0) @kernel_fi@ build-ec
  456: 
  457: #kernel dependencies
  458: KERN_DEPS = $(KERN_SRC) kernel/version.fs machpc.fs $(FORTH_GEN0) compat/strcomp.fs
  459: 
  460: #distributed documentation
  461: DOCDIST = doc/gforth.info doc/gforth.info-* doc/gforth.ps \
  462: 	  doc/vmgen.info doc/vmgen.ps
  463: 
  464: BKERNLS = kernl16b$(EC).fi kernl16l$(EC).fi \
  465: 	  kernl32b$(EC).fi kernl32l$(EC).fi \
  466: 	  kernl64b$(EC).fi kernl64l$(EC).fi
  467: 
  468: KERNLS = kernl16b$(EC).fi- kernl16l$(EC).fi- \
  469: 	 kernl32b$(EC).fi- kernl32l$(EC).fi- \
  470: 	 kernl64b$(EC).fi- kernl64l$(EC).fi-
  471: 
  472: # -------------        Make forth images
  473: GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) \
  474: 	doc/gforth.texi doc/gforth.dvi doc/gforth.ps \
  475: 	doc/vmgen.dvi doc/vmgen.ps \
  476: 	Makefile Makedist engine/Makefile configure
  477: 
  478: #standards.info recommends this:
  479: .SUFFIXES:
  480: .SUFFIXES: .c .o
  481: 
  482: all: kernel/version.fs more @NO_EC@ check
  483: 
  484: # use this dependency for phony targets just as mostlyclean,...
  485: FORCE: ;
  486: 
  487: #targets of failed commands should be deleted:
  488: .DELETE_ON_ERROR:
  489: 
  490: #this rule avoids remaking everything after minor changes in Makefile.in
  491: version:	Makefile.in configure.in
  492: 		if test -r $@ && test x'$(VERSION)' = x`cat $@` ; then true ; else echo $(VERSION) > $@ ; fi
  493: 
  494: # With dos we use normal dos echo
  495: # we cannot pipe the output to engine/version.h directly because
  496: # of the "/ and \" problem. Copying works because we use the
  497: # shell und file utilities.
  498: 
  499: kernel/version.fs:	version
  500: 	echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs
  501: 
  502: more:	$(ENGINES) $(FORTH_GEN) $(GEN) @build_libcc_named@
  503: 
  504: #from the gcc Makefile: 
  505: #"Deletion of files made during compilation.
  506: # There are four levels of this:
  507: #   `mostlyclean', `clean', `distclean' and `realclean'.
  508: # `mostlyclean' is useful while working on a particular type of machine.
  509: # It deletes most, but not all, of the files made by compilation.
  510: # It does not delete libgcc.a or its parts, so it won't have to be recompiled.
  511: # `clean' deletes everything made by running `make all'.
  512: # `distclean' also deletes the files made by config.
  513: # `realclean' also deletes everything that could be regenerated automatically."
  514: 
  515: mostlyclean:	FORCE
  516: 		-$(RM) -rf engine/*.s gforth.fi *.fi~ *.fi- kernel/version.fs \
  517: 		*TAGS gforth~ \
  518: 		doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
  519: 		doc/gforth.aux doc/gforth.cp doc/gforth.cps \
  520: 		doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
  521: 		doc/gforth.pg \
  522: 		doc/gforth.toc doc/gforth.tp doc/gforth.vr html \
  523: 		gforth-$(VERSION).tar.gz
  524: 
  525: # Just the stuff needed to rebuild the documentation nac03feb1999
  526: docclean:	FORCE
  527: 		-$(RM) -rf doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
  528: 		doc/gforth.aux doc/gforth.cp doc/gforth.cps \
  529: 		doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
  530: 		doc/gforth.pg \
  531: 		doc/gforth.toc doc/gforth.tp doc/gforth.vr html
  532: 
  533: clean:		mostlyclean
  534: 	-$(RM) -rf $(GEN) *.o engine/*.o arch/*/*.o version \
  535: 	gforth-itc-noll$(EC)$(EXE)  engine/gforth-itc-noll$(EC)$(EXE)  \
  536: 	gforth-ditc-noll$(EC)$(EXE) engine/gforth-ditc-noll$(EC)$(EXE) \
  537: 	gforth-prof-noll$(EC)$(EXE) engine/gforth-prof-noll$(EC)$(EXE) \
  538: 	engine/prim-s.i
  539: 	for i in gforth gforth-fast gforth-native; do for j in $(OPTS); do rm -f engine/$$i$${j}$(EC)$(EXE) $$i$${j}$(EC)$(EXE); done; done
  540: 
  541: distclean:	clean
  542: 		-$(RM) -rf config.cache config.log config.status \
  543: 		engine/config.h Makefile Makedist engine/Makefile \
  544: 		stamp-h engine/stamp-h \
  545: 		doc/version.texi gforthmi vmgen preforth \
  546: 		prim-fast.b $(FORTH_GEN_ENGINE_FAST)
  547: 
  548: #realclean is useless, but dangerous, so it's commented out
  549: realclean:	distclean
  550: 		-$(RM) -rf $(GEN_PRECIOUS) `cat .cvsignore`
  551: 
  552: #mostlyclean, but also remove some of the stuff that is distributed
  553: virtualclean:	mostlyclean
  554: 		-$(RM) -rf gforth.fns gforth.texi gforth.ps gforth.info* \
  555: 		gforth-$(VERSION).tar.gz config.cache *~ */*~
  556: 
  557: maintainer-clean: realclean
  558: 
  559: #Some makes (Ultrix, SunOS, IRIX) are so broken, they cannot read the
  560: #Makefile if it contains our dist rules.  Therefore we have put these
  561: #rules in Makedist (you can use them with GNU make on these systems).
  562: 
  563: dist:		Makedist FORCE
  564: 		$(MAKE) -f Makedist d$@
  565: 
  566: dosdist:	Makedist FORCE
  567: 		$(MAKE) -f Makedist d$@
  568: 
  569: srcdist:	Makedist FORCE
  570: 		$(MAKE) -f Makedist d$@
  571: 
  572: srconlydist:	Makedist FORCE
  573: 		$(MAKE) -f Makedist d$@
  574: 
  575: docdist:	Makedist FORCE
  576: 		$(MAKE) -f Makedist d$@
  577: 
  578: htmldist:	Makedist FORCE
  579: 		$(MAKE) -f Makedist d$@
  580: 
  581: bindist:	Makedist FORCE
  582: 		$(MAKE) -f Makedist d$@
  583: 
  584: binonlydist:	Makedist FORCE
  585: 		$(MAKE) -f Makedist d$@
  586: 
  587: #HPUX make breaks the cycle differently when the dates are equal, so
  588: # touch some of the files if it acts up
  589: hpux-workaround:
  590: 	touch $(FORTH_GEN_PRIMB)
  591: 
  592: #strip gforth, because the debugging stuff is hardly useful once
  593: # gforth manages to execute more than a few primitives.
  594: 
  595: #install does not depend on gforth.info, because that would require
  596: #supplying a lot of files that can be easily generated (only info is
  597: #hard to generate).
  598: #we rebuild gforth.fi, because it contains some path names.
  599: #we delete $build/gforth.fi and $build/install.TAGS after installation because of ownership.
  600: install:	gforth$(EC)$(EXE) $(FORTH_SRC) $(kernel_fi) gforth.fi gforthmi vmgen doc/gforth.1 prim install.TAGS installdirs
  601: 		$(NORMAL_INSTALL)
  602: 		touch $(DESTDIR)$(siteforthdir)/siteinit.fs
  603: 		-$(RM) $(DESTDIR)$(bindir)/gforth$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-$(VERSION)$(EC)$(EXE) $(DESTDIR)$(bindir)/gforthmi $(DESTDIR)$(bindir)/vmgen
  604: 		-$(RM) $(DESTDIR)$(bindir)/gforth-fast$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-fast-$(VERSION)$(EC)$(EXE)
  605: 		-$(RM) $(DESTDIR)$(bindir)/gforth-itc$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-itc-$(VERSION)$(EC)$(EXE)
  606: 		$(INSTALL_PROGRAM) gforth$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-$(VERSION)$(EC)$(EXE)
  607: 		-$(MASSAGE_EXE) $(DESTDIR)$(bindir)/gforth-$(VERSION)$(EC)$(EXE)
  608: 		(cd $(DESTDIR)$(bindir) && $(LN_S) gforth-$(VERSION)$(EC)$(EXE) gforth$(EC)$(EXE))
  609: 		$(INSTALL_PROGRAM) gforth-fast$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-fast-$(VERSION)$(EC)$(EXE)
  610: 		-$(MASSAGE_EXE) $(DESTDIR)$(bindir)/gforth-fast-$(VERSION)$(EC)$(EXE)
  611: 		(cd $(DESTDIR)$(bindir) && $(LN_S) gforth-fast-$(VERSION)$(EC)$(EXE) gforth-fast$(EC)$(EXE))
  612: 		$(INSTALL_PROGRAM) gforth-itc$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-itc-$(VERSION)$(EC)$(EXE)
  613: 		(cd $(DESTDIR)$(bindir) && $(LN_S) gforth-itc-$(VERSION)$(EC)$(EXE) gforth-itc$(EC)$(EXE))
  614: 		$(INSTALL_SCRIPT) gforthmi $(DESTDIR)$(bindir)/gforthmi-$(VERSION)
  615: 		$(INSTALL_SCRIPT) vmgen $(DESTDIR)$(bindir)/vmgen-$(VERSION)
  616: 		$(INSTALL_PROGRAM) gforth-ditc $(DESTDIR)$(libdir)/gforth/$(VERSION)
  617: 		(cd $(DESTDIR)$(bindir) && $(LN_S) gforthmi-$(VERSION) gforthmi)
  618: 		(cd $(DESTDIR)$(bindir) && $(LN_S) vmgen-$(VERSION) vmgen)
  619: 		-$(INSTALL_DATA) $(srcdir)/doc/gforth.1 $(DESTDIR)$(man1dir)
  620: 		-for i in $(srcdir)/doc/gforth.info* $(srcdir)/doc/vmgen.info*; do $(INSTALL_DATA) $$i $(DESTDIR)$(infodir); done
  621: 		for i in $(FORTH_SRC) $(COMPAT) prim; do \
  622: 			$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(datadir)/gforth/$(VERSION)/$$i; \
  623: 		done
  624: 		$(INSTALL_DATA) $(kernel_fi) $(DESTDIR)$(datadir)/gforth/$(VERSION)
  625: 		@if test -d "$(DESTDIR)$(emacssitelispdir)"; then \
  626: 			$(INSTALL_DATA) gforth.el $(DESTDIR)$(emacssitelispdir); \
  627: 			$(INSTALL_DATA) gforth.elc $(DESTDIR)$(emacssitelispdir); \
  628: 		else \
  629: 			echo '>>>>>Please install gforth.{el,elc} in your .../emacs/site-lisp directory'; \
  630: 		fi
  631: 		-$(RM) gforth.fi
  632: 		GFORTHD="./gforth-ditc -p $(DESTDIR)$(libdir)/gforth/site-forth$(PATHSEP)$(DESTDIR)$(siteforthdir)$(PATHSEP)$(DESTDIR)$(datadir)/gforth/$(VERSION) -i $(kernel_fi)" GFORTH="./gforth-ditc -p $(DESTDIR)$(libdir)/gforth/site-forth$(PATHSEP)$(DESTDIR)$(siteforthdir)$(PATHSEP)$(DESTDIR)$(datadir)/gforth/$(VERSION) --die-on-signal -i $(kernel_fi) $(STARTUP)" includedir=$(includedir) bindir=$(bindir) libccdir=$(libccdir) GFORTHPATH=.:"$$GFORTHPATH" GFORTHDESTDIR="$(DESTDIR)" ./gforthmi gforth.fi $(FORTHSIZES) $(STARTUP)
  633: 		$(INSTALL_DATA) gforth.fi $(DESTDIR)$(libdir)/gforth/$(VERSION)
  634: 		$(INSTALL_DATA) install.TAGS $(DESTDIR)$(datadir)/gforth/$(VERSION)/TAGS
  635: 		$(RM) gforth.fi install.TAGS
  636: 		$(INSTALL_DATA) include/gforth/$(VERSION)/* $(DESTDIR)$(includedir)/gforth/$(VERSION)
  637: 		if test -n "$(LIBTOOL)"; then for i in $(LIBCC_BUILD_SRC); do \
  638: 		   $(LIBTOOL) --silent --mode=install $(INSTALL) lib/gforth/$(VERSION)/libcc-named/`basename $$i .fs`.la $(DESTDIR)$(libccdir)`basename $$i .fs`.la; \
  639: 		done; fi
  640: 		$(POST_INSTALL)
  641: 		$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/gforth.info
  642: 		$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/vmgen.info
  643: 
  644: install-strip:	install
  645: 
  646: installdirs:	mkinstalldirs
  647: 		$(NORMAL_INSTALL)
  648: 		for i in $(bindir) $(man1dir) $(infodir) $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(libdir)/gforth/site-forth $(siteforthdir) $(includedir)/gforth/$(VERSION) $(libccdir); do \
  649: 			$(srcdir)/mkinstalldirs $(DESTDIR)$$i; \
  650: 		done
  651: 		#
  652: 		for i in $(INSTALLDIRS); do \
  653: 			$(srcdir)/mkinstalldirs $(DESTDIR)$(datadir)/gforth/$(VERSION)/$$i; \
  654: 		done
  655: 
  656: #deinstall all files specific to this version of gforth
  657: #to uninstall version foo, type `make uninstall VERSION=foo'
  658: uninstall:	FORCE
  659: 		$(NORMAL_UNINSTALL)
  660: 		-$(RM) -rf $(DESTDIR)$(libdir)/gforth/$(VERSION) $(DESTDIR)$(datadir)/gforth/$(VERSION) $(DESTDIR)$(bindir)/gforth-$(VERSION)$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-fast-$(VERSION)$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-itc-$(VERSION)$(EC)$(EXE) $(DESTDIR)$(bindir)/gforthmi-$(VERSION) $(DESTDIR)$(bindir)/vmgen-$(VERSION) $(DESTDIR)$(includedir)/gforth/$(VERSION)
  661: 		@echo -e "To remove Gforth completely, type\n$(RM) -rf $(DESTDIR)$(bindir)/gforth$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-fast$(EC)$(EXE) $(DESTDIR)$(bindir)/gforth-itc$(EC)$(EXE) $(DESTDIR)$(bindir)/gforthmi $(DESTDIR)$(bindir)/vmgen $(DESTDIR)$(man1dir)/gforth.1 $(DESTDIR)$(infodir)/gforth.info* $(DESTDIR)$(datadir)/gforth $(DESTDIR)$(libdir)/gforth"
  662: 
  663: build-libcc-named: $(LIBCC_BUILD_SRC) $(FORTH_GEN) $(GEN) FORCE
  664: 		$(RMTREE) lib/gforth/$(VERSION)/libcc-named/
  665: 		for i in $(LIBCC_BUILD_SRC); do ./gforth -e "s\" `pwd`/lib/gforth/$(VERSION)/libcc-named/\" libcc-named-dir-v 2! libcc-path clear-path libcc-named-dir libcc-path also-path :noname 2drop s\" $(libccdir)\" ; is replace-rpath" $(srcdir)/$$i -e bye; done
  666: 
  667: check:		gforths	gforth.fi 
  668: 		$(MAKE) checkone check-nofast ENGINE="./gforth --no-dynamic" >/dev/null 2>&1
  669: 		$(MAKE) checkone check-nofast ENGINE="./gforth-itc" >/dev/null 2>&1
  670: 		$(MAKE) checkone check-nofast ENGINE="./gforth-ditc" >/dev/null 2>&1
  671: 		$(MAKE) checkone ENGINE="./gforth-fast --no-dynamic" >/dev/null 2>&1
  672: 		$(MAKE) checkone check-nofast ENGINE="./gforth" >/dev/null 2>&1
  673: 		$(MAKE) checkone ENGINE="./gforth-fast" >/dev/null 2>&1
  674: 		@echo "*** Check successful ***"
  675: 		./gforth-fast --diag -e bye
  676: 
  677: checkone test: gforth.fi engine/prim-s.i
  678: 		$(FORTH) test/tester.fs test/coretest.fs test/postpone.fs test/dbltest.fs test/string.fs test/float.fs test/deferred.fs test/coreext.fs test/search.fs -e bye 2>&1 | tr -d '\015' | diff -c - $(srcdir)/test/coretest.out
  679: 		$(FORTH) test/other.fs -e bye
  680: 		$(FORTHS) test/signals.fs -e bye
  681: 		$(FORTHS) test/coremore.fs test/gforth.fs test/macros.fs -e bye 2>&1 | tr -d '\015' | diff -c - $(srcdir)/test/gforth.out
  682: 		$(FORTH) code.fs test/checkans.fs -e bye | tr -d '\015' | diff -c - $(srcdir)/test/checkans.out
  683: 		$(FORTH) prims2x.fs -e \
  684: 		  "c-flag on s\" prim.i\" out-filename 2! s\" $(srcdir)/prim.b\" ' output-c ' output-c-combined process-file bye"| \
  685: 		  tr -d '\015' | grep -v '^#line '|diff -c - engine/prim-s.i
  686: 
  687: check-nofast: gforth.fi
  688: 		$(FORTHS) test/gforth-nofast.fs -e bye
  689: 
  690: test/primtest.fi: test/primtest.fs mach32l.fs cross.fs
  691: 		$(FORTHB) -e 's" mach32l.fs"' $(srcdir)/test/primtest.fs -e "save-cross $@ $(bindir)/gforth-$(VERSION) bye"
  692: 
  693: primtest:	gforth gforth-native test/primtest.fi FORCE
  694: 		(echo rs|ENVVAR=bla ./gforth -i test/primtest.fi) && (echo rs|ENVVAR=bla ./gforth-native -i test/primtest.fi); echo $$?
  695: 
  696: bench:		gforth-fast$(EC)$(EXE) gforth.fi
  697: 		@echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)'
  698: 		time $(FORTH_FAST) siev.fs -e "main bye"
  699: 		time $(FORTH_FAST) bubble.fs -e "main bye"
  700: 		time $(FORTH_FAST) matrix.fs -e "main bye"
  701: 		time $(FORTH_FAST) fib.fs -e "main bye"
  702: 
  703: onebench one-bench:
  704: 	$(FORTH_FAST) onebench.fs
  705: 
  706: all-bench allbench:
  707: 	./gforth-fast --dynamic onebench.fs
  708: 	./gforth-fast --no-dynamic onebench.fs
  709: 	./gforth --dynamic onebench.fs
  710: 	./gforth --no-dynamic onebench.fs
  711: 	./gforth-itc onebench.fs
  712: 	./gforth-ditc onebench.fs
  713: 
  714: # -------------	Make forth images
  715: 
  716: # How to make new images:
  717: # 1. Produce an image called kernlXYZ.fi-
  718: #    the original kernel.fi is not touched because it's needed for creation
  719: # 2. copy old kernlXYZ.fi to kernlXYZ.fi~
  720: #    that's a backup copy in case the new kernels don't work
  721: # 3. copy new kernels to kernlXYZ.fi
  722: #    these are the ones we want to use now
  723: 
  724: kernl16l$(EC).fi-:	$(KERN_DEPS) mach16l.fs
  725: 		$(PREFORTH) -e 's" mach16l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl16l$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  726: 
  727: kernl16b$(EC).fi-:	$(KERN_DEPS) mach16b.fs
  728: 		$(PREFORTH) -e 's" mach16b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl16b$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  729: 
  730: kernl32l$(EC).fi-:	$(KERN_DEPS) mach32l.fs
  731: 		$(PREFORTH) -e 's" mach32l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32l$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  732: 
  733: kernl32b$(EC).fi-:	$(KERN_DEPS) mach32b.fs
  734: 		$(PREFORTH) -e 's" mach32b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl32b$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  735: 
  736: kernl64l$(EC).fi-:	$(KERN_DEPS) mach64l.fs
  737: 		$(PREFORTH) -e 's" mach64l.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64l$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  738: 
  739: kernl64b$(EC).fi-:	$(KERN_DEPS) mach64b.fs
  740: 		$(PREFORTH) -e 's" mach64b.fs"' $(srcdir)/kernel/main.fs -e "save-cross kernl64b$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
  741: 
  742: #Solaris make does not like that:
  743: @GNUMAKE@kernl-%.fi:	arch/%/mach.fs arch/%/prim.fs arch/%/asm.fs $(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
  744: @GNUMAKE@		$(PREFORTH) -e 's" $<"' $(srcdir)/kernel/main.fs -e "save-cross $@- $(bindir)/gforth-$(VERSION) bye"
  745: @GNUMAKE@		if [ -f `echo $< | sed s/fs/sh/` ]; \
  746: @GNUMAKE@		then sh `echo $< | sed s/fs/sh/` $@; \
  747: @GNUMAKE@		else $(CP) $@- $@; \
  748: @GNUMAKE@		fi
  749: 
  750: #SunOS make does not like that
  751: #arch/%/mach.fs:	arch/%/prim.fs arch/%/asm.fs
  752: 
  753: kernl16b$(EC).fi:	$(KERNLS)
  754: 		-$(CP) kernl16b$(EC).fi kernl16b$(EC).fi~
  755: 		-$(CP) kernl16b$(EC).fi- kernl16b$(EC).fi
  756: 
  757: kernl16l$(EC).fi:	$(KERNLS)
  758: 		-$(CP) kernl16l$(EC).fi kernl16l$(EC).fi~
  759: 		-$(CP) kernl16l$(EC).fi- kernl16l$(EC).fi
  760: 
  761: kernl32b$(EC).fi:	$(KERNLS)
  762: 		-$(CP) kernl32b$(EC).fi kernl32b$(EC).fi~
  763: 		-$(CP) kernl32b$(EC).fi- kernl32b$(EC).fi
  764: 
  765: kernl32l$(EC).fi:	$(KERNLS)
  766: 		-$(CP) kernl32l$(EC).fi kernl32l$(EC).fi~
  767: 		-$(CP) kernl32l$(EC).fi- kernl32l$(EC).fi
  768: 
  769: kernl64b$(EC).fi:	$(KERNLS)
  770: 		-$(CP) kernl64b$(EC).fi kernl64b$(EC).fi~
  771: 		-$(CP) kernl64b$(EC).fi- kernl64b$(EC).fi
  772: 
  773: kernl64l$(EC).fi:	$(KERNLS)
  774: 		-$(CP) kernl64l$(EC).fi kernl64l$(EC).fi~
  775: 		-$(CP) kernl64l$(EC).fi- kernl64l$(EC).fi
  776: 
  777: #kernl%.fi:	kernl%.fi- $(KERNLS)
  778: #		-$(CP) $@ $@~
  779: #		-$(CP) $< $@
  780: 
  781: gforth.fi:	$(kernel_fi) gforthmi gforth-ditc$(EC)$(EXE) $(GFORTH_FI_SRC) comp-i.fs
  782: 		GFORTHD="./gforth-ditc -p .$(PATHSEP)$(srcdir)" GFORTH="./gforth-ditc --die-on-signal -p .$(PATHSEP)$(srcdir) -i $(kernel_fi) $(STARTUP)" includedir=`pwd`/include bindir=`pwd` libccdir=`pwd`/lib/gforth/$(VERSION)/libcc-named/ ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) $(STARTUP)
  783: 
  784: # -------------	Make c-engine
  785: 
  786: prim.b:		prim cache0.vmg
  787: 		(cd $(srcdir) && $(M4) -Dcondbranch_opt=0 prim) >$@
  788: 		sleep 1 #should make hpux-workaround unnecessary
  789: 
  790: prim-fast.b:	prim cache-fast$(STACK_CACHE_DEFAULT_FAST).vmg cache-regs$(STACK_CACHE_REGS).vmg peeprules.vmg Makefile
  791: 		(cd $(srcdir) && $(M4) -Dcondbranch_opt=@condbranch_opt@ -DSTACK_CACHE_FILE=cache-fast$(STACK_CACHE_DEFAULT_FAST).vmg -DSTACK_CACHE_REGS=cache-regs$(STACK_CACHE_REGS).vmg prim) >$@
  792: 		sleep 1 #should make hpux-workaround unnecessary
  793: 
  794: $(FORTH_GEN_ENGINE_FAST): prim-fast.b prims2x.fs
  795: 		GFORTH="$(PREFORTH)" $(srcdir)/gfgen -fast
  796: 
  797: $(FORTH_GEN_ENGINE): prim.b prims2x.fs
  798: 		GFORTH="$(PREFORTH)" $(srcdir)/gfgen
  799: 
  800: engine/prim-s.i: engine/prim.i
  801: 	grep -v '^#line ' $(srcdir)/engine/prim.i >$@
  802: 
  803: kernel/aliases.fs:	prim.b prims2x.fs kernel/aliases0.fs
  804: 		$(CP) kernel/aliases0.fs $@-
  805: 		$(PREFORTH) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-alias ' noop process-file bye" >>$@-
  806: 		$(CP) $@- $@
  807: 		$(RM) $@-
  808: 
  809: kernel/prim.fs:	prim.b prims2x.fs kernel/prim0.fs
  810: 		$(CP) kernel/prim0.fs kernel/prim.fs-
  811: 		$(PREFORTH) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-forth ' output-forth-combined process-file bye" >>$@-
  812: 		$(CP) $@- $@
  813: 		$(RM) $@-
  814: 
  815: 
  816: OPTS = @OPTS@
  817: 
  818: MAKELINE-ll-reg   = OPT=-ll-reg OPTDEFINES="-DFORCE_LL -DFORCE_REG" OPTOBJECTS=
  819: MAKELINE-noll-reg = OPT=-noll-reg OPTDEFINES=-DFORCE_REG OPTOBJECTS=dblsub.o
  820: MAKELINE-ll       = OPT=-ll OPTDEFINES=-DFORCE_LL OPTOBJECTS=
  821: MAKELINE-noll     = OPT=-noll OPTDEFINES= OPTOBJECTS=dblsub.o
  822: 
  823: gforth$(OPT)$(EC)$(EXE): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/config.h @kernel_anti_dependence@
  824: 	if test -z "$(OPT)"; then \
  825: 		for i in $(OPTS); do $(MAKE) optgforth OPT=$$i && $(CP) gforth$${i}$(EC)$(EXE) $@ && break; done; \
  826: 	else \
  827: 		( cd engine && $(MAKE) $@ ) && \
  828: 		$(CP) engine/$@ $@ && \
  829: 		$(MASSAGE_EXE) $@; \
  830: 		@GFORTH_EXE@; \
  831: 		@NO_EC@ $(MAKE) checkone check-nofast ENGINE=./engine/$@; \
  832: 	fi
  833: 
  834: optgforth:
  835: 	$(MAKE) gforth$(OPT)$(EC)$(EXE) $(MAKELINE$(OPT))
  836: 
  837: gforth-fast$(OPT)$(EC)$(EXE): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE_FAST) engine/config.h
  838: 	if test -z "$(OPT)"; then \
  839: 		for i in $(OPTS); do $(MAKE) optgforth-fast OPT=$$i && $(CP) gforth-fast$${i}$(EC)$(EXE) $@ && break; done; \
  840: 	else \
  841: 		( cd engine && $(MAKE) $@ ) && \
  842: 		$(CP) engine/$@ $@ && \
  843: 		$(MASSAGE_EXE) $@; \
  844: 		@GFORTHFAST_EXE@; \
  845: 		@NO_EC@ $(MAKE) checkone ENGINE=./engine/$@; \
  846: 	fi
  847: 
  848: optgforth-fast:
  849: 	$(MAKE) gforth-fast$(OPT)$(EC)$(EXE) $(MAKELINE$(OPT))
  850: 
  851: gforth-native$(OPT)$(EC)$(EXE):	engines-fast
  852: 		$(CP) engine/$@ $@
  853: 		-$(MASSAGE_EXE) $@
  854: #@GFORTHX_EXE@
  855: 
  856: gforth-itc$(EC)$(EXE): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h
  857: 		cd engine && $(MAKE) gforth-itc-noll$(EC)$(EXE) $(MAKELINE-noll)
  858: 		$(CP) engine/gforth-itc-noll$(EC)$(EXE) $@
  859: 		@GFORTHITC_EXE@
  860: 
  861: gforth-ditc$(EC)$(EXE): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h
  862: 		cd engine && $(MAKE) gforth-ditc-noll$(EC)$(EXE) $(MAKELINE-noll)
  863: 		$(CP) engine/gforth-ditc-noll$(EC)$(EXE) $@
  864: 		@GFORTHDITC_EXE@
  865: 
  866: gforth-prof$(EC)$(EXE): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h
  867: 		cd engine && $(MAKE) gforth-prof-noll$(EC)$(EXE) $(MAKELINE-noll)
  868: 		$(CP) engine/gforth-prof-noll$(EC)$(EXE) $@
  869: 
  870: gforths: $(ENGINES) $(ENGINES_FAST)
  871: 
  872: # ------------- additional C primitives
  873: 
  874: .SUFFIXES:	.c .pri
  875: 
  876: .pri.c:		$< prim2cl.fs
  877: 		$(FORTHK) prim2cl.fs -e "file $< altogether bye" >$@
  878: 
  879: .c.so:		$<
  880: 		$(GCC) -shared $(CFLAGS) $(CPPFLAGS) $< -o $@
  881: 
  882: # -------------	Make Documentation
  883: 
  884: #TAGS is a GNU standard target
  885: TAGS:		gforth.TAGS
  886: 		$(CP) gforth.TAGS $@
  887: 
  888: tags:		gforth.tags
  889: 		$(CP) gforth.tags $@
  890: 
  891: install.TAGS:	TAGS install-tags.fs
  892: 		sed 's;^\$(srcdir)/;;' TAGS|./gforth -e 's" '$(datadir)/gforth/$(VERSION)/'"' $(srcdir)/install-tags.fs -e bye >install.TAGS
  893: 
  894: gforth.TAGS:	@kernel_fi@ gforth$(EC)$(EXE) $(GFORTH_FI_SRC) prim.TAGS kernel.TAGS
  895: 		$(FORTHK) etags.fs except.fs startup.fs -e bye
  896: 		cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS
  897: 		rm TAGS
  898: 
  899: gforth.tags:	@kernel_fi@ gforth$(EC)$(EXE) $(GFORTH_FI_SRC) prim.tags kernel.tags
  900: 		$(FORTHK) tags.fs except.fs startup.fs -e bye
  901: 		cat tags prim.tags kernel.tags >gforth.tags
  902: 		rm tags
  903: 
  904: prim.TAGS: 	prim.b prims2x.fs
  905: 		$(PREFORTH) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye"|sed 's#^./prim#prim#' >$@-
  906: 		$(CP) $@- $@
  907: 		$(RM) $@-
  908: 
  909: prim.tags: 	prim.b prims2x.fs
  910: 		#echo '2c\' >prim.TAGS.sed
  911: 		#echo $(srcdir)/prim >>prim.TAGS.sed
  912: 		#$(PREFORTH) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-tag dup process-file bye" | sed -f prim.TAGS.sed >$@-
  913: 		$(PREFORTH) prims2x.fs -e "s\" $(srcdir)/prim.b\" ' output-vi-tag dup process-file bye" >$@-
  914: 		$(CP) $@- $@
  915: 		$(RM) $@-
  916: 
  917: kernel.TAGS:
  918: 		$(RM) kernl16l$(EC).fi-; $(MAKE) @kernel_fi@
  919: 
  920: kernel.tags:
  921: 		$(RM) kernl16l$(EC).fi-; $(MAKE) @kernel_fi@
  922: 
  923: #elc files
  924: gforth.elc:	gforth.el
  925: 		-$(EMACS) -batch -f batch-byte-compile gforth.el
  926: 
  927: #Documentation
  928: 
  929: doc/doc.fd:	doc/makedoc.fs $(GFORTH_FI_SRC) code.fs objects.fs oof.fs moofglos.fs
  930: 		$(FORTHK) -e "s\" doc/doc.fd\"" doc/makedoc.fs except.fs startup.fs code.fs objects.fs oof.fs moofglos.fs regexp.fs fft.fs -e bye
  931: 
  932: doc/crossdoc.fd:	$(KERN_SRC) kernel/version.fs $(FORTH_GEN0)
  933: 		$(FORTHK) -e 's" mach32l.fs"' kernel/main.fs -e bye
  934: 
  935: doc/gforth.texi: doc/gforth.ds prim.b ds2texi.fs prims2x.fs \
  936: 		doc/doc.fd doc/crossdoc.fd
  937: 		$(PREFORTH) 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" >$@-
  938: 		$(CP) $@- $@
  939: 		$(RM) $@-
  940: 
  941: checkdoc:	doc/gforth.ds prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi
  942: 		$(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
  943: 		-grep unknown doc/gforth.texi
  944: 		-grep doc- doc/gforth.texi| grep -v '^@c'
  945: 
  946: dvi:		doc/gforth.dvi doc/vmgen.dvi
  947: 
  948: pdf:		doc/gforth.pdf doc/vmgen.pdf
  949: 
  950: doc/gforth.dvi doc/gforth.fns:	$(GFORTH_TEXI)
  951: 		cd doc; $(TEXI2DVI) gforth.texi
  952: 
  953: doc/gforth.pdf:	$(GFORTH_TEXI)
  954: 		cd doc; $(TEXI2PDF) gforth.texi
  955: 
  956: doc/vmgen.dvi:	$(VMGEN_TEXI)
  957: 		cd doc; $(TEXI2DVI) vmgen.texi
  958: 
  959: doc/vmgen.pdf:	$(VMGEN_TEXI)
  960: 		cd doc; $(TEXI2PDF) vmgen.texi
  961: 
  962: doc/gforth.ps:	doc/gforth.dvi
  963: 		$(DVI2PS) doc/gforth.dvi -o $@
  964: 
  965: doc/vmgen.ps:	doc/vmgen.dvi
  966: 		$(DVI2PS) doc/vmgen.dvi -o $@
  967: 
  968: info:		doc/gforth.info doc/vmgen.info
  969: 
  970: doc/gforth.info: $(GFORTH_TEXI)
  971: 		cd doc; $(MAKEINFO) gforth.texi
  972: 
  973: doc/vmgen.info: $(VMGEN_TEXI)
  974: 		cd doc; $(MAKEINFO) vmgen.texi
  975: 
  976: 
  977: ### need makeinfo 4.2 to generate html with these rules
  978: doc/gforth: $(GFORTH_TEXI)
  979: 	cd doc; $(MAKEINFO) --html gforth.texi
  980: 
  981: doc/vmgen: $(VMGEN_TEXI)
  982: 	cd doc; $(MAKEINFO) --html vmgen.texi
  983: 
  984: doc/gforth.txt:	$(GFORTH_TEXI)
  985: 		-cd doc; $(MAKEINFO) --no-headers --no-split gforth.texi >gforth.txt
  986: 
  987: doc/vmgen.txt:	$(VMGEN_TEXI)
  988: 		-cd doc; $(MAKEINFO) --no-headers --no-split vmgen.texi >vmgen.txt
  989: 
  990: doc:		gforth.fi info doc/gforth doc/vmgen doc/gforth.ps doc/vmgen.ps doc/gforth.txt doc/vmgen.txt TAGS
  991: 
  992: # For an explanation of the following Makefile rules, see node
  993: # `Automatic Remaking' in GNU Autoconf documentation.
  994: 
  995: #Note: no target "$(srcdir)/configure", because that does not trigger 
  996: #unless $(srcdir)!="."
  997: configure: configure.in aclocal.m4
  998: 	cd $(srcdir) && autoconf
  999: 
 1000: aclocal.m4:	configure.in
 1001: 		aclocal
 1002: 
 1003: # autoheader might not change config.h.in, so touch a stamp file.
 1004: engine/config.h.in: stamp-h.in
 1005: stamp-h.in: configure.in aclocal.m4
 1006: 	cd $(srcdir) && autoheader
 1007: 	echo timestamp > $(srcdir)/stamp-h.in
 1008: 
 1009: engine/config.h: stamp-h
 1010: stamp-h: engine/config.h.in config.status stamp-h.in
 1011: 	./config.status
 1012: 
 1013: Makefile Makedist engine/Makefile gforthmi vmgen preforth machpc.fs doc/version.texi envos.fs build-ec:	Makefile.in Makedist.in engine/Makefile.in gforthmi.in vmgen.in preforth.in machpc.fs.in doc/version.texi.in config.status configure.in envos.fs.in build-ec.in engine/libcc.h.in
 1014: 	./config.status
 1015: 
 1016: config.status: configure
 1017: 	./config.status --recheck
 1018: 
 1019: #create files for DOS, because DOS cannot do it itself
 1020: makefile.dos: mkdosmf.sed Makefile.in
 1021: 	sed -f mkdosmf.sed <Makefile.in >makefile.dos
 1022: 
 1023: engine/makefile.dos: mkdosmf.sed engine/Makefile.in
 1024: 	sed -f mkdosmf.sed <engine/Makefile.in >engine/makefile.dos
 1025: 
 1026: makefile.os2: mkos2mf.sed Makefile.in
 1027: 	sed -f mkos2mf.sed <Makefile.in >makefile.os2
 1028: 	echo '%.o:      %.c' >>makefile.os2
 1029: 	echo '          $$(GCC) $$(CFLAGS) $$(CPPFLAGS) -c $$<' >>makefile.os2
 1030: 
 1031: engine/makefile.os2: mkos2mf.sed engine/Makefile.in
 1032: 	sed -f mkos2mf.sed <engine/Makefile.in >engine/makefile.os2
 1033: 	echo '%.o:      %.c' >>engine/makefile.os2
 1034: 	echo '          $$(GCC) $$(CFLAGS) $$(CPPFLAGS) -c $$<' >>engine/makefile.os2

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