Hello!
Gforth build process is too convoluted, it is very hard to follow.
I'm going to try to get it in more or less comprehensible state.
Here's the first series of changes I propose:
1. Remove outdated comments.
2. Replace CFLAGS2 with CFLAGS, they're the same, as evidence shows.
3. Factor out COMPILE.c in BSD sys.mk way.
4. Remove "engine.s" target, it isn't used.
5. Remove ".s.o" rule as well.
I also propose using canonical CC variable for C compiler instead of GCC,
but this doesn't come with following patch.
--- engine/Makefile.in.orig 2008-10-26 18:46:57.000000000 +0300
+++ engine/Makefile.in 2008-12-15 04:34:59.000000000 +0300
@@ -92,7 +92,6 @@
ENGINE_FLAGS = @ENGINE_FLAGS@ -fno-defer-pop -fcaller-saves -fno-inline
DEBUGFLAG = @DEBUGFLAG@
CFLAGS = $(DEBUGFLAG) -I$(srcdir)/../arch/$(machine) -I. -Wall $(SWITCHES)
-DDEFAULTPATH='"$(FORTHPATH)"' $(LTDLINCL)
-CFLAGS2 = $(DEBUGFLAG) -I$(srcdir)/../arch/$(machine) -I. -Wall
$(SWITCHES) -DDEFAULTPATH='"$(FORTHPATH)"' $(LTDLINCL)
cppfla...@cppflags@
FORTHKFLAGS= --die-on-signal -p "..$(PATHSEP)$(srcdir)" -i ../$(kernel_fi)
FORTHK = ../gforth $(FORTHKFLAGS)
@@ -123,15 +122,14 @@
ENGINE_FAST_DEPS = engine.c $(DEPS) prim_lab-fast.i prim-fast.i fnmatch.h
threaded.h
MAIN_FAST_DEPS = main.c $(DEPS) prim_superend-fast.i prim_num-fast.i
prim_grp-fast.i costs-fast.i super2-fast.i
+COMPILE.c?= $(GCC) $(CFLAGS) $(CPPFLAGS) -c # simulate BSD sys.mk
+
#some makes don't do the -o $@ correctly, so we help them
.c.o:
- $(GCC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-.s.o:
- $(GCC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
+ $(COMPILE.c) -o $@ $<
support$(OPT).o: support.c config.h forth.h longlong.h
- $(GCC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/support.c
+ $(COMPILE.c) -o $@ $(srcdir)/support.c
strtol.o: strtol.c ansidecl.h
@@ -162,65 +160,62 @@
gforth-fi$(OPT)$(EC)$(EXE): $(OBJECTS_FI) $(AOBJECTS) $(LTDLDEPS)
$(GCCLD) $(LDFLAGS) $(OBJECTS_FI) $(AOBJECTS) $(LDLIBS) -o $@
-engine.s: $(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -S
$(srcdir)/engine.c
-
engine$(OPT).o: $(ENGINE_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS)
-DGFORTH_DEBUGGING -o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DGFORTH_DEBUGGING -o $@
$(srcdir)/engine.c
engine2$(OPT).o: $(ENGINE_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS)
-DGFORTH_DEBUGGING -DENGINE=2 -o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DGFORTH_DEBUGGING -DENGINE=2 -o
$@ $(srcdir)/engine.c
engine-native$(OPT).o:$(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DNO_IP -o $@ -c
$(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DNO_IP -o $@ $(srcdir)/engine.c
engine-native2$(OPT).o:$(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DNO_IP
-DENGINE=2 -o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DNO_IP -DENGINE=2 -o $@
$(srcdir)/engine.c
engine-native3$(OPT).o:$(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DNO_IP
-DENGINE=3 -o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DNO_IP -DENGINE=3 -o $@
$(srcdir)/engine.c
engine-fast$(OPT).o: $(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -o $@ -c
$(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -o $@ $(srcdir)/engine.c
engine-fast2$(OPT).o: $(ENGINE_FAST_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DENGINE=2 -o $@
-c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DENGINE=2 -o $@ $(srcdir)/engine.c
engine-itc$(OPT).o: $(ENGINE_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS)
-DINDIRECT_THREADED -DGFORTH_DEBUGGING -o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DINDIRECT_THREADED
-DGFORTH_DEBUGGING -o $@ $(srcdir)/engine.c
engine-ditc$(OPT).o: $(ENGINE_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DDOUBLY_INDIRECT
-o $@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DDOUBLY_INDIRECT -o $@
$(srcdir)/engine.c
engine-prof$(OPT).o: $(ENGINE_DEPS)
- $(GCC) $(CFLAGS2) $(CPPFLAGS) $(ENGINE_FLAGS) -DVM_PROFILING -o
$@ -c $(srcdir)/engine.c
+ $(COMPILE.c) $(ENGINE_FLAGS) -DVM_PROFILING -o $@
$(srcdir)/engine.c
main$(OPT).o: $(MAIN_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DGFORTH_DEBUGGING @no_dynamic@ -o
$@ -c $(srcdir)/main.c
+ $(COMPILE.c) -DGFORTH_DEBUGGING @no_dynamic@ -o $@
$(srcdir)/main.c
main-native$(OPT).o: $(MAIN_FAST_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DNO_IP -o $@ -c $(srcdir)/main.c
+ $(COMPILE.c) -DNO_IP -o $@ $(srcdir)/main.c
main-fast$(OPT).o: $(MAIN_FAST_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $(srcdir)/main.c
+ $(COMPILE.c) -o $@ $(srcdir)/main.c
main-itc$(OPT).o: $(MAIN_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DINDIRECT_THREADED
-DGFORTH_DEBUGGING -o $@ -c $(srcdir)/main.c
+ $(COMPILE.c) -DINDIRECT_THREADED -DGFORTH_DEBUGGING -o $@
$(srcdir)/main.c
main-ditc$(OPT).o: $(MAIN_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DDOUBLY_INDIRECT -o $@ -c
$(srcdir)/main.c
+ $(COMPILE.c) -DDOUBLY_INDIRECT -o $@ $(srcdir)/main.c
main-prof$(OPT).o: $(MAIN_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DVM_PROFILING -o $@ -c
$(srcdir)/main.c
+ $(COMPILE.c) -DVM_PROFILING -o $@ $(srcdir)/main.c
main-fi$(OPT).o: $(MAIN_DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -DINCLUDE_IMAGE -o $@ -c
$(srcdir)/main.c
+ $(COMPILE.c) -DINCLUDE_IMAGE -o $@ $(srcdir)/main.c
peephole$(OPT).o: peephole.c peephole.i $(DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $(srcdir)/peephole.c
+ $(COMPILE.c) -o $@ $(srcdir)/peephole.c
profile$(OPT).o: profile.c profile.i $(DEPS)
- $(GCC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $(srcdir)/profile.c
+ $(COMPILE.c) -o $@ $(srcdir)/profile.c
#The next two rules seem to be superfluous:
@@ -233,22 +228,6 @@
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 ../stamp-h.in
cd .. && CONFIG_FILES=$@ CONFIG_HEADERS=engine/config.h
./config.status
--
HE CE3OH...
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]