File:  [gforth] / gforth /
Revision 1.9: download - view: text, annotated - select for diffs
Mon Dec 12 17:10:29 1994 UTC (28 years, 3 months ago) by anton
Branches: MAIN
CVS tags: HEAD
Reorganized configuration: configure is now created by autoconf from; I still left it in the CVS repository because not
everyone has autoconf. decstation.h renamed to mips.h and apollo68k to
m68k. Added general 32bit.h description, which the other machine
descriptions use. Created/copied replacement files install-sh memcmp.c
memmove.c select.c (carved out from ecvt.c) strtol.c
strtoul.c. Bytesex is now handled by configure.

Deciding the threading method is now done in machine.h, this should
also be done for USE_TOS and USE_FTOS.

#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.1alpha#gforth version
SHELL	= /bin/sh
RM	= rm
CP	= cp
LN_S	= @LN_S@
GCC	= gcc
FORTH	= ./gforth
CC	= gcc
TEXI2DVI = tex
DVI2PS	= dvips
ENGINE_FLAGS =  -fforce-mem -fforce-addr -fomit-frame-pointer -fno-defer-pop -fcaller-saves -DUSE_FTOS
CFLAGS	= -g -O4 -Wall $(SWITCHES)

#-Xlinker -n puts text and data into the same 256M region
#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

FORTH_SRC = add.fs assert.fs ansi.fs blocks.fs bufio.fs checkans.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 mach32b.fs mach32l.fs main.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

SOURCES	=  config.sub  config.guess \
	INSTALL README ToDo BUGS model gforth.ds \
	primitives engine.c main.c io.c \
	m68k.h mips.h 386.h hppa.h cache.c sparc.h 32bit.h \
	getopt.c getopt1.c getopt.h \
	ecvt.c memcmp.c strtol.c strtoul.c memmove.c \
	makefile.dos io-dos.h 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
# this is used for antidependences,

FORTH_GEN =  primitives.b primitives.i prim_labels.i aliases.fs

GEN_PRECIOUS = $(FORTH_GEN) 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 ../gforth-$(VERSION)
		ln -s `pwd` ../gforth-$(VERSION)
		echo "" $(SOURCES) $(FORTH_GEN) |\
			sed -e 's| | gforth-$(VERSION)/|g' |\
			(cd ..; xargs tar cvf gforth/gforth-$(VERSION).tar)
		gzip -9 -f gforth-$(VERSION).tar
		-rm ../gforth-$(VERSION)

install:	gforth $(FORTH_SRC) gforth.1
		$(INSTALL) -d $(bindir) $(mandir) $(infodir) $(libdir)/gforth $(datadir)/gforth	
		$(INSTALL_PROGRAM) gforth $(bindir)
		$(INSTALL_DATA) gforth.1 $(mandir)
		$(INSTALL_DATA) $(infodir)
		$(INSTALL_DATA) $(libdir)/gforth
		for i in $(FORTH_SRC); do \
			$(CP) $$i $(datadir)/gforth; \
			$(LN_S) $(datadir)/gforth/$$i $(libdir)/gforth \
dvi:		gforth.dvi

gforth:	$(OBJECTS)
		-$(CP) gforth gforth~
		$(GCC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@
		@MAKE_EXE@	main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
		errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
		mach32l.fs $(FORTH_GEN)
		$(FORTH) -e 's" mach32l.fs"' main.fs
		@LINK_KERNL32L@	main.fs search-order.fs cross.fs aliases.fs vars.fs add.fs \
		errore.fs kernal.fs extend.fs tools.fs toolsext.fs \
		mach32b.fs $(FORTH_GEN)
		$(FORTH) -e 's" mach32b.fs"' main.fs

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
		$(FORTH) prims2x.fs -e "s\" primitives.b\" ' output-c process-file bye" >$@

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

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

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

gforth.texi:	gforth.ds primitives.b ds2texi.fs prims2x.fs
		$(FORTH) ds2texi.fs >$@

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

# 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

#unnecessary and does not work with all makes
#%.s :		%.c $(INCLUDES)
#		$(CC) $(CFLAGS) -S $< -o $@

#%.o :		%.s
#		$(CC) $(CFLAGS) -c $< -o $@

FreeBSD-CVSweb <>