File:  [gforth] / gforth /
Revision 1.35: download - view: text, annotated - select for diffs
Mon Oct 16 18:33:04 1995 UTC (25 years, 8 months ago) by anton
Branches: MAIN
CVS tags: HEAD
added answords.fs and strsignal.c
added checking of documenetation of ANS Forth words
Fixed many documentation errors and added some documentation
signal handling now uses strsignal and can handle signals not present on all machines

#Copyright 1992 by the ANSI figForth Development Group
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
#     (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.

#To do:
#use $(srcdir) to make compilation in a non-srcdir possible

VERSION	=0.1beta#gforth version
SHELL	= /bin/sh
RM	= rm
CP	= cp
LN_S	= @LN_S@
GCC	= gcc
CC	= $(GCC)
FORTH	= ./gforth
STRIP	= strip
TEXI2DVI = texi2dvi
DVI2PS	= dvips
#you can get texi2html from
TEXI2HTML = texi2html
MAKEINFO = makeinfo
SWITCHES = $(XCFLAGS) $(XDEFINES) #-DNDEBUG #turn off assertions
ENGINE_FLAGS =  -fno-defer-pop -fcaller-saves
CFLAGS	= -pipe -O4 -Wall $(SWITCHES) -DDEFAULTPATH=\"$(datadir)/gforth/$(VERSION):$(libdir)/gforth/$(VERSION):.\"

#John Wavrik should use -Xlinker -N to get a writable text (executable)

prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
bindir = $(exec_prefix)/bin
#read-only architecture-independent files
datadir = $(prefix)/share
#read-only architecture-dependent non-ascii files
libdir = $(prefix)/lib
infodir = $(prefix)/info
mandir = $(prefix)/man/man1

INCLUDES = forth.h io.h

KERN_SRC = main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
	errore.fs kernal.fs version.fs extend.fs tools.fs toolsext.fs

FORTH_SRC = anslocal.fs add.fs assert.fs ansi.fs answords.fs blocks.fs bufio.fs checkans.fs \
	code.fs colorize.fs cross.fs debug.fs debugging.fs doskey.fs ds2texi.fs \
	dumpimage.fs environ.fs errore.fs etags.fs extend.fs filedump.fs \
	float.fs glocals.fs glosgen.fs gray.fs hash.fs history.fs \
	kernal.fs locals-test.fs look.fs main.fs makedoc.fs \
 	mach16b.fs mach16l.fs mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
	other.fs prims2x.fs random.fs search-order.fs see.fs sieve.fs \
	startup.fs struct.fs tools.fs toolsext.fs tt.fs vars.fs vt100.fs \
	vt100key.fs wordinfo.fs wordsets.fs \
	tester.fs coretest.fs	

SOURCES	= configure config.sub  config.guess \
	install-sh INSTALL README ToDo BUGS model COPYING \
	gforth.ds texinfo.tex gforth.1 gforth.el \
	primitives engine.c main.c io.c \
	m68k.h mips.h 386.h hppa.h cache.c sparc.h power.h alpha.h 32bit.h \
	getopt.c getopt1.c getopt.h select.c \
	ecvt.c memcmp.c strtol.c strtoul.c ansidecl.h memmove.c pow10.c \
	strerror.c strsignal.c \
	makefile.dos mkdosmf.sed configure.bat startup.dos \
	glosgen.glo glossaries.doc \

RCS_FILES =  ToDo model high-level

GEN = gforth

OBJECTS	= engine.o io.o main.o @LIBOBJS@ @getopt_long@

# things that need a working forth system to be generated
FORTH_GEN0 = primitives.b primitives.i prim_labels.i aliases.fs
# this is used for antidependences,
FORTH_GEN1 = $(FORTH_GEN0) @kernal_fi@ 

KERNLS = \ \

GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) gforth.texi gforth.dvi Makefile configure recommends this:
.SUFFIXES: .c .o

	if [ ! -f gforth ]; then $(MAKE) first; fi
	$(MAKE) more

first:	gforth

more:	$(FORTH_GEN) gforth

#from the gcc Makefile: 
#"Deletion of files made during compilation.
# There are four levels of this:
#   `mostlyclean', `clean', `distclean' and `realclean'.
# `mostlyclean' is useful while working on a particular type of machine.
# It deletes most, but not all, of the files made by compilation.
# It does not delete libgcc.a or its parts, so it won't have to be recompiled.
# `clean' deletes everything made by running `make all'.
# `distclean' also deletes the files made by config.
# `realclean' also deletes everything that could be regenerated automatically."

		-$(RM) $(GEN) *.o *.s

distclean:	clean
		-$(RM) machine.h config.cache config.log

realclean:	distclean

dist:		$(SOURCES) $(FORTH_GEN)
		-rm -rf gforth-$(VERSION)
		mkdir gforth-$(VERSION)
		cp -p $(SOURCES) $(FORTH_GEN) gforth-$(VERSION)
		tar cvf - gforth-$(VERSION)|gzip -9 >gforth-$(VERSION).tar.gz
		-rm -rf gforth-$(VERSION)

#a binary distribution contains the complete source distribution,
# the objects, the executable and the links. the objects are there for making
# make happy.
bindist:	$(SOURCES) $(FORTH_GEN) gforth $(OBJECTS) config.status Makefile
		-rm -rf gforth-$(VERSION)
		mkdir gforth-$(VERSION)
		cp -p -d $(SOURCES) config.status Makefile $(FORTH_GEN) gforth $(OBJECTS) machine.h gforth-$(VERSION)
		strip gforth-$(VERSION)/gforth
		tar cvf - gforth-$(VERSION)|gzip -9 >gforth-$(VERSION)-@host@.tar.gz

#makes a package with only the stuff not present in the source
#package. For installation the source package is still needed!
#This is useful if you want to distribute many binary versions in
#little space (e.g., on floppy disk): Put the source package and
#all the binonly packages you are interested in on the disk. The user
#then just has to unpack the source and his favourite binonly into the
#same directory and has a full binary distribution.
binonlydist:	$(SOURCES) $(FORTH_GEN) gforth $(OBJECTS)
		-rm -rf gforth-$(VERSION)
		mkdir gforth-$(VERSION)
		cp -p -d  config.status Makefile gforth $(OBJECTS) machine.h gforth-$(VERSION)
		strip gforth-$(VERSION)/gforth
		tar cvf - gforth-$(VERSION)|gzip -9 >gforth-$(VERSION)-binonly-@host@.tar.gz

#strip gforth, because the debugging stuff is hardly useful once
# gforth manages to execute more than a few primitives

install:	gforth $(FORTH_SRC) gforth.1
		$(INSTALL) -d $(bindir) $(mandir) $(infodir) $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION)	
		$(INSTALL_PROGRAM) -s gforth $(bindir)
		$(INSTALL_DATA) gforth.1 $(mandir)
		$(INSTALL_DATA)* $(infodir)
		for i in $(FORTH_SRC); do \
			$(INSTALL_DATA) $$i $(datadir)/gforth/$(VERSION); \
		rm; make contains some path names
		$(INSTALL_DATA) $(libdir)/gforth/$(VERSION)

check:		test
		touch test

test:		gforth
		@echo 'Expect to see INCORRECT RESULT: { GS1 -> <TRUE> <TRUE> }'
		@echo 'This is a bug of the testing program'
		$(FORTH) tester.fs coretest.fs -e bye
		$(FORTH) startup.fs blocks.fs code.fs checkans.fs -e bye
		@echo 'Expect no differences'
		$(FORTH) prims2x.fs -e "s\" primitives.b\" ' output-c process-file bye"| diff -c - primitives.i

dvi:		gforth.dvi

gforth:		$(OBJECTS)
		-$(CP) gforth gforth~
		$(GCC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@
		@MAKE_EXE@	$(KERN_SRC) mach16l.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach16l.fs"' main.fs	$(KERN_SRC) mach16b.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach16b.fs"' main.fs	$(KERN_SRC) mach32l.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach32l.fs"' main.fs	$(KERN_SRC) mach32b.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach32b.fs"' main.fs	$(KERN_SRC) mach64l.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach64l.fs"' main.fs	$(KERN_SRC) mach64b.fs $(FORTH_GEN0)
		$(FORTHK) -e 's" mach64b.fs"' main.fs	$(KERNLS)
		@LINK_KERNL64L@	@kernal_fi@ gforth startup.fs glocals.fs search-order.fs hash.fs float.fs debugging.fs environ.fs wordinfo.fs look.fs vt100.fs see.fs bufio.fs debug.fs history.fs vt100key.fs assert.fs blocks.fs struct.fs dumpimage.fs
		$(FORTHK) startup.fs dumpimage.fs -e "savesystem bye"

engine.s:	engine.c primitives.i prim_labels.i machine.h $(INCLUDES)
		$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -S engine.c

engine.o:	engine.c primitives.i prim_labels.i machine.h $(INCLUDES)
		$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -c engine.c

strtoul.o:	strtoul.c strtol.c

primitives.b:	primitives
		m4 primitives >$@ 

primitives.i :	primitives.b prims2x.fs
		$(FORTHK) prims2x.fs -e "s\" primitives.b\" ' output-c process-file bye" >$@

prim_labels.i :	primitives.b prims2x.fs
		$(FORTHK) prims2x.fs -e "s\" primitives.b\" ' output-label process-file bye" >$@

aliases.fs:	primitives.b prims2x.fs
		$(FORTHK) prims2x.fs -e "s\" primitives.b\" ' output-alias process-file bye" >$@

primitives.fs:	primitives.b prims2x.fs
		$(FORTHK) prims2x.fs -e "s\" primitives.b\" ' output-forth process-file bye" >$@

		echo ": version-string s\" $(VERSION)\" ;" >$@

		echo "char gforth_version[]=\"$(VERSION)\" ;" >$@

doc.fd:		makedoc.fs float.fs search-order.fs glocals.fs environ.fs \
		 toolsext.fs wordinfo.fs \
		 vt100.fs colorize.fs see.fs bufio.fs debug.fs history.fs \
		 doskey.fs vt100key.fs startup.fs assert.fs debugging.fs code.fs
		$(FORTHK) -e "s\" doc.fd\"" makedoc.fs startup.fs code.fs -e bye

crossdoc.fd:	$(KERN_SRC) $(FORTH_GEN0)
		$(FORTHK) -e 's" mach32l.fs"' main.fs

gforth.texi:	gforth.ds primitives.b ds2texi.fs prims2x.fs doc.fd crossdoc.fd
		$(FORTHK) ds2texi.fs -e "s\" gforth.ds\" r/o open-file throw ds2texi bye" >$@

checkdoc:	gforth.ds primitives.b ds2texi.fs prims2x.fs doc.fd crossdoc.fd answords.fs
		$(FORTHK) ds2texi.fs answords.fs -e bye

gforth.dvi:	gforth.texi
		$(TEXI2DVI) gforth.texi	gforth.dvi
		$(DVI2PS) gforth.dvi -o $@	gforth.texi
		-$(MAKEINFO) gforth.texi

html:		gforth.texi
		-$(RM) html/*
		-mkdir html
		cd html; $(TEXI2HTML) -menu -split_node ../gforth.texi

# For an explanation of the following Makefile rules, see node
# `Automatic Remaking' in GNU Autoconf documentation.
Makefile: config.status
	CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
config.status: configure
	./config.status --recheck
	cd $(srcdir) && autoconf

makefile.dos: mkdosmf.sed
	sed -f mkdosmf.sed < >makefile.dos

startup.dos: startup.fs
	sed -e "s/\\\\ include doskey/include doskey/g" \
	    -e "s/include vt100key/\\\\ include vt100key/g" <$< >$@

FreeBSD-CVSweb <>