mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-18 07:12:26 -08:00
122 lines
3.4 KiB
Makefile
122 lines
3.4 KiB
Makefile
#
|
|
# Makefile for ECL core library
|
|
#
|
|
top_srcdir= @top_srcdir@
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
# Programs used by "make":
|
|
#
|
|
TRUE_CC = @CC@
|
|
CC = @CC@
|
|
CFLAGS = @CPPFLAGS@ @CFLAGS@ @ECL_CFLAGS@ -c -DECL_API -I. -I@true_builddir@ -I$(srcdir) -I../ecl/gc \
|
|
# -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align \
|
|
# -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-prototypes -Wredundant-decls \
|
|
# -Wunreachable-code -Winline
|
|
|
|
SHELL = /bin/sh
|
|
RM = @RM@
|
|
EXE = @EXEEXT@
|
|
DPP = ./dpp$(EXE)
|
|
RANLIB = @RANLIB@
|
|
|
|
# Data for installation
|
|
#
|
|
INSTALL = @INSTALL@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
libdir=@libdir@
|
|
includedir=@includedir@
|
|
|
|
# Files
|
|
|
|
HDIR = ../ecl
|
|
HFILES = $(HDIR)/config.h $(HDIR)/ecl.h $(HDIR)/ecl-cmp.h\
|
|
$(HDIR)/object.h $(HDIR)/cs.h $(HDIR)/stacks.h\
|
|
$(HDIR)/external.h $(HDIR)/eval.h\
|
|
$(HDIR)/number.h $(HDIR)/page.h $(HDIR)/unify.h
|
|
OBJS = main.o symbol.o package.o list.o\
|
|
apply.o eval.o interpreter.o compiler.o disassembler.o \
|
|
instance.o gfun.o reference.o character.o\
|
|
file.o read.o print.o error.o string.o cfun.o\
|
|
typespec.o assignment.o \
|
|
predicate.o number.o\
|
|
num_pred.o num_comp.o num_arith.o num_sfun.o num_co.o\
|
|
num_log.o num_rand.o array.o sequence.o cmpaux.o\
|
|
macros.o backq.o stacks.o \
|
|
time.o unixint.o\
|
|
mapfun.o multival.o hash.o format.o pathname.o\
|
|
structure.o load.o unixfsys.o unixsys.o \
|
|
ffi.o @EXTRA_OBJS@
|
|
|
|
.SUFFIXES: .c .o .d .s
|
|
.PHONY: all
|
|
|
|
all: $(DPP) ../libeclmin.a ../cinit.o
|
|
|
|
%.s: %.c $(HFILES)
|
|
$(CC) -DECLDIR="\"@ecldir@\"" $(CFLAGS) -S -o $@ $<
|
|
%.o: %.c $(HFILES)
|
|
$(CC) -DECLDIR="\"@ecldir@\"" $(CFLAGS) -o $@ $<
|
|
%.c: %.d $(DPP)
|
|
if test -f ../CROSS-DPP ; then ../CROSS-DPP $< $@ ; else $(DPP) $< $@ ; fi
|
|
apply_x86.c: $(srcdir)/arch/apply_x86.d $(DPP) $(HFILES)
|
|
if test -f ../CROSS-DPP ; then \
|
|
../CROSS-DPP $(srcdir)/arch/apply_x86.d $@ ; \
|
|
else $(DPP) $(srcdir)/arch/apply_x86.d $@ ; \
|
|
fi
|
|
ffi_x86.c: $(srcdir)/arch/ffi_x86.d $(DPP) $(HFILES)
|
|
if test -f ../CROSS-DPP ; then \
|
|
../CROSS-DPP $(srcdir)/arch/ffi_x86.d $@ ; \
|
|
else $(DPP) $(srcdir)/arch/ffi_x86.d $@ ; \
|
|
fi
|
|
ffi_x86_64.c: $(srcdir)/arch/ffi_x86_64.d $(DPP) $(HFILES)
|
|
if test -f ../CROSS-DPP ; then \
|
|
../CROSS-DPP $(srcdir)/arch/ffi_x86_64.d $@ ; \
|
|
else $(DPP) $(srcdir)/arch/ffi_x86_64.d $@ ; \
|
|
fi
|
|
|
|
../libeclmin.a: $(OBJS) all_symbols.o all_symbols2.o
|
|
$(RM) $@
|
|
ar cr $@ $(OBJS)
|
|
$(RANLIB) $@
|
|
|
|
clean:
|
|
$(RM) $(DPP) *.c *.h $(OBJS) all_symbols.o all_symbols2.o ../libecl.a cinit.o core a.out
|
|
|
|
# Build rules
|
|
|
|
$(DPP): $(srcdir)/dpp.c $(srcdir)/symbols_list2.h
|
|
if test -f ../CROSS-DPP; then touch dpp; else \
|
|
$(TRUE_CC) @CPPFLAGS@ @CFLAGS@ @ECL_CFLAGS@ -I$(srcdir) -I@true_builddir@ -I./ $(srcdir)/dpp.c -o $@ ; \
|
|
fi
|
|
$(srcdir)/symbols_list2.h: $(srcdir)/symbols_list.h Makefile
|
|
cat $(srcdir)/symbols_list.h | \
|
|
sed -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,.*}%{\1,NULL}%g' \
|
|
-e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),.*}%{\1,"\2"}%g' \
|
|
-e 's%{NULL.*%{NULL,NULL}};%' > $@
|
|
|
|
#
|
|
# GCC might break this code
|
|
#
|
|
gbc.o: gbc.c $(HFILES)
|
|
$(CC) $(CFLAGS) -O0 gbc.c -o $@
|
|
#
|
|
# This reduces the overhead of jumping to other functions
|
|
#
|
|
apply.o: apply.c $(HFILES) $(HDIR)/cs.h
|
|
$(CC) $(CFLAGS) apply.c -o $@
|
|
#
|
|
# These files are interrelated
|
|
#
|
|
all_symbols.o: all_symbols.c
|
|
$(CC) $(CFLAGS) -I./ all_symbols.c -o $@
|
|
all_symbols2.o: all_symbols.c
|
|
$(CC) $(CFLAGS) -DECL_FINAL -I./ all_symbols.c -o $@
|
|
|
|
#
|
|
# This is in another directory
|
|
#
|
|
../cinit.o: cinit.c $(HFILES)
|
|
$(CC) $(CFLAGS) -I./ cinit.c -o $@
|