On 2022-07-09 18:50, Anton Ertl wrote:
On Sat, Jul 09, 2022 at 06:26:11PM +0100, tristan wrote:
On 2022-07-08 09:39, Anton Ertl wrote:
> On Wed, Jul 06, 2022 at 08:53:50PM +0100, Tristan Williams wrote:
> > Hello,
> >
> > Has anyone successfully built and run gforth 0.7.9 on a mac with the
> > M1 chip? I have a 0.7.3 binary (via homebrew) that runs, but my
> > attempts at building 0.7.9 from the tarball have failed. Any
> > suggestions gratefully received.
>
> We may be better able to help you if you provide more specifics, in
> particular the compilation log.
>
> - anton
Hello Anton,
So far I have followed install.md
BUILD_FROM=tarball
source ./install-deps.sh # install only the dependencies for a
tarball
build
./configure
make
sudo make install
...
HOSTPREFIX="gcc" GFORTHD="./gforth-ditc -p .:~+:."
GFORTH="./gforth-ditc --die-on-signal --debug-mcheck -p .:~+:. -i
kernl64l.fi exboot.fs startup.fs arch/arm64/asm.fs
arch/arm64/disasm.fs" includedir=`pwd`/include extrastuff='
-I'`pwd`/include/gforth/0.7.9_20220630/arm64 bindir=`pwd`
libccdir=`pwd`/lib/gforth/0.7.9_20220630/arm64/libcc-named ./gforthmi
gforth.fi --die-on-signal -p ".:~+:." -i kernl64l.fi exboot.fs
startup.fs arch/arm64/asm.fs arch/arm64/disasm.fs
Segmentation fault: 11.
Segmentation fault: 11.
Segmentation fault: 11.
make: *** [gforth.fi] Error 1
Ok, no immediate known way to fix it. You could try showing us the
output of
./gforth-ditc --die-on-signal --debug-mcheck -p .:~+:. -i kernl64l.fi
exboot.fs startup.fs arch/arm64/asm.fs arch/arm64/disasm.fs
at that point, but my guess is that it will be hard to fix without us
working directly on such a box. I think we have access to such a box,
but it will take a few days.
- anton
Hello Anton,
Running
./gforth-ditc --die-on-signal --debug-mcheck -p .:~+:. -i kernl64l.fi
exboot.fs startup.fs arch/arm64/asm.fs arch/arm64/disasm.fs
immediately after running the makefile results in
Segmentation fault: 11.
and no other output. If the above command should be run from within the
Makefile can you tell where it should be placed? I have attached the
makefile (made by configure) used.
Having become very attached to recognizers on my 86 based desktop it
would be wonderful to have them available on my M1 based laptop.
Best wishes and thanks,
Tristan
#Makefile for Gforth
#Authors: Bernd Paysan, Anton Ertl, Jens Wilke, David Kühling, Neal Crook, Gerald Wodni, Darren Bane
#Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021 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 3
#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, see http://www.gnu.org/licenses/.
# 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.
# Warning:
# For some stupid reason setting SHELL to bash does not work properly with
# DOS. If you want to use shell-specific things that must run with DOS make
# an external batch file and call it with bash (see versions.bsh).
# ------------- gforth version
VERSION = 0.7.9_20220630
DOSVERSION=`echo $(VERSION)|sed 's/\.//g'|sed 's/-.*//g'`
#release version (between releases this is the prospective next release)
RVERSION = 1.0
# ------------- System specific variables
machine=arm64
kernel_fi=kernl64l.fi
kernel_anti_dependence=gforth.fi
EXE=
# this is the type of machine
# used to extend the include path with ./arch/$machine
# so we can include a machine specific
# machine.h file
PATHSEP = :
EC =
ARCH= @ARCH@
EXT = $(EC)$(EXE)
LA = $(EC).la
EXTRAS=
HOST= gcc
EXTRAPREFIX= /usr/local
FAST= no
PACKAGE_TARNAME= gforth
# ------------ Install Directories
package = $(DESTDIR)
VPATH = .
prefix = /usr/local
docdir= ${datarootdir}/doc/${PACKAGE_TARNAME}
exec_prefix = ${prefix}
srcdir = .
top_srcdir = .
top_builddir = .
bindir = $(package)${exec_prefix}/bin
#read-only architecture-independent files
datarootdir = ${prefix}/share
datadir = $(package)${datarootdir}
#read-only architecture-dependent non-ascii files
libdir = $(package)${exec_prefix}/lib
libccdir = $(subst $(package),,$(libdir)/gforth/$(VERSION)/$(machine)/libcc-named)
buildccdir = lib/gforth/$(VERSION)/$(machine)/libcc-named
includedir = $(package)${prefix}/include
infodir = $(package)${datarootdir}/info
htmldir = $(package)${docdir}
pdfdir = $(package)${docdir}
mandir = $(package)${datarootdir}/man
man1dir= $(mandir)/man1
man1ext= .1
#older emacses have their site-lisp in $(libdir)/emacs/
lispdir=
emacssitestartdir=
siteforthdir=$(libdir)/gforth/site-forth
# ------------- Utility programs
SHELL = /bin/sh
RM = rm
RMTREE = rm -rf
CP = cp -pf
MV = mv
TOUCH = touch -c
TAR = tar cf -
MKDIR = mkdir
MKDIR_P = ./install-sh -c -d
TIMEOUT =
ACLOCAL_AMFLAGS = -I m4
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL}
MASSAGE_EXE = true
INSTALL_SCRIPT = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_INFO = /usr/bin/install-info
LN_S = ln -s -f
M4 = m4 -s
GCC = gcc-11
EMACS = emacs
LIBTOOL = glibtool
PREFORTH = ./preforth -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)"
CC = $(GCC)
EXTRAPATH = $(PATHSEP)/usr/share/gforth/site-forth$(PATHSEP)/usr/local/share/gforth/site-forth
FORTHPATH = .$(PATHSEP)$(siteforthdir)$(PATHSEP)$(datadir)/gforth/site-forth$(PATHSEP)$(libdir)/gforth/$(VERSION)$(PATHSEP)$(datadir)/gforth/$(VERSION)$(EXTRAPATH)
FORTHSIZES =
FORTHS_ARGS = -p ".$(PATHSEP)$(realpath $(srcdir))$(PATHSEP)$(FORTHPATH)"
FORTH_ARGS = --die-on-signal $(FORTHS_ARGS)
ENGINE = ./gforth
DITCENGINE = ./gforth-ditc
FORTH = $(ENGINE) $(FORTH_ARGS)
FORTHS = $(ENGINE) $(FORTHS_ARGS)
# the (existing) forth system to use for cross compiling and primitives tables
# per default we use the one in this directory for a rebuild. It is also
# possible to override this variable at the command line for an initial build (jaw)
BUILDFORTH = $(ENGINE) --die-on-signal -m 4M -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
# the forth system plus flags we use to build
FORTHB = $(BUILDFORTH) exboot.fs -e 'fpath= .|~+|$(srcdir)'
# the Forth system for running prims2x.fs
#FORTHP = $(FORTH)
ENGINE_FAST = ./gforth-fast$(EXT)
FORTH_FAST = $(ENGINE_FAST) $(FORTH_ARGS)
FORTHKFLAGS= --die-on-signal -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)" -i $(kernel_fi)
FORTHK = ./gforthker -p ".$(PATHSEP)~+$(PATHSEP)$(srcdir)"
#FORTHP = $(ENGINE) --die-on-signal -i ./$(kernel_fi)
#the "-2 image-included-files +!" undoes the change to image-included-files
# in exboot.fs
STARTUP = exboot.fs startup.fs arch/arm64/asm.fs arch/arm64/disasm.fs
STRIP = strip
DOSTRIP = true
# ------------- Compiler Flags
XCFLAGS = -g -O2 -fomit-frame-pointer -pthread
XDEFINES = -DHAVE_CONFIG_H
SWITCHES = $(XCFLAGS) $(XDEFINES) $(OPTDEFINES) #-DNDEBUG #turn off assertions
ENGINE_FLAGS = -fno-gcse -fcaller-saves -fno-defer-pop -fno-inline -fwrapv -fno-strict-aliasing -fno-cse-follow-jumps -fno-reorder-blocks -fno-reorder-blocks-and-partition -fno-toplevel-reorder -falign-labels=1 -falign-loops=1 -falign-jumps=1 -fno-delete-null-pointer-checks -fcf-protection=none -pthread -fno-defer-pop -fcaller-saves
DEBUGFLAG =
CFLAGS = $(DEBUGFLAG) -I$(srcdir)/engine -I$(srcdir)/arch/$(machine) -O3 -Wall $(SWITCHES) -DDEFAULTPATH='"$(FORTHPATH)"'
CPPFLAGS = -I/opt/X11/include -I/opt/homebrew/opt/freetype/include/freetype2 -I/opt/homebrew/Cellar/harfbuzz/4.3.0/include/harfbuzz -I/opt/homebrew/opt/freetype/include/freetype2 -I/opt/homebrew/Cellar/graphite2/1.3.14/include -I/opt/homebrew/Cellar/glib/2.72.2/include/glib-2.0 -I/opt/homebrew/Cellar/glib/2.72.2/lib/glib-2.0/include -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/Cellar/pcre/8.45/include -I/opt/homebrew/Cellar/libffi/3.4.2/include -I/opt/homebrew/Cellar/glib/2.72.2/include -I/opt/homebrew/Cellar/glib/2.72.2/include/glib-2.0 -I/opt/homebrew/Cellar/glib/2.72.2/lib/glib-2.0/include -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/Cellar/pcre/8.45/include
#John Wavrik should use -Xlinker -N to get a writable text (executable)
XLDFLAGS = -pthread -L/opt/X11/lib -L/usr/local/lib
LDFLAGS = $(DEBUGFLAG) $(XLDFLAGS)
LDLIBS = -ldl -lm
STACK_CACHE_REGS = 3
STACK_CACHE_DEFAULT_FAST = 1
PROFOBJS =
PROFEXES =
INSTALLDIRS = kernel kernel-ec doc asm ec test test/fp \
compat unix minos2 minos2/unicode minos2/tutorial \
arch arch/generic arch/m68k arch/mips \
arch/386 arch/hppa arch/sparc arch/power \
arch/alpha arch/4stack arch/misc arch/6502 \
arch/8086 arch/avr arch/c165 arch/h8 \
arch/shboom arch/sharc arch/ia64 arch/amd64 \
arch/arm arch/arm64 arch/r8c arch/lm32 arch/riscv
INSTALL_LIBDIRS = unix
INCLUDES = engine/forth.h engine/threaded.h engine/io.h engine/longlong.h \
engine/symver.h
KERN_SRC = \
mach32b.fs mach32l.fs mach64b.fs mach64l.fs \
machpc.fs.in \
kernel/aliases0.fs \
kernel/args.fs \
kernel/cond.fs \
cross.fs \
kernel/errore.fs \
kernel/files.fs \
kernel/require.fs \
kernel/paths.fs \
kernel/kernel.fs \
kernel/main.fs \
kernel/memory.fs \
kernel/prim0.fs \
search.fs \
kernel/quotes.fs \
kernel/tools.fs \
kernel/toolsext.fs \
kernel/vars.fs \
kernel/accept.fs \
kernel/basics.fs \
kernel/int.fs \
kernel/comp.fs \
kernel/recognizer.fs \
kernel/io.fs \
kernel/input.fs \
kernel/input-class.fs \
kernel/license.fs \
kernel/nio.fs \
kernel/saccept.fs \
kernel/doers.fs \
kernel/getdoers.fs \
kernel/copydoers.fs \
kernel/pass.fs \
kernel/header-methods.fs \
kernel/xchars.fs \
kernel/stringk.fs \
kernel/termsize.fs
KERN_EC_SRC = kernel-ec/args.fs kernel-ec/basics.fs kernel-ec/cbr.fs \
kernel-ec/cbrpi.fs kernel-ec/cloop.fs kernel-ec/comp.fs \
kernel-ec/cond.fs kernel-ec/doers.fs kernel-ec/errore.fs \
kernel-ec/getdoers.fs kernel-ec/int.fs kernel-ec/io.fs \
kernel-ec/kernel.fs kernel-ec/license.fs kernel-ec/main.fs \
kernel-ec/nio.fs kernel-ec/pass.fs kernel-ec/quotes.fs \
kernel-ec/saccept.fs kernel-ec/toolsext.fs kernel-ec/tools.fs \
kernel-ec/vars.fs kernel-ec/version.fs
EC_SRC = $(KERN_EC_SRC) \
asm/README \
asm/bitmask.fs \
asm/numref.fs \
chains.fs \
asm/basic.fs \
asm/generic.fs \
asm/target.fs \
ec/README \
ec/mirror.fs \
ec/shex.fs \
ec/builttag.fs \
ec/dotx.fs \
ec/nesting.fs \
build-ec.in
GFORTH_FI_SRC1=\
ansi.fs \
assert.fs \
backtrac.fs \
blocked.fb \
blocks.fs \
bufio.fs \
code.fs \
debug.fs \
debugs.fs \
dis-gdb.fs \
ekey.fs \
GFORTH_FI_SRC2=\
savesys.fs \
closures.fs \
environ.fs \
errors.fs \
exboot.fs \
except.fs \
extend.fs \
forward.fs \
fold.fs \
float.fs \
glocals.fs \
hash.fs \
help.txt \
history.fs \
intcomp.fs \
i18n.fs \
iloops.fs \
libcc.fs \
locals.fs \
locate1.fs \
look.fs \
marker.fs \
mkdir.fs \
obsolete.fs \
prelude.fs \
quotes.fs \
rec-string.fs \
rec-to.fs \
rec-tick.fs \
rec-body.fs \
recognizer2.fs \
search.fs \
sections.fs \
sections2.fs \
see.fs \
see-ext.fs \
simp-see.fs \
source.fs \
stagediv.fs \
startup.fs \
str-exec.fs \
string.fs \
struct.fs \
struct0x.fs \
struct-val.fs \
stuff.fs \
substitute.fs \
tasker.fs \
table.fs \
user-object.fs \
utf-8.fs \
vt100.fs \
vt100key.fs \
wordinfo.fs \
gforthrc.fs \
options.fs \
smartdots.fs \
status-line.fs \
mwords.fs \
arch/386/asm.fs arch/386/disasm.fs \
arch/amd64/asm.fs arch/amd64/disasm.fs \
arch/alpha/asm.fs arch/alpha/disasm.fs arch/alpha/testasm.fs\
arch/arm/asm.fs arch/arm/disasm.fs \
arch/arm64/asm.fs arch/arm64/disasm.fs \
arch/arm64/gpios.fs arch/arm64/spi.fs arch/arm64/i2c.fs \
arch/arm/testdisasm.fs arch/arm/testdisasm.out arch/arm/Makefile \
arch/mips/asm.fs arch/mips/disasm.fs arch/mips/insts.fs \
arch/mips/testasm.fs arch/mips/testdisasm.fs \
arch/power/asm.fs arch/power/disasm.fs arch/power/inst.fs \
arch/lm32/asm.fs arch/lm32/testasm.fs \
arch/riscv/asm.fs arch/riscv/disasm.fs \
arch/riscv/inst16.fs arch/riscv/inst32.fs
# exclude envos.fs from list of distributed sources; don't include compat again
GFORTH_FI_DIST_SRC = \
$(GFORTH_FI_SRC1) \
$(GFORTH_FI_SRC2)
GFORTH_FI_SRC = \
$(GFORTH_FI_SRC1) \
envos.fs \
$(GFORTH_FI_SRC2) \
compat/caseext.fs \
compat/strcomp.fs
SWIGMODULES = x.fs xrandr.fs gles.fs png16.fs freetype_gl.fs
SWIGLIBS = x.fs xrandr.fs png16.fs freetype_gl.fs
SWIG_WRAP = $(patsubst %.fs,unix/%-fsi.c,$(SWIGMODULES))
LIBCC_SRC1 = cstr.fs unix/socket.fs unix/pthread.fs unix/mmap.fs \
unix/serial.fs unix/filestat.fs unix/libc.fs unix/time.fs
LIBCC_SRC = $(patsubst %,unix/%,$(SWIGLIBS))
UNIXLIBS_SRC = unix/opengl.fs unix/opengles.fs unix/opengles3.fs \
unix/jnilib.fs unix/soillib.fs unix/soil2lib.fs unix/android.fs \
unix/openmax.fs unix/cpu.fs unix/png.fs unix/gpslib.fs unix/gstlib.fs \
unix/stb-image.fs unix/stb-image-write.fs
SWIG_SRC = unix/androidlib.i unix/egl.i unix/gles.i unix/gles3.i unix/gl.i \
unix/glx.i unix/jni.i unix/omxal.i unix/openvg.i unix/png16.i \
unix/soil.i unix/soil2.i unix/x.i unix/xrandr.i unix/SDL.i \
unix/v4l2.i unix/ios-gles.i unix/ios-gles3.i unix/freetype_gl.i \
unix/gdi32.i unix/user32.i unix/wayland.i unix/gps.i unix/vulkan.i \
unix/harfbuzz.i unix/gobject.i unix/gst.i unix/avcodec.i unix/pulse.i \
unix/opus.i unix/va.i unix/va_glx.i unix/va_drm.i unix/va_x11.i \
unix/opensles.i unix/spi.i unix/i2c.i
FREETYPE_GL_INCLUDE = freetype-gl/freetype-gl-errdef.h \
freetype-gl/ftgl-utils.h freetype-gl/freetype-gl.h \
freetype-gl/opengl.h freetype-gl/platform.h \
freetype-gl/texture-atlas.h freetype-gl/texture-font.h \
freetype-gl/utf8-utils.h freetype-gl/vec234.h freetype-gl/vector.h \
freetype-gl/distance-field.h freetype-gl/edtaa3func.h
FREETYPE_GL_SRC = freetype-gl/ftgl-utils.c freetype-gl/platform.c \
freetype-gl/texture-atlas.c freetype-gl/texture-font.c \
freetype-gl/utf8-utils.c freetype-gl/distance-field.c \
freetype-gl/vector.c freetype-gl/edtaa3func.c $(FREETYPE_GL_INCLUDE)
EXTRA_DOC = code.fs objects.fs oof.fs moofglos.fs regexp.fs fft.fs \
mkdir.fs cilk.fs coverage.fs $(LIBCC_LIB_SRC)
LIBCC_DIST_SRC = $(SWIG_SRC) unix/test.i unix/Makefile.in unix/doexec \
unix/doprep
LIBCC_FORTH_SRC = libffi.fs fflib.fs $(UNIXLIBS_SRC) $(LIBCC_SRC1)
LIBCC_GEN_SRC = unix/stat.fs $(patsubst %, unix/%, $(SWIGMODULES))
LIBCC_LIB_SRC = $(patsubst %, unix/%, $(SWIGLIBS)) libffi.fs
LIBCC_BUILD_SRC = $(LIBCC_GEN_SRC) libffi.fs
LIBCC_BUILD_LA = $(patsubst %.fs,$(buildccdir)/libgf%.la,$(shell echo $(LIBCC_LIB_SRC) $(LIBCC_SRC1) libcc.fs | sed -e s,unix/,,g))
LIBCC_BUILD_NOEC = $(LIBCC_BUILD_SRC)
UNICODE_SRC = mirror.fs bidi.fs vertical.fs bidi-db.fs mirrors.fs bidis.fs \
verticals.fs unihan.fs unihan.db japanese.db japanese-tc.db brackets.fs brackets.db \
quotation.db Makefile
MINOS2_TUTORIAL = tutorial.fs buttons.fs plots.fs markdown.fs
MINOS2_SRC = gl-helper.fs gl-terminal.fs jpeg-exif.fs linux-gl.fs \
wayland-gl.fs soil-texture.fs gl-sample.fs gl-slideshow.fs \
ftgl-helper.fs ftgl-sample.fs bidi.fs widgets.fs actors.fs \
x11-actors.fs android-actors.fs wayland-actors.fs presentation.fs \
presentation-support.fs mts-tools.fs mkv-tools.fs omx-example.fs \
mkv-tags.fs android-recorder.fs animation.fs need-x.fs font-style.fs \
text-style.fs gst-helper.fs plot.fs md-viewer.fs md-test.fs \
mem-texture.fs pulse-audio.fs sles-audio.fs opus-codec.fs va.fs \
v4l2.fs $(patsubst %, unicode/%, $(UNICODE_SRC)) \
$(pathsubst %, tutorial/%, $(MINOS2_TUTORIAL))
MINOS2_BIN = ascii.png button.png button2.png button3.png bad-gateway.png \
net2o-minos2.png lbubble.png rbubble.png white.png thumb.png
TEST_SRC = tester.fs ttester.fs checkans.fs coretest.fs dbltest.fs \
float.fs gforth.fs forward.fs other.fs postpone.fs read-line.fs \
search.fs signals.fs stagediv.fs string.fs \
primtest.fs coreext.fs deferred.fs coremore.fs gforth-nofast.fs \
libcc.fs macros.fs fp/ak-fp-test.fth fp/fatan2-test.fs \
fp/fpio-test.4th fp/fpzero-test.4th fp/ieee-arith-test.fs \
fp/ieee-fprox-test.fs fp/paranoia.4th fp/readme-fp.txt \
fp/runfptests.fth fp/to-float-test.4th fp/ttester.fs
UNIX_SRC = terminal-server.fs jni-helper.fs jni-tools.fs jni-media.fs \
jni-location.fs sensors.fs win32.fs wayland-interfaces.fs
FORTH_SRC = $(KERN_SRC) $(GFORTH_FI_DIST_SRC) $(EC_SRC) $(LIBCC_FORTH_SRC) \
$(patsubst %, minos2/%, $(MINOS2_SRC)) $(patsubst %, minos2/%, \
$(MINOS2_BIN)) ans-report.fs ansi.fs answords.fs colorize.fs \
comp-i.fs complex.fs depth-changes.fs dosekey.fs doskey.fs ds2texi.fs \
envos.dos envos.os2 etags.fs fft.fs filedump.fs fi2c.fs forward.fs \
fsl-util.4th fsl-util.fs glosgen.fs gray.fs httpd.fs install-tags.fs \
make-app.fs doc/makedoc.fs locate.fs locate1.fs more.fs onebench.fs \
fft-bench.fs other.fs prims2x.fs prims2x0.6.2.fs proxy.fs random.fs \
regexp.fs regexp-test.fs sokoban.fs string.fs table.fs tags.fs tt.fs \
unbuffer.fs wordsets.fs 2012words.fs $(patsubst %, test/%, \
$(TEST_SRC)) bubble.fs siev.fs matrix.fs fib.fs oof.fs oofsampl.fs \
objects.fs objexamp.fs mini-oof.fs moof-exm.fs moofglos.fs fixpath.fs \
mini-oof2.fs moof2-example.fs scope.fs varues.fs callable.fs add.fs \
lib.fs oldlib.fs sieve.fs list.fs endtry-iferror.fs recover-endtry.fs \
$(patsubst %, unix/%, $(UNIX_SRC)) date.fs script.fs wf.fs \
traceall.fs rec-scope.fs rec-env.fs rec-meta.fs notfound.fs utf16.fs \
archive.fs cilk.fs fixfiles.fs bits.fs reverse-words.fs config.fs \
set-compsem.fs coverage.fs tokenize.fs startup-libcc.fs \
status-line.fs unix/opensles-vals.fs recognizer-ext.fs
COMPAT = compat/README \
compat/anslocal.fs \
compat/assert.fs \
compat/caseext.fs \
compat/control.fs \
compat/defer.fs \
compat/exception.fs \
compat/execute-parsing.fs \
compat/loops.fs \
compat/macros.fs \
compat/required.fs \
compat/strcomp.fs \
compat/struct.fs \
compat/vocabulary.fs \
compat/stagediv.fs \
compat/memory.4th \
compat/find-name.fs
GFORTH_TEXI = doc/gforth.texi doc/version.texi
VMGEN_TEXI = doc/vmgen.texi doc/version.texi doc/fdl.texi
ALLSUBDIRS = engine
ARCHS = \
arch/generic/machine.h \
arch/m68k/machine.h \
arch/mips/machine.h \
arch/mips/check_prim.c \
arch/386/machine.h \
arch/386/android/AndroidManifest.xml.in \
arch/386/android/config.sh \
arch/386/android/build.sh \
arch/386/android/starta.fs \
arch/386/android/res \
arch/386/android/src \
arch/hppa/machine.h \
arch/hppa/cache.c \
arch/sparc/machine.h \
arch/power/machine.h \
arch/power/_sync_cache_range.c \
arch/alpha/machine.h \
arch/arm/machine.h \
arch/arm/cacheflush0.c \
arch/arm/cacheflush-linux.c \
arch/arm/android/AndroidManifest.xml.in \
arch/arm/android/config.sh \
arch/arm/android/build.sh \
arch/arm/android/starta.fs \
arch/arm/android/res/drawable-hdpi/ic_launcher.png \
arch/arm/android/res/drawable-ldpi/ic_launcher.png \
arch/arm/android/res/drawable-mdpi/ic_launcher.png \
arch/arm/android/res/drawable-xhdpi/ic_launcher.png \
arch/arm/android/res/values/strings.xml \
arch/arm/android/src/gnu/gforth/Gforth.java \
arch/arm/ev3/config.sh \
arch/ia64/machine.h \
arch/ia64/flush_icache_block.c \
arch/amd64/machine.h \
arch/arm64/android/AndroidManifest.xml.in \
arch/arm64/android/config.sh \
arch/arm64/android/build.sh \
arch/arm64/android/starta.fs \
arch/arm64/android/res \
arch/arm64/android/src \
arch/arm64/machine.h \
arch/arm64/cacheflush.c \
arch/4stack/README \
arch/4stack/asm.fs \
arch/4stack/mach.fs \
arch/4stack/prim.fs \
arch/4stack/mach.sh \
arch/4stack/relocate.fs \
arch/misc/README \
arch/misc/asm.fs \
arch/misc/mach.fs \
arch/misc/optcmove.fs \
arch/misc/prim.fs \
arch/misc/sim.fs \
arch/misc/sokoban.fs \
arch/misc/tt.fs \
arch/6502/prim.fs \
arch/6502/mach.fs \
arch/shboom/asm.fs \
arch/shboom/compiler.fs \
arch/shboom/dis.fs \
arch/shboom/mach.fs \
arch/shboom/prim.fs \
arch/shboom/dis2.fs \
arch/shboom/sh.p \
arch/shboom/doers.fs \
arch/sharc/mach.fs \
arch/sharc/machine.h \
arch/sharc/compile.sharc \
arch/sharc/systypes.h \
arch/sharc/types.h \
arch/sharc/g21k-3.3.4-bp1.diff \
arch/r8c/asm.fs \
arch/r8c/mach.fs \
arch/r8c/errors.fs \
arch/r8c/prim.fs \
arch/r8c/asm-test.fs \
arch/r8c/errors.fs \
arch/r8c/lauflicht.fs \
arch/r8c/tasker.fs \
arch/r8c/terminal.fs \
arch/r8c/tt.fs \
arch/riscv/machine.h \
arch/riscv/asm.fs \
arch/riscv/disasm.fs \
arch/riscv/inst16.fs \
arch/riscv/inst32.fs \
arch/sharc/unistd.h \
arch/lm32/mach.fs \
arch/lm32/mach.sh \
arch/lm32/prim.fs \
arch/lm32/Makefile \
arch/lm32/testasm.disas-ok \
engine/arm64-cacheflush.c \
engine/arm-cacheflush0.c \
engine/arm-cacheflush-linux.c \
engine/hppa-cache.c \
engine/ia64-flush_icache_block.c \
engine/mips_check_prim.c \
engine/power_sync_cache_range.c
#not included in distribution until distribution terms are included:
ARCHS_NO_DIST = \
arch/6502/asm.fs \
arch/6502/cold.fs \
arch/6502/softuart.fs \
arch/6502/zero.fs \
arch/8086/asm.fs \
arch/8086/mach.fs \
arch/8086/mach.sh \
arch/8086/prim.fs \
arch/avr/asm.fs \
arch/c165/asm.fs \
arch/c165/mach.fs \
arch/c165/prim.fs \
arch/h8/asm.fs \
arch/r8c/tt.fs
# temporary change. DO NOT COMMIT
ARCHS += $(ARCHS_NO_DIST)
VMGEN_EX = vmgen-ex/Makefile vmgen-ex/README vmgen-ex/disasm.c \
vmgen-ex/engine.c vmgen-ex/fib.mini \
vmgen-ex/mini-inst.vmg vmgen-ex/mini-super.vmg vmgen-ex/mini.h \
vmgen-ex/mini.l vmgen-ex/mini.y vmgen-ex/peephole-blacklist \
vmgen-ex/peephole.c vmgen-ex/profile.c vmgen-ex/seq2rule.awk \
vmgen-ex/simple.mini vmgen-ex/stat.awk vmgen-ex/support.c \
vmgen-ex/test.mini vmgen-ex/test.out
VMGEN_EX2 = $(VMGEN_EX:vmgen-ex/%=vmgen-ex2/%)
ENGINE_SOURCES = engine/Makefile.in engine/config.h.in \
engine/engine.c engine/main.c engine/libmain.c engine/io.c \
engine/support.c engine/signals.c engine/libcc.h \
engine/gforth.h.in engine/profile.c engine/128bit.h \
engine/getopt.c engine/getopt1.c engine/getopt.h \
engine/select.c engine/memcmp.c engine/rint.c \
engine/strtol.c engine/strtoul.c engine/ansidecl.h \
engine/memmove.c engine/exp10.c engine/atanh.c \
engine/cleanalign.c engine/strerror.c engine/strsignal.c \
engine/dblsub.c engine/fnmatch.h engine/fnmatch.c \
engine/zexpand.c engine/androidmain.c engine/sincos.c \
$(INCLUDES)
DOCKER = docker/runner/Dockerfile.in docker/runner/build.sh \
docker/builder/Dockerfile docker/builder/build.sh
SOURCES = $(ENGINE_SOURCES) compat Makefile.in Makedist.in unix/Makefile.in \
gforthmi.in gforthmi.sh.in vmgen.in preforth.in libforth.in \
gforthker.in README.vmgen NEWS.vmgen autogen.sh configure.ac \
configure config.sub config.guess elisp-comp stamp-h.in envos.fs.in \
kernel/version.fs.in iss.sh wininst.sh modpath.iss firewall.iss \
install-sh INSTALL.md NEWS README README.md ToDo BUGS \
BUILD-FROM-SCRATCH model COPYING COPYING.LIB COPYING.DOC AUTHORS \
ChangeLog Benchres aclocal.m4 ltmain.sh doc/Makefile.in \
doc/gforth.texi.in $(wildcard $(srcdir)/doc/words/*-words) \
doc/words/README doc/gforth.1 doc/gforth.css doc/version.texi.in \
doc/vmgen.texi doc/fdl.texi doc/gpl.texi gforth.el $(ARCHS) \
siteinit.fs versions.bsh glosgen.glo doc/glossaries.doc $(FORTH_SRC) \
$(LIBCC_DIST_SRC) $(LIBCC_GEN_SRC) $(COMPAT) $(VMGEN_EX) $(VMGEN_EX2) \
$(FREETYPE_GL_SRC) timings.sc test/coretest.out test/checkans.out \
test/gforth.out test/read-line.input test/read-line2.input \
test/read-line.out test/fp/fptest.out $(wildcard \
$(srcdir)/cache*.vmg) peeprules.vmg prim debian/rules \
debian/control.in debian/changelog.in debian/compat gforth.ico \
.travis.yml install-deps.sh install-swig.sh install-freetype-gl.sh \
$(SWIG_WRAP) m4/ax_gcc_builtin.m4 move-if-change $(DOCKER)
CONFIG_GEN = Makefile Makedist gforthmi gforthmi.sh vmgen preforth \
libforth gforthker engine/Makefile engine/gforth.h \
doc/version.texi doc/Makefile unix/Makefile debian/changelog \
debian/control build-ec $(CONFIG_FORTH)
CONFIG_FORTH = machpc.fs kernel/version.fs envos.fs
RCS_FILES = ToDo model high-level
ENGINES = gforth$(EXT) gforth-ditc$(EXT) gforth-itc$(EXT) $(PROFEXES)
ENGINES_FAST = gforth-fast$(EXT)
LIBENGINES = $(ENGINES:%=lib%)
LIBENGINES_FAST = $(ENGINES_FAST:%=lib%)
GEN = $(ENGINES) $(ENGINES_FAST) gforth.elc
# things that need a working forth system to be generated
FORTH_GEN_ENGINE=engine/prim.i engine/prim_lab.i engine/prim_names.i \
engine/prim_superend.i engine/profile.i \
engine/prim_num.i engine/prim_grp.i \
engine/costs.i engine/super2.i
FORTH_GEN_ENGINE_FAST= engine/prim-fast.i \
engine/prim_lab-fast.i engine/prim_names-fast.i \
engine/prim_superend-fast.i engine/profile-fast.i \
engine/prim_num-fast.i engine/prim_grp-fast.i \
engine/costs-fast.i engine/super2-fast.i
FORTH_GEN_PRIMB = $(FORTH_GEN_ENGINE) kernel/aliases.fs kernel/prim.fs\
kernel/authors.fs
FORTH_GEN0 = prim.b $(FORTH_GEN_PRIMB)
FORTH_GEN_FAST = prim-fast.b $(FORTH_GEN_ENGINE_FAST)
FORTH_GEN = $(FORTH_GEN0) kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi gforth.fi
# this is used for antidependences,
FORTH_GEN1 = $(FORTH_GEN0) kernl64l.fi build-ec
#kernel dependencies
KERN_DEPS = $(KERN_SRC) kernel/aliases.fs kernel/version.fs kernel/authors.fs \
machpc.fs $(FORTH_GEN0) compat/strcomp.fs
#distributed documentation
DOCDIST = doc/gforth.info $(wildcard doc/gforth.info-*) doc/gforth.ps \
doc/gforth.txt doc/vmgen.info doc/vmgen.ps
BKERNLS = kernl32b$(EC).fi kernl32l$(EC).fi \
kernl64b$(EC).fi kernl64l$(EC).fi
KERNLS = kernl32b$(EC).fi- kernl32l$(EC).fi- \
kernl64b$(EC).fi- kernl64l$(EC).fi-
# ------------- Make forth images
GEN_PRECIOUS = $(FORTH_GEN) $(KERNLS) \
doc/gforth.texi doc/gforth.dvi doc/gforth.ps \
doc/vmgen.dvi doc/vmgen.ps \
$(CONFIG_GEN) configure
#search path pattern
vpath %.fs $(srcdir):.:$(srcdir)/unix:$(srcdir)/test:unix
#standards.info recommends this:
.SUFFIXES:
.SUFFIXES: .c .o
all: kernel/version.fs more doc start-gforth.el check extras
# use this dependency for phony targets just as mostlyclean,...
FORCE: ;
#targets of failed commands should be deleted:
.DELETE_ON_ERROR:
#this rule avoids remaking everything after minor changes in Makefile.in
#disabled now, as it doesn't have the wanted effect
#version: Makefile.in configure.ac
# echo $(VERSION) > $@
# With dos we use normal dos echo
# we cannot pipe the output to engine/version.h directly because
# of the "/ and \" problem. Copying works because we use the
# shell und file utilities.
#kernel/version.fs: version
# echo ": version-string s\" $(VERSION)\" ;" > kernel/version.fs
more: $(ENGINES) $(FORTH_GEN) $(GEN) libgforths build-libcc-named
#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."
mostlyclean: FORCE
-$(RMTREE) engine/*.s gforth.fi *.fi~ *.fi- kernel/version.fs \
kernel/authors.fs *TAGS gforth~ \
doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
doc/gforth.aux doc/gforth.cp doc/gforth.cps \
doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
doc/gforth.pg \
doc/gforth.toc doc/gforth.tp doc/gforth.vr html \
gforth-$(VERSION).tar.gz
(cd unix && $(MAKE) clean)
# Just the stuff needed to rebuild the documentation nac03feb1999
docclean: FORCE
-$(RMTREE) doc/crossdoc.fd doc/doc.fd doc/gforth.texi doc/gforth.fns \
doc/gforth.aux doc/gforth.cp doc/gforth.cps \
doc/gforth.dvi doc/gforth.fn doc/gforth.ky doc/gforth.log \
doc/gforth.pg \
doc/gforth.toc doc/gforth.tp doc/gforth.vr html
clean: mostlyclean
-$(RMTREE) $(GEN) *.o engine/*.o engine/*.lo engine/*.la \
engine/.libs engine/libgforth* libgforth* arch/*/*.o \
gforth-itc-noll$(EXT) engine/gforth-itc-noll$(EXT) \
gforth-ditc-noll$(EXT) engine/gforth-ditc-noll$(EXT) \
gforth-prof-noll$(EXT) engine/gforth-prof-noll$(EXT) \
engine/prim-s.i $(FORTH_GEN_ENGINE) $(FORTH_GEN_ENGINE_FAST)
for i in gforth gforth-fast; do for j in $(OPTS); do rm -f engine/$$i$${j}$(EXT) $$i$${j}$(EXT); done; done
-$(RMTREE) $(buildccdir)
(cd unix; $(MAKE) clean)
distclean: clean
-$(RMTREE) config.cache config.log config.status \
engine/config.h engine/gforth.h Makefile Makedist \
engine/Makefile stamp-h engine/stamp-h doc/version.texi \
gforthmi vmgen preforth $(FORTH_GEN0) $(FORTH_GEN_FAST) \
start-gforth.el
-(cd libltdl && make distclean)
#realclean is useless, but dangerous, so it's commented out
realclean: distclean
-$(RMTREE) $(GEN_PRECIOUS) `cat .cvsignore`
kernel-clean:
-$(RMTREE) $(KERNLS) $(BKERNLS)
fresh: kernel-clean all
#mostlyclean, but also remove some of the stuff that is distributed
virtualclean: mostlyclean
-$(RMTREE) gforth.fns gforth.texi gforth.ps gforth.info* \
gforth-$(VERSION).tar.gz config.cache *~ */*~
maintainer-clean: realclean
#Some makes (Ultrix, SunOS, IRIX) are so broken, they cannot read the
#Makefile if it contains our dist rules. Therefore we have put these
#rules in Makedist (you can use them with GNU make on these systems).
debdist:
setup-debdist docdist htmldist dist: doc
dist srcdist srconlydist docdist htmldist bindist binonlydist debdist setup-debdist: Makedist FORCE
$(MAKE) -f Makedist d$@
#HPUX make breaks the cycle differently when the dates are equal, so
# touch some of the files if it acts up
hpux-workaround:
$(TOUCH) $(FORTH_GEN_PRIMB)
#strip gforth, because the debugging stuff is hardly useful once
# gforth manages to execute more than a few primitives.
#install does not depend on gforth.info, because that would require
#supplying a lot of files that can be easily generated (only info is
#hard to generate).
#we rebuild gforth.fi, because it contains some path names.
#we delete $build/gforth.fi and $build/install.TAGS after installation because of ownership.
normal-install:
$(NORMAL_INSTALL)
INSTEXES=gforth gforth-fast gforth-itc gforth-ditc
INSTSCRIPTS=gforthmi vmgen
INSTSUFFIX="" -$(VERSION) -$(machine) -$(VERSION)-$(machine)
rm-install:
-for i in $(INSTEXES); do \
for j in $(INSTSUFFIX); do \
$(RM) $(bindir)/$$i$$j$(EXT); \
done \
done
-for i in $(INSTSCRIPTS); do \
for j in $(INSTSUFFIX); do \
$(RM) $(bindir)/$$i$$j; \
done \
done
install-prog-bins:
for i in $(INSTEXES); do \
$(INSTALL_PROGRAM) $$i$(EXT) $(bindir)/$$i-$(VERSION)-$(machine)$(EXT); \
$(MASSAGE_EXE) $(bindir)/$$i-$(VERSION)-$(machine)$(EXT) || true; \
done
$(INSTALL_SCRIPT) gforthmi $(bindir)/gforthmi-$(VERSION)-$(machine)
$(INSTALL_SCRIPT) vmgen $(bindir)/vmgen-$(VERSION)
install-progs:
for i in $(INSTEXES) gforthmi; do \
for j in "" -$(VERSION) -$(machine); do \
(cd $(bindir) && $(LN_S) $$i-$(VERSION)-$(machine)$(EXT) $$i$$j$(EXT)); \
done \
done
(cd $(bindir) && $(LN_S) vmgen-$(VERSION) vmgen)
install-sources:
-for i in doc/gforth.info* doc/vmgen.info*; do $(INSTALL_DATA) $$i $(infodir); done
for i in $(FORTH_SRC) $(COMPAT) prim; do \
$(INSTALL_DATA) $(srcdir)/$$i $(datadir)/gforth/$(VERSION)/$$i; \
done
install-gensources:
for i in $(LIBCC_GEN_SRC) envos.fs machpc.fs; do \
$(INSTALL_DATA) $$i $(libdir)/gforth/$(VERSION)/$$i; \
done
for i in kernel/prim.fs kernel/aliases.fs kernel/version.fs kernel/authors.fs; do \
$(INSTALL_DATA) $$i $(datadir)/gforth/$(VERSION)/$$i; \
done
$(INSTALL_DATA) $(srcdir)/siteinit.fs $(siteforthdir)/siteinit.fs
install-txt: txt
$(INSTALL_DATA) doc/gforth.txt $(datadir)/gforth/$(VERSION)/doc/gforth.txt
install-images: install-txt
$(INSTALL_DATA) $(kernel_fi) $(libdir)/gforth/$(VERSION)
HOSTPREFIX="$(HOST)" GFORTHD="$(DITCENGINE)$(EXT) -p $(siteforthdir)$(PATHSEP)$(siteforthdir)$(PATHSEP)$(datadir)/gforth/$(VERSION)$(PATHSEP)$(libdir)/gforth/$(VERSION) -i $(kernel_fi)" GFORTH="$(DITCENGINE)$(EXT) -p $(siteforthdir)$(PATHSEP)$(siteforthdir)$(PATHSEP)$(datadir)/gforth/$(VERSION)$(PATHSEP)$(libdir)/gforth/$(VERSION) --die-on-signal --debug-mcheck -i $(kernel_fi) exboot.fs startup.fs" includedir=$(subst $(package),,$(includedir)) bindir=$(subst $(package),,$(bindir)) libccdir=$(libccdir) GFORTHPATH=.:"$$GFORTHPATH" GFORTHDESTDIR="$(package)" ./gforthmi gforth.fi.install $(FORTHSIZES) $(STARTUP) fixfiles.fs
$(INSTALL_DATA) gforth.fi.install $(libdir)/gforth/$(VERSION)/gforth.fi
install-include:
$(MKDIR_P) $(includedir)/gforth/$(VERSION)/$(machine) $(includedir)/freetype-gl
$(INSTALL_DATA) engine/config.h $(srcdir)/engine/libcc.h $(includedir)/gforth/$(VERSION)/$(machine)
$(INSTALL_DATA) engine/gforth.h $(includedir)
for i in $(FREETYPE_GL_INCLUDE); do \
$(INSTALL_DATA) $(srcdir)/$$i $(includedir)/freetype-gl; done
install-libcc:
if test -n "$(LIBTOOL)"; then for i in $(LIBCC_SRC1) $(LIBCC_LIB_SRC); do \
$(LIBTOOL) --silent --mode=install $(INSTALL) $(buildccdir)/libgf`basename $$i .fs`.la `(cd $(package)$(libccdir); pwd)`/libgf`basename $$i .fs`.la; \
done; fi
install-man:
-$(INSTALL_DATA) $(srcdir)/doc/gforth.1 $(man1dir)
install-info: doc
$(MKDIR_P) $(infodir)
$(INSTALL_INFO) --info-dir=$(infodir) doc/gforth.info $(infodir)/gforth.info
$(INSTALL_INFO) --info-dir=$(infodir) doc/vmgen.info $(infodir)/vmgen.info
install-html: html
$(MKDIR_P) $(htmldir)/html
$(CP) doc/gforth/* $(htmldir)/html
$(MKDIR_P) $(htmldir)/../vmgen/html
$(CP) doc/vmgen/* $(htmldir)/../vmgen/html
install-pdf: pdf
$(MKDIR_P) $(pdfdir)
$(MKDIR_P) $(pdfdir)/../vmgen
$(CP) doc/gforth.pdf $(pdfdir)
$(CP) doc/vmgen.pdf $(pdfdir)/../vmgen/
install-tags: install.TAGS
$(INSTALL_DATA) install.TAGS $(datadir)/gforth/$(VERSION)/TAGS
install-elc:
@if test -n ""; then \
$(MKDIR_P) $(lispdir); \
for i in gforth.el gforth.elc; do \
$(INSTALL_DATA) $$i $(lispdir); \
done; \
else \
echo '>>>>>Please install gforth.{el,elc} in your .../emacs/site-lisp directory'; \
fi
@if test -n ""; then \
$(MKDIR_P) $(emacssitestartdir); \
for i in start-gforth.el; do \
$(INSTALL_DATA) $$i $(emacssitestartdir) || true; \
done; \
else \
echo '>>>>>Please install start-gforth.{el,elc} in your .../emacs/.../site-start.d directory'; \
fi
installdeps: gforth$(EXT) $(FORTH_SRC) $(kernel_fi) gforthmi vmgen doc/gforth.1 prim gforth.fi start-gforth.el build-libcc-named
install-indep: installdeps installdirs-indep install-sources install-man install-elc
install-arch: installdeps installdirs-arch normal-install rm-install install-prog-bins install-gensources install-images install-include install-libcc install-tags libinstall extra-install
install-seq: install-indep install-arch install-txt install-info
post-inst:
$(RM) TAGS gforth.TAGS install.TAGS prim.TAGS gforth.fi.install start-gforth.el*
-$(RM) libgforth*
$(POST_INSTALL)
@test 0$$SUDO_UID -ne 0 && find . -user root | sed -e 's/^/failed to clean: /g' || true
@echo
@echo
@echo "============= INSTALL SUCCEEDED ============="
@echo "Bash users: type 'hash -r' to empty the cache"
install: installdeps install-seq install-progs post-inst
installnodep: installdirs install-seq install-progs post-inst
install-strip: install
libinstall: $(ENGINES:%$(EXT)=lib%$(EXT)) $(ENGINES_FAST:%$(EXT)=lib%$(EXT))
for i in $(ENGINES:%$(EXT)=lib%$(EC)) $(ENGINES_FAST:%$(EXT)=lib%$(EC)); do \
$(LIBTOOL) --silent --mode=install $(INSTALL) engine/$$i.la `(cd $(libdir); pwd)`/$$i.la; \
done
installdirs: installdirs-arch installdirs-indep
installdirs-arch:
$(NORMAL_INSTALL)
for i in $(bindir) $(libdir)/gforth/$(VERSION) $(siteforthdir) $(siteforthdir) $(package)$(libccdir); do \
$(MKDIR_P) $$i; \
done
for i in $(INSTALL_LIBDIRS); do \
$(MKDIR_P) $(libdir)/gforth/$(VERSION)/$$i; \
done
installdirs-indep:
$(NORMAL_INSTALL)
for i in $(man1dir) $(infodir) $(datadir)/gforth/$(VERSION) $(datadir)/gforth/site-forth; do \
$(MKDIR_P) $$i; \
done
for i in $(INSTALLDIRS); do \
$(MKDIR_P) $(datadir)/gforth/$(VERSION)/$$i; \
done
#deinstall all files specific to this version of gforth
#to uninstall version foo, type `make uninstall VERSION=foo'
uninstall: FORCE
$(NORMAL_UNINSTALL)
-$(RMTREE) $(libdir)/gforth/$(VERSION) $(datadir)/gforth/$(VERSION) $(includedir)/gforth/$(VERSION)/$(machine)
-for i in "$(EXT)" -$(VERSION)$(EXT) -$(machine)$(EXT) -$(VERSION)-$(machine)$(EXT); do $(RM) $(bindir)/gforth$$i $(bindir)/gforth-fast$$i $(bindir)/gforth-itc$$i $(bindir)/gforth-ditc$$i $(bindir)/gforthmi$$i ; done
-$(RM) $(bindir)/vmgen-$(VERSION)
-$(RMTREE) $(incdir)/gforth/$(VERSION)/$(machine)
@echo "To remove Gforth completely, type\n$(RMTREE) $(man1dir)/gforth.1 $(infodir)/gforth.info* $(datadir)/gforth $(libdir)/gforth $(bindir)/vmgen"
# Extra dependency for libraries that use libc
$(buildccdir)/libgfmmap.la: $(buildccdir)/libgflibc.la
$(buildccdir)/libgfpthread.la: $(buildccdir)/libgflibc.la
$(buildccdir)/libgfserial.la: $(buildccdir)/libgflibc.la
$(buildccdir)/libgfsocket.la: $(buildccdir)/libgflibc.la
$(buildccdir)/libgf%.la: %.fs $(FORTH_GEN) $(GEN) $(LIBCC_LIB_SRC) libforth
-./libforth $(package)$(libccdir) $< -e bye
-$(TOUCH) $@
$(buildccdir)/libgflibcc.la: test/libcc.fs $(FORTH_GEN) $(GEN) $(LIBCC_LIB_SRC) libforth
-./libforth $(package)$(libccdir) $< -e bye
-$(TOUCH) $@
build-libcc-named libcc: build-libcc-swig $(LIBCC_BUILD_LA) libccdir
libccdir: $(buildccdir)
$(buildccdir):
$(MKDIR_P) $(buildccdir)
build-libcc-swig: $(LIBCC_GEN_SRC)
$(LIBCC_GEN_SRC):
(cd unix; $(MAKE) $(patsubst unix/%,%,$@))
check: gforths gforth.fi more
$(MAKE) checkones
@echo "*** Check successful ***"
./gforth-fast$(EXT) --diag -e '." in gforth-fast" cr bye'
./gforth$(EXT) --diag -e '." in gforth" cr bye'
./libgforth-fast$(EXT) --diag -e '." in libgforth-fast" cr bye'
./libgforth$(EXT) --diag -e '." in libgforth" cr bye'
checkones: checkg checkgi checkgdi checkgf checkgd checkgfd checklibg checklibgi checklibgdi checklibgf checklibgd checklibgfd
CHECK = >$@.check 2>&1 || cat $@.check this-file-does-not-exist 2>/dev/null
checklibg:
$(MAKE) checkone check-nofast ENGINE="./libgforth$(EXT) --no-dynamic" $(CHECK)
-@$(RM) $@.check
checklibgi:
$(MAKE) checkone check-nofast ENGINE="./libgforth-itc$(EXT)" $(CHECK)
-@$(RM) $@.check
checklibgdi:
$(MAKE) checkone check-nofast ENGINE="./libgforth-ditc$(EXT)" $(CHECK)
-@$(RM) $@.check
checklibgf:
$(MAKE) checkone ENGINE="./libgforth-fast$(EXT) --no-dynamic" $(CHECK)
-@$(RM) $@.check
checklibgd:
$(MAKE) checkone check-nofast ENGINE="./libgforth$(EXT)" $(CHECK)
-@$(RM) $@.check
checklibgfd:
$(MAKE) checkone ENGINE="./libgforth-fast$(EXT)" $(CHECK)
-@$(RM) $@.check
checkg:
$(MAKE) checkone check-nofast ENGINE="./gforth$(EXT) --no-dynamic" $(CHECK)
-@$(RM) $@.check
checkgi:
$(MAKE) checkone check-nofast ENGINE="./gforth-itc$(EXT)" $(CHECK)
-@$(RM) $@.check
checkgdi:
$(MAKE) checkone check-nofast ENGINE="./gforth-ditc$(EXT)" $(CHECK)
-@$(RM) $@.check
checkgf:
$(MAKE) checkone ENGINE="./gforth-fast$(EXT) --no-dynamic" $(CHECK)
-@$(RM) $@.check
checkgd:
$(MAKE) checkone check-nofast ENGINE="./gforth$(EXT)" $(CHECK)
-@$(RM) $@.check
checkgfd:
$(MAKE) checkone ENGINE="./gforth-fast$(EXT)" $(CHECK)
-@$(RM) $@.check
checkone test: gforth.fi engine/prim-s.i
$(TIMEOUT) $(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>/dev/null | tr -d '\015' | diff -r -u - $(srcdir)/test/coretest.out
$(TIMEOUT) $(FORTH) test/other.fs -e bye
$(TIMEOUT) $(FORTHS) test/signals.fs -e bye
$(TIMEOUT) $(FORTHS) test/coremore.fs test/gforth.fs test/macros.fs -e bye 2>&1 | tr -d '\015' | diff -u $(srcdir)/test/gforth.out -
$(TIMEOUT) $(FORTH) code.fs test/checkans.fs -e bye | tr -d '\015' | diff -u $(srcdir)/test/checkans.out -
$(TIMEOUT) $(FORTH) prims2x.fs -e \
"c-flag on s\" prim.i\" out-filename 2! s\" prim.b\" ' output-c ' output-c-combined process-file bye"| \
tr -d '\015' | grep -v '^#line '|diff -u engine/prim-s.i -
-$(TIMEOUT) $(FORTH) test/fp/runfptests.fth -e bye | diff -u $(srcdir)/test/fp/fptest.out - || echo "Floating point test failed"
$(TIMEOUT) $(FORTHS) test/read-line.fs -e bye | diff -u - $(srcdir)/test/read-line.out
check-nofast: gforth.fi
$(TIMEOUT) $(FORTHS) test/gforth-nofast.fs -e bye
test/primtest.fi: test/primtest.fs mach32l.fs cross.fs
$(TIMEOUT) $(FORTHB) -e 's" mach32l.fs"' $(srcdir)/test/primtest.fs -e "save-cross $@ $(bindir)/gforth-$(VERSION) bye"
primtest: gforth test/primtest.fi FORCE
(echo rs|ENVVAR=bla ./gforth -i test/primtest.fi); echo $$?
bench: gforth-fast$(EXT) gforth.fi
@echo 'Each benchmark takes about 30s on a 486-66 (gcc-2.6.3 -DFORCE_REG)'
time $(FORTH_FAST) siev.fs -e "main bye"
time $(FORTH_FAST) bubble.fs -e "main bye"
time $(FORTH_FAST) matrix.fs -e "main bye"
time $(FORTH_FAST) fib.fs -e "main bye"
time $(FORTH_FAST) fft-bench.fs -e "main bye"
onebench one-bench:
$(FORTH_FAST) onebench.fs
threebench 3-bench:
$(FORTH_FAST) onebench.fs -e "run-bench cr run-bench cr bye"
all-bench allbench:
./gforth-fast$(EXT) --dynamic onebench.fs
./libgforth-fast$(EXT) --dynamic onebench.fs
./gforth-fast$(EXT) --no-dynamic onebench.fs
./libgforth-fast$(EXT) --no-dynamic onebench.fs
./gforth$(EXT) --dynamic onebench.fs
./libgforth$(EXT) --dynamic onebench.fs
./gforth$(EXT) --no-dynamic onebench.fs
./libgforth$(EXT) --no-dynamic onebench.fs
./gforth-itc$(EXT) onebench.fs
./libgforth-itc$(EXT) onebench.fs
./gforth-ditc$(EXT) onebench.fs
./libgforth-ditc$(EXT) onebench.fs
EXTRAVARS="GCC=$(GCC)" "CFLAGS=$(XCFLAGS)" "LIBTOOL=$(LIBTOOL)" "HOST=$(HOST)" "SRC=$(shell pwd)" "ENGINE=$(DITCENGINE) -i $(shell pwd)/gforth.fi" "LIBCCNAMED=$(shell pwd)/$(buildccdir)" "libccdir=$(libccdir)" "package=$(package)" "PREFIX=$(EXTRAPREFIX)" "datadir=$(datadir)/gforth/$(VERSION)" "ARCH=" "FAST=$(FAST)" "GFVER=$(VERSION)"
extras: gforth.fi $(EXTRAS:%=%.extras)
%.extras:
cd $(@:%.extras=%); \
$(MAKE) -f ./Makefile configs $(EXTRAVARS); \
$(MAKE) -f ./Makefile all $(EXTRAVARS);
extra-install: gforth.fi $(EXTRAS:%=%.extrasinst)
%.extrasinst:
cd $(@:%.extrasinst=%); $(MAKE) -f ./Makefile extra-install $(EXTRAVARS)
# ------------- Make forth images
kernel/authors.fs: AUTHORS Makefile.in
echo ": authors ( -- ) cr" >kernel/authors.fs
echo " \G show the list of authors" >>kernel/authors.fs
grep '^[ND]:' $< | sed -e 's/^N: \(.*\)/ 1 attr\! ." \1:" 0 attr\! cr /g' -e 's/^D: \(.*\)/ ." \1" cr /g'>>kernel/authors.fs
echo ";" >>kernel/authors.fs
# How to make new images:
# 1. Produce an image called kernlXYZ.fi-
# the original kernel.fi is not touched because it's needed for creation
# 2. copy old kernlXYZ.fi to kernlXYZ.fi~
# that's a backup copy in case the new kernels don't work
# 3. copy new kernels to kernlXYZ.fi
# these are the ones we want to use now
kernl32l$(EC).fi-: $(KERN_DEPS) mach32l.fs preforth
-$(CP) kernl32l$(EC).fi kernl32l$(EC).fi~
$(PREFORTH) -e 's" mach32l.fs" include $(srcdir)/kernel/main.fs' -e "save-cross kernl32l$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
kernl32b$(EC).fi-: $(KERN_DEPS) mach32b.fs preforth
-$(CP) kernl32b$(EC).fi kernl32b$(EC).fi~
$(PREFORTH) -e 's" mach32b.fs" include $(srcdir)/kernel/main.fs' -e "save-cross kernl32b$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
kernl64l$(EC).fi-: $(KERN_DEPS) mach64l.fs preforth
-$(CP) kernl64l$(EC).fi kernl64l$(EC).fi~
$(PREFORTH) -e 's" mach64l.fs" include $(srcdir)/kernel/main.fs' -e "save-cross kernl64l$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
kernl64b$(EC).fi-: $(KERN_DEPS) mach64b.fs preforth
-$(CP) kernl64b$(EC).fi kernl64b$(EC).fi~
$(PREFORTH) -e 's" mach64b.fs" include $(srcdir)/kernel/main.fs' -e "save-cross kernl64b$(EC).fi- $(bindir)/gforth-$(VERSION) bye"
# Atomic copy, as kernel might be loaded concurrently
kernl%$(EC).fi: kernl%$(EC).fi-
-$(CP) $< $@+
-$(MV) $@+ $@
-$(TOUCH) $@
#Solaris make does not like that:
kernl-%.fi: arch/%/mach.fs arch/%/prim.fs arch/%/asm.fs $(KERN_SRC) kernel/version.fs $(FORTH_GEN0) preforth kernl64l.fi
$(PREFORTH) -e 's" $<" include $(srcdir)/kernel-ec/main.fs' -e "save-cross $@- $(bindir)/gforth-$(VERSION) bye"
if [ -f `echo $< | sed s/fs/sh/` ]; \
then sh `echo $< | sed s/fs/sh/` $@; \
else $(CP) $@- $@; \
fi
#SunOS make does not like that
#arch/%/mach.fs: arch/%/prim.fs arch/%/asm.fs
gforth.fi: $(kernel_fi) gforthmi gforth-ditc$(EXT) $(GFORTH_FI_SRC) comp-i.fs
HOSTPREFIX="$(HOST)" GFORTHD="$(DITCENGINE)$(EXT) -p .$(PATHSEP)~+$(PATHSEP)$(srcdir)" GFORTH="$(DITCENGINE)$(EXT) --die-on-signal --debug-mcheck -p .$(PATHSEP)~+$(PATHSEP)$(srcdir) -i $(kernel_fi) $(STARTUP)" includedir=`pwd`/include extrastuff=' -I'`pwd`/include/gforth/$(VERSION)/$(machine) bindir=`pwd` libccdir=`pwd`/$(buildccdir) ./gforthmi gforth.fi $(FORTHSIZES) $(FORTHKFLAGS) $(STARTUP)
# ------------- Make c-engine
prim.b: prim cache0.vmg Makefile.in preforth.in
(cd $(srcdir) && $(M4) -Dcondbranch_opt=0 prim) >$@
# sleep 1 #should make hpux-workaround unnecessary
prim-fast.b: prim cache-fast$(STACK_CACHE_DEFAULT_FAST).vmg cache-regs$(STACK_CACHE_REGS).vmg peeprules.vmg Makefile.in preforth.in gforth$(EXT)
(cd $(srcdir) && $(M4) -Dcondbranch_opt=1 -DSTACK_CACHE_FILE=cache-fast$(STACK_CACHE_DEFAULT_FAST).vmg -DSTACK_CACHE_REGS=cache-regs$(STACK_CACHE_REGS).vmg prim) >$@
# sleep 1 #should make hpux-workaround unnecessary
engine/prim.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" prim.i\" save-mem out-filename 2! s\" "$<"\" ' output-c ' output-c-combined process-file bye" >$@
# normal prim rules
engine/prim_lab.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-label dup process-file bye" >$@
engine/prim_grp.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' noop dup process-file bye" >$@
engine/prim_names.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-forthname dup process-file bye" >$@
engine/prim_superend.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-superend dup process-file bye" >$@
engine/profile.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-profile ' output-profile-combined process-file bye" >$@
engine/super2.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-super2-simple ' output-super2-combined process-file bye" >$@
engine/costs.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-costs-gforth-simple ' output-costs-gforth-combined process-file bye" >$@
engine/prim_num.i: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-c-prim-num ' noop process-file bye" >$@
prim_effects.fs: prim.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag off s\" "$<"\" ' output-stack-effects ' noop process-file bye" >$@
# fast prim rules...
engine/prim-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" prim-fast.i\" save-mem out-filename 2! s\" "$<"\" ' output-c ' output-c-combined process-file bye" >$@
engine/prim_lab-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-label dup process-file bye" >$@
engine/prim_grp-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' noop dup process-file bye" >$@
engine/prim_names-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-forthname dup process-file bye" >$@
engine/prim_superend-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-superend dup process-file bye" >$@
engine/profile-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-profile ' output-profile-combined process-file bye" >$@
engine/super2-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-super2-simple ' output-super2-combined process-file bye" >$@
engine/costs-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-costs-gforth-simple ' output-costs-gforth-combined process-file bye" >$@
engine/prim_num-fast.i: prim-fast.b prims2x.fs
$(PREFORTH) prims2x.fs -e "c-flag on s\" "$<"\" ' output-c-prim-num ' noop process-file bye" >$@
engine/prim-s.i: engine/prim.i
grep -v '^#line ' $< >$@
kernel/aliases.fs: prim.b prims2x.fs kernel/aliases0.fs preforth.in
$(CP) $(srcdir)/kernel/aliases0.fs $@-
$(PREFORTH) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-alias ' noop process-file bye" >>$@-
$(MV) $@- $@
kernel/prim.fs: prim.b prims2x.fs kernel/prim0.fs preforth.in
$(CP) $(srcdir)/kernel/prim0.fs kernel/prim.fs-
$(PREFORTH) prims2x.fs -e "forth-flag on s\" prim.b\" ' output-forth ' output-forth-combined process-file bye" >>$@-
$(MV) $@- $@
OPTS = -ll-reg -noll-reg -ll -noll
MAKELINE-ll-reg = OPT=-ll-reg OPTDEFINES="-DFORCE_LL -DFORCE_REG" OPTOBJECTS=
MAKELINE-noll-reg = OPT=-noll-reg OPTDEFINES=-DFORCE_REG OPTOBJECTS=dblsub.o
MAKELINE-ll = OPT=-ll OPTDEFINES=-DFORCE_LL OPTOBJECTS=
MAKELINE-noll = OPT=-noll OPTDEFINES= OPTOBJECTS=dblsub.o
MAKELINE-itc = OPT=-noll OPTDEFINES= OPTOBJECTS=dblsub.o
MAKELINE-ditc = OPT=-noll OPTDEFINES= OPTOBJECTS=dblsub.o
FIRSTOBJECTS = io.o signals.o ${LIBOBJDIR}arm64-cacheflush$U.o ${LIBOBJDIR}exp10$U.o ${LIBOBJDIR}sincos$U.o support-ll.o support-noll.o support-ll-reg.o support-noll-reg.o dblsub.o libmain.o
GFORTHOBJECTS = $(patsubst %,engine/%,$(FIRSTOBJECTS))
GFORTHLIBOBJECTS = $(patsubst %.o,engine/lib%.lo,$(FIRSTOBJECTS))
$(GFORTHOBJECTS) $(GFORTHLIBOBJECTS):
(cd engine; $(MAKE) $(patsubst engine/%,%,$@))
gforth$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN0) engine/config.h $(kernel_anti_dependence) $(GFORTHOBJECTS)
gforth$(OPT)$(EXT): $(GFORTHOBJECTS)
if test -z "$(OPT)"; then \
for i in $(OPTS); do $(RM) gforth$${i}$(EXT); $(MAKE) DOSTRIP=$(DOSTRIP) optgforth OPT=$$i && $(CP) gforth$${i}$(EXT) $@ && break; done; \
else \
(cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) $@ ) && \
$(CP) engine/$@ $@ && \
($(MASSAGE_EXE) $@ || true); \
true; \
$(MAKE) checkone check-nofast ENGINE=./engine/$@; \
fi
$(DOSTRIP) $@
.PHONY: optgforth optgforth-fast
optgforth: $(GFORTHOBJECTS)
$(MAKE) gforth$(OPT)$(EXT) $(MAKELINE$(OPT))
gforth-fast$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_FAST) engine/config.h $(GFORTHOBJECTS)
gforth-fast$(OPT)$(EXT): $(GFORTHOBJECTS)
if test -z "$(OPT)"; then \
for i in $(OPTS); do $(RM) gforth-fast$${i}$(EXT); $(MAKE) DOSTRIP=$(DOSTRIP) optgforth-fast OPT=$$i && $(CP) gforth-fast$${i}$(EXT) $@ && break; done; \
else \
(cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) $@ ) && \
$(CP) engine/$@ $@ && \
($(MASSAGE_EXE) $@ || true); \
true; \
$(MAKE) checkone ENGINE=./engine/$@; \
fi
$(DOSTRIP) $@
optgforth-fast: $(GFORTHOBJECTS)
$(MAKE) DOSTRIP=$(DOSTRIP) gforth-fast$(OPT)$(EXT) $(MAKELINE$(OPT))
gforth-itc$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHOBJECTS)
cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) gforth-itc-noll$(EXT) $(MAKELINE-itc)
$(CP) engine/gforth-itc-noll$(EXT) $@
$(DOSTRIP) $@
true
gforth-ditc$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHOBJECTS)
cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) gforth-ditc-noll$(EXT) $(MAKELINE-ditc)
$(CP) engine/gforth-ditc-noll$(EXT) $@
$(DOSTRIP) $@
true
gforth-prof$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHOBJECTS)
cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) gforth-prof-noll$(EXT) $(MAKELINE-noll)
$(CP) engine/gforth-prof-noll$(EXT) $@
$(DOSTRIP) $@
gforths: $(GFORTHOBJECTS) $(ENGINES) $(ENGINES_FAST)
libgforth$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/config.h $(kernel_anti_dependence) $(GFORTHLIBOBJECTS)
libgforth$(OPT)$(EXT): $(ENGINE_SOURCES) $(GFORTHLIBOBJECTS)
if test -z "$(OPT)"; then \
for i in $(OPTS); do $(MAKE) DOSTRIP=$(DOSTRIP) optlibgforth OPT=$$i && $(MAKE) optlibgforth2 OPT=$$i && $(LN_S) engine/$@ $@ && break; done; \
else \
(cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) $@ ); \
$(MAKE) checkone check-nofast ENGINE=./engine/$@; \
fi
optlibgforth: $(GFORTHLIBOBJECTS)
$(MAKE) libgforth$(OPT)$(EXT) $(MAKELINE$(OPT))
optlibgforth2: $(GFORTHLIBOBJECTS)
(cd engine && $(MAKE) libgforth$(EXT) $(MAKELINE$(OPT)))
libgforth-fast$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE_FAST) engine/config.h $(GFORTHLIBOBJECTS)
libgforth-fast$(OPT)$(EXT): $(ENGINE_SOURCES) $(GFORTHLIBOBJECTS)
if test -z "$(OPT)"; then \
for i in $(OPTS); do $(MAKE) DOSTRIP=$(DOSTRIP) optlibgforth-fast OPT=$$i && $(MAKE) optlibgforth-fast2 OPT=$$i && $(LN_S) engine/$@ $@ && break; done; \
else \
(cd engine && $(MAKE) DOSTRIP=$(DOSTRIP) $@ ); \
$(MAKE) checkone ENGINE=./engine/$@; \
fi
optlibgforth-fast: $(GFORTHLIBOBJECTS)
$(MAKE) libgforth-fast$(OPT)$(EXT) $(MAKELINE$(OPT))
optlibgforth-fast2: $(GFORTHLIBOBJECTS)
(cd engine && $(MAKE) libgforth-fast$(EXT) $(MAKELINE$(OPT)))
libgforth-itc$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHLIBOBJECTS)
cd engine && $(MAKE) libgforth-itc$(EXT) $(MAKELINE-itc)
$(LN_S) engine/$@ $@
$(MASSAGE_EXE) $@ || true
libgforth-ditc$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHLIBOBJECTS)
cd engine && $(MAKE) libgforth-ditc$(EXT) $(MAKELINE-ditc)
$(LN_S) engine/$@ $@
$(MASSAGE_EXE) $@ || true
libgforth-prof$(EXT): $(ENGINE_SOURCES) $(FORTH_GEN_ENGINE) engine/Makefile engine/config.h $(GFORTHLIBOBJECTS)
cd engine && $(MAKE) libgforth-prof$(EXT) $(MAKELINE-noll)
$(LN_S) engine/$@ $@
$(MASSAGE_EXE) $@ || true
.PHONY: libgforths
libgforths: $(GFORTHLIBOBJECTS) $(LIBENGINES) $(LIBENGINES_FAST)
# ------------- additional C primitives
.SUFFIXES: .c .pri
%.c: %.pri gforth$(EXT) prim2cl.fs
$(FORTHK) prim2cl.fs -e "file $< altogether bye" >$@
%.so: %.c
$(GCC) -shared $(CFLAGS) $(CPPFLAGS) $< -o $@
# ------------- Make Documentation
#TAGS is a GNU standard target
TAGS: gforth.fi gforth.TAGS
$(CP) gforth.TAGS $@
tags: gforth.fi gforth.tags
$(CP) gforth.tags $@
install.TAGS: TAGS install-tags.fs preforth kernl64l.fi
sed 's;^\$(srcdir)/;;' TAGS|$(PREFORTH) -e 's" '${datarootdir}/gforth/$(VERSION)/'"' $(srcdir)/install-tags.fs -e bye >install.TAGS
MINOS_ROOT = minos2/widgets.fs
gforth.TAGS: kernl64l.fi gforth$(EXT) $(GFORTH_FI_SRC) $(LIBCC_BUILD_SRC) $(patsubst %, minos2/%, $(MINOS2_SRC)) prim.TAGS kernel.TAGS
includedir=`pwd`/include extrastuff=' -I'`pwd`/include/gforth/$(VERSION)/$(machine) $(FORTHK) etags.fs except.fs startup.fs $(LIBCC_BUILD_NOEC) $(MINOS_ROOT) -e bye
cat TAGS prim.TAGS kernel.TAGS >gforth.TAGS
rm TAGS
gforth.tags: kernl64l.fi gforth$(EXT) $(GFORTH_FI_SRC) $(patsubst %, minos2/%, $(MINOS2_SRC)) prim.tags kernel.tags
$(FORTHK) tags.fs except.fs startup.fs $(LIBCC_BUILD_NOEC) $(MINOS_ROOT) -e bye
cat tags prim.tags kernel.tags >gforth.tags
rm tags
prim.TAGS: prim.b prims2x.fs preforth kernl64l.fi
$(PREFORTH) prims2x.fs -e "s\" prim.b\" ' output-tag dup process-file bye"|sed 's#^./prim#prim#' >$@-
$(MV) $@- $@
prim.tags: prim.b prims2x.fs preforth kernl64l.fi
$(PREFORTH) prims2x.fs -e "s\" prim.b\" ' output-vi-tag dup process-file bye" >$@-
$(MV) $@- $@
kernel.TAGS kernel.tags:
-$(RM) kernl64l.fi-
$(MAKE) kernl64l.fi-
#elc files
gforth.elc: gforth.el
-$(EMACS) --batch --no-site-file -f batch-byte-compile gforth.el
start-gforth.el: gforth.el
echo > $@
-$(EMACS) --batch -l autoload --eval "(setq generated-autoload-file \"$$PWD/$@\")" -f batch-update-autoloads $(dir $<)
#Documentation
doc/doc.fd: doc/makedoc.fs gforth$(EXT) $(GFORTH_FI_SRC) $(EXTRA_DOC) $(LIBCC_GEN_SRC)
$(FORTHK) -e "s\" doc/doc.fd.tmp\"" doc/makedoc.fs except.fs startup.fs $(EXTRA_DOC) -e bye
$(srcdir)/move-if-change doc/doc.fd.tmp $@
doc/crossdoc.fd: $(KERN_SRC) gforth$(EXT) kernel/version.fs $(FORTH_GEN0)
$(FORTHK) -e 's" mach32l.fs" include kernel/main.fs' -e bye
$(srcdir)/move-if-change doc/crossdoc.fd.tmp $@
#call explicitly on machine with libffi and ffcall
doc/words/$(RVERSION)-words: gforth$(EXT) $(GFORTH_FI_SRC) $(EXTRA_DOC) $(LIBCC_GEN_SRC)
$(FORTHS) $(EXTRA_DOC) -e "locals-types words c-lib words see-voc words environment words forth words bye" >$@-
$(MV) $@- $@
doc/gforth.texi: doc/gforth.texi.in prim.b ds2texi.fs prims2x.fs \
doc/doc.fd doc/crossdoc.fd preforth kernl64l.fi \
$(wildcard $(srcdir)/doc/words/0.*-words)
$(PREFORTH) ds2texi.fs prims2x.fs -e "s\" prim.b\" ' register-doc ' noop process-file" doc/crossdoc.fd doc/doc.fd -e "args-gforth-versions s\" $(srcdir)/doc/gforth.texi.in\" r/o open-file throw ds2texi bye" $(wildcard $(srcdir)/doc/words/*-words) >$@-
$(MV) $@- $@
checkdoc: doc/gforth.texi.in prim.b ds2texi.fs prims2x.fs doc/doc.fd doc/crossdoc.fd answords.fs doc/gforth.texi
$(FORTH) ds2texi.fs prims2x.fs -e "s\" prim.b\" ' register-doc ' noop process-file" doc/crossdoc.fd doc/doc.fd answords.fs -e bye
-grep unknown doc/gforth.texi
-grep doc- doc/gforth.texi| grep -v '^@c'
doc/gforth.txt: txt
doc pdf ebook dvi txt ps html: $(GFORTH_TEXI) $(VMGEN_TEXI) doc/Makefile
-cd doc; $(MAKE) $@
# For an explanation of the following Makefile rules, see node
# `Automatic Remaking' in GNU Autoconf documentation.
#Note: no target "$(srcdir)/configure", because that does not trigger
#unless $(srcdir)!="."
configure: configure.ac aclocal.m4
cd $(srcdir) && autoconf
$(srcdir)/aclocal.m4: configure.ac
cd $(srcdir) && aclocal $(ACLOCAL_AMFLAGS)
# autoheader might not change config.h.in, so touch a stamp file.
engine/config.h.in: stamp-h.in
stamp-h.in: configure.ac aclocal.m4
cd $(srcdir) && autoheader
echo timestamp > $(srcdir)/stamp-h.in
engine/config.h: stamp-h
stamp-h: engine/config.h.in config.status stamp-h.in
./config.status
$(CONFIG_GEN): Makefile.in Makedist.in engine/Makefile.in doc/Makefile.in unix/Makefile.in gforthmi.in vmgen.in preforth.in libforth.in gforthker.in machpc.fs.in doc/version.texi.in config.status configure.ac envos.fs.in build-ec.in engine/gforth.h.in gforthmi.sh.in kernel/version.fs.in engine/config.h.in
./config.status
config.status: configure
./config.status --recheck
ChangeLog.git: FORCE
git log --name-only --date=short --pretty=format:'%cd -%d %s <%an> %h%n%b' --abbrev-commit >ChangeLog.git