improve makefiles

Fix copy of header files. This was accidentally working thanks to the
`cp -rf $(srcdir)/h/*.h` that existed, but it means that editing any
header file (except the internal.h one) would not recompile
appropriately.

Replace deprecated suffix rules with modern equivalents, list header
files as dependencies for .d files.
This commit is contained in:
Florian Margaine 2020-12-31 23:20:46 +01:00 committed by Marius Gerbershagen
parent 2cac9642d4
commit f914171eaa
2 changed files with 19 additions and 24 deletions

View file

@ -83,19 +83,7 @@ endif
%Makefile: $(srcdir)/%Makefile.in config.status
./config.status
#
# When compiling the library itself, we have to remove the dllimport
# declarations, because the variables that they mark are in the
# in the library and can be referenced without indirection.
#
c/ecl/external.h: $(top_srcdir)/h/external.h
test -d c/ecl || mkdir c/ecl
sed 's,__declspec(dllimport),,g' $(top_srcdir)/h/external.h > $@
ecl/external.h: c/ecl/external.h c/ecl/external.h
cp -rf $(srcdir)/h/*.h $(srcdir)/h/impl ecl/
bin/$(ECL): $(ECL_MIN) compile.lsp ecl/external.h build-stamp $(top_srcdir)/lsp/*.lsp $(top_srcdir)/clos/*.lsp $(top_srcdir)/*cmp/*.lsp
bin/$(ECL): $(ECL_MIN) compile.lsp build-stamp $(top_srcdir)/h/*.h $(top_srcdir)/h/impl/*.h $(top_srcdir)/lsp/*.lsp $(top_srcdir)/clos/*.lsp $(top_srcdir)/*cmp/*.lsp
if [ -f CROSS-COMPILER ]; then \
./CROSS-COMPILER compile; \
else \
@ -139,7 +127,7 @@ libeclgmp.a:
fi
# final objects archive
libeclmin.a: libeclgmp.a libeclatomic.a libeclgc.a libeclffi.a lsp/config.lsp $(ECL_CMPDIR)/cmpdefs.lsp ecl/external.h
libeclmin.a: libeclgmp.a libeclatomic.a libeclgc.a libeclffi.a lsp/config.lsp $(ECL_CMPDIR)/cmpdefs.lsp
@echo "Building $@..."
cd c; $(MAKE)

View file

@ -40,12 +40,16 @@ includedir=@includedir@
# Files
HDIR = ../ecl
HFILES = $(HDIR)/config.h $(HDIR)/ecl.h $(HDIR)/ecl-cmp.h \
HFILES = $(HDIR)/config.h $(HDIR)/ecl.h $(HDIR)/ecl-cmp.h \
$(HDIR)/object.h $(HDIR)/cs.h $(HDIR)/stacks.h \
$(HDIR)/external.h $(HDIR)/cons.h $(HDIR)/legacy.h \
$(HDIR)/number.h $(HDIR)/page.h
$(HDIR)/number.h $(HDIR)/page.h $(HDIR)/bytecodes.h \
$(HDIR)/cache.h $(HDIR)/config-internal.h $(HDIR)/ecl_atomics.h \
$(HDIR)/ecl-inl.h $(HDIR)/internal.h $(HDIR)/stack-resize.h \
$(HDIR)/impl/math_dispatch2.h $(HDIR)/impl/math_dispatch.h \
$(HDIR)/impl/math_fenv.h $(HDIR)/impl/math_fenv_msvc.h
CLOS_OBJS = clos/cache.o clos/accessor.o clos/instance.o clos/gfun.o
OBJS = main.o symbol.o package.o cons.o list.o apply.o eval.o \
OBJS = main.o symbol.o package.o cons.o list.o apply.o eval.o \
interpreter.o compiler.o disassembler.o $(CLOS_OBJS) \
reference.o character.o file.o read.o print.o error.o \
string.o cfun.o reader/parse_integer.o reader/parse_number.o \
@ -72,7 +76,6 @@ OBJS = main.o symbol.o package.o cons.o list.o apply.o eval.o \
unixfsys.o unixsys.o serialize.o ffi.o sse2.o @EXTRA_OBJS@ \
threads/atomic.o
.SUFFIXES: .c .o .d .s
.PHONY: all
ifndef VERBOSE
@ -81,16 +84,20 @@ endif
all: $(DPP) ../libeclmin.a ../cinit.o
.d.c: $(DPP)
$(HDIR)/%.h: $(top_srcdir)/h/%.h
cp $< $@
$(HDIR)/impl/%.h: $(top_srcdir)/h/impl/%.h
mkdir -p $(HDIR)/impl
cp $< $@
%.c: %.d $(DPP)
if test -f ../CROSS-DPP ; then ../CROSS-DPP $< $@ ; else $(DPP) $< $@ ; fi
.d.o: $(DPP)
%.o: %.d $(DPP) $(HFILES)
if test -f ../CROSS-DPP ; then ../CROSS-DPP $< $@.c ; else $(DPP) $< $@.c ; fi
$(CC) -DECLDIR="\"@ecldir@\"" $(CFLAGS) -o $@ $@.c
.c.o: $(HFILES)
%.o: %.c $(HFILES)
$(CC) -DECLDIR="\"@ecldir@\"" $(CFLAGS) -o $@ $<
# .d.s: $(HFILES)
# if test -f ../CROSS-DPP ; then ../CROSS-DPP $< $@.c ; else $(DPP) $< $@.c ; fi
# $(CC) -DECLDIR="\"@ecldir@\"" $(CFLAGS) -S -o $@ $@.c
../libeclmin.a: $(OBJS) all_symbols.o all_symbols2.o
$(RM) $@