#Makefile for the C part of Gforth
#Copyright (C) 1995-2003 Free Software Foundation, Inc.
#This file is part of Gforth.
#Gforth is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
# ------------- gforth version
VERSION =@PACKAGE_VERSION@
DOSVERSION=`echo $VERSION|sed 's/\.//g'`
EXE=@EXE@
# ------------- System specific variables
machine=@machine@
kernel_fi=@kernel_fi@
include_fi=gforth.fi
# this is the type of machine
# used to extend the include path with ./arch/$machine
# so we could include a machine specific
# machine.h file
PATHSEP = @PATHSEP@
osclass = @OSCLASS@
# ------------- Utility programs
SHELL = /bin/sh
RM = rm
RMTREE = rm -rf
CP = cp -p
TAR = tar cf -
GCC = @CC@
CC = $(GCC)
STRIP = strip
FORTHPATH = .$(PATHSEP)$(libdir)/gforth/site-forth$(PATHSEP)$(datadir)/gforth/site-forth$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION)
# ------------ Install Directorys
VPATH = @srcdir@
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
man1dir= $(mandir)/man1
man1ext= .1
# ------------- Compiler Flags
XCFLAGS = @CFLAGS@
XDEFINES = @DEFS@
SWITCHES = $(XCFLAGS) $(XDEFINES)
ENGINE_FLAGS = @ENGINE_FLAGS@ -fno-defer-pop -fcaller-saves
DEBUGFLAG = @DEBUGFLAG@
CFLAGS = $(DEBUGFLAG) -I$(srcdir)/../arch/$(machine) -I. -O2 -Wall $(SWITCHES) -DDEFAULTPATH=\"$(FORTHPATH)\"
CFLAGS2 = $(DEBUGFLAG) -I$(srcdir)/../arch/$(machine) -I. -O2 -Wall $(SWITCHES) -DDEFAULTPATH=\"$(FORTHPATH)\"
FORTHKFLAGS= --die-on-signal -p "..$(PATHSEP)$(srcdir)" -i ../$(kernel_fi)
FORTHK = ../gforth $(FORTHKFLAGS)
#John Wavrik should use -Xlinker -N to get a writable text (executable)
XLDFLAGS = @LDFLAGS@
LDFLAGS = $(DEBUGFLAG) $(XLDFLAGS)
LDLIBS = @LIBS@
AOBJECTS = io.o signals.o support.o memcmpc.o @LIBOBJS@
OBJECTS = engine.o engine2.o main.o
OBJECTS_NATIVE = engine-native.o engine-native2.o engine-native3.o main-native.o
OBJECTS_FAST = engine-fast.o engine-fast2.o main-fast.o
OBJECTS_ITC = engine-itc.o main-itc.o
OBJECTS_DITC = engine-ditc.o main-ditc.o
OBJECTS_PROF = engine-prof.o main-prof.o
OBJECTS_FI = engine.o main-fi.o
# In engine subdirectory there are (or should be) only files that belong to
# our engine, so we can make life easy
DEPS = config.h *.h $(srcdir)/../arch/$(machine)/*.[h]
ENGINE_DEPS = engine.c $(DEPS) prim_lab.i prim.i
MAIN_DEPS = main.c $(DEPS) prim_superend.i prim_num.i prim_grp.i
#some makes don't do the -o $@ correctly, so we help them
.c.o:
$(GCC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
gforth$(EXE): $(OBJECTS) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS) $(AOBJECTS) $(LDLIBS) -o $@
gforth-native$(EXE): $(OBJECTS_NATIVE) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS_NATIVE) $(AOBJECTS) $(LDLIBS) -o $@
gforth-fast$(EXE): $(OBJECTS_FAST) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS_FAST) $(AOBJECTS) $(LDLIBS) -o $@
gforth-itc$(EXE): $(OBJECTS_ITC) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS_ITC) $(AOBJECTS) $(LDLIBS) -o $@
gforth-ditc$(EXE): $(OBJECTS_DITC) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS_DITC) $(AOBJECTS) $(LDLIBS) -o $@
gforth-prof$(EXE): $(OBJECTS_PROF) $(AOBJECTS) profile.o
$(GCC) $(LDFLAGS) $(OBJECTS_PROF) $(AOBJECTS) profile.o $(LDLIBS) -o $@
gforth-fi$(EXE): $(OBJECTS_FI) $(AOBJECTS)
$(GCC) $(LDFLAGS) $(OBJECTS_FI) $(AOBJECTS) $(LDLIBS) -o $@
engine.s: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -S $(srcdir)/engine.c
engine.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -fno-strict-aliasing -DGFORTH_DEBUGGING -o $@ -c $(srcdir)/engine.c
engine2.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -fno-strict-aliasing -DGFORTH_DEBUGGING -DENGINE=2 -o $@ -c $(srcdir)/engine.c
engine-native.o:$(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DNO_IP -o $@ -c $(srcdir)/engine.c
engine-native2.o:$(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DNO_IP -DENGINE=2 -o $@ -c $(srcdir)/engine.c
engine-native3.o:$(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DNO_IP -DENGINE=3 -o $@ -c $(srcdir)/engine.c
engine-fast.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -o $@ -c $(srcdir)/engine.c
engine-fast2.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DENGINE=2 -o $@ -c $(srcdir)/engine.c
engine-itc.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DINDIRECT_THREADED -DGFORTH_DEBUGGING -o $@ -c $(srcdir)/engine.c
engine-ditc.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DDOUBLY_INDIRECT -o $@ -c $(srcdir)/engine.c
engine-prof.o: $(ENGINE_DEPS)
$(GCC) $(CFLAGS2) $(ENGINE_FLAGS) -fno-gcse -DVM_PROFILING -o $@ -c $(srcdir)/engine.c
main.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DGFORTH_DEBUGGING -o $@ -c $(srcdir)/main.c
main-native.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DNO_IP -o $@ -c $(srcdir)/main.c
main-fast.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -o $@ -c $(srcdir)/main.c
main-itc.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DINDIRECT_THREADED -DGFORTH_DEBUGGING -o $@ -c $(srcdir)/main.c
main-ditc.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DDOUBLY_INDIRECT -o $@ -c $(srcdir)/main.c
main-prof.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DVM_PROFILING -o $@ -c $(srcdir)/main.c
main-fi.o: $(MAIN_DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -DINCLUDE_IMAGE -o $@ -c $(srcdir)/main.c
peephole.o: peephole.c peephole.i $(DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -o $@ -c $(srcdir)/peephole.c
profile.o: profile.c profile.i $(DEPS)
$(GCC) $(CFLAGS) $(ENGINE_FLAGS) -o $@ -c $(srcdir)/profile.c
#The next two rules seem to be superfluous:
# engine: $(OBJECTS) $(OBJECTS0) ;
# engine_ditc: $(OBJECTS_DITC) $(OBJECTS0) ;
#NeXTstep hack
termios.o: /usr/lib/libposix.a
ar x /usr/lib/libposix.a termios.o
#duplicated rules to avoid too many recursive make invocations
# !! No any forth stuff should be done in ../Makefile.
# !! I added the dependencies on prim.i and prim_lab.i in the main Makefile, jens
#I commented out the following rules because they are no longer up-to-date. - anton
#prim.i: ../prim.b ../prims2x.fs
# $(FORTHK) prims2x.fs -e "s\" ../prim.b\" ' output-c process-file bye" >$@-
# $(CP) $@- $@
# $(RM) $@-
#
#prim_lab.i: ../prim.b ../prims2x.fs
# $(FORTHK) prims2x.fs -e "s\" ../prim.b\" ' output-label process-file bye" >$@-
# $(CP) $@- $@
# $(RM) $@-
config.h: stamp-h
stamp-h: config.h.in ../config.status
cd .. && CONFIG_FILES=$@ CONFIG_HEADERS=engine/config.h ./config.status
echo timestamp > stamp-h
image.c: ../fi2c.fs ../$(include_fi)
$(FORTHK) fi2c.fs -e "s\" ../$(include_fi)\" fi2c bye" >$@
../$(include_fi): FORCE
cd .. && $(MAKE) $(include_fi)
#phony targets depend on FORCE; this is more portable than .PHONY
FORCE:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>