Skip to content
Makefile.in 3.96 KiB
Newer Older
#
#  Makefile for MKCL core library
#
#  Copyright (c) 2010-2012, Jean-Claude Beaudoin.
#  Copyright by a number of previous anonymous authors
#            presumed to be the same as for the rest of MKCL.
#
#  MKCL is free software; you can redistribute it and/or
#  modify it under the terms of the GNU Lesser General Public
#  License as published by the Free Software Foundation; either
#  version 3 of the License, or (at your option) any later version.
#
#  See file '../../Copyright' for full details.
#
#
top_srcdir= @top_srcdir@
srcdir	= @srcdir@
VPATH	= @srcdir@

# Programs used by "make":
#
TRUE_CC = @CC@
CC	= @CC@
ifeq (@thehost@,mingw32)
CFLAGS	= -I../ -DMKCL_API @CPPFLAGS@ @CFLAGS@ @MKCL_CFLAGS@
else
CFLAGS	= -I../ @CPPFLAGS@ @CFLAGS@ @MKCL_CFLAGS@
endif

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	= ../mkcl
HFILES	= $(HDIR)/config.h $(HDIR)/mkcl.h $(HDIR)/mkcl-cmp.h\
	$(HDIR)/object.h $(HDIR)/stacks.h\
	$(HDIR)/external.h $(HDIR)/eval.h\
	$(HDIR)/number.h $(HDIR)/mkcl-inl.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@

DCFILES = $(OBJS:%.o=%.c)
DHFILES = $(OBJS:%.o=%.h)

.SUFFIXES: .c .o .d
.PHONY: all

all: ../libmkclmin.a ../libmkcltop.a all_symbols.o all_symbols2.o cinit.o

.c.s:
	$(CC) $(CFLAGS) -S -o $@ -c $<

.c.o:
	$(CC) $(CFLAGS) -o $@ -c $<

.d.c:
	$(DPP) $< $@

#unixfsys.o: unixfsys.c
#	$(CC) -DMKCL_LIBDIR="\"@mkcldir@\"" -DMKCL_VERSION="\"@PACKAGE_VERSION@\"" $(CFLAGS) -o $@ -c $<

$(DCFILES) all_symbols.c cinit.c: $(DPP)

apply_x86.c: arch/apply_x86.d $(DPP)
	$(DPP) $< $@

ffi_x86.c: arch/ffi_x86.d $(DPP)
	$(DPP) $< $@

ffi_x86_64.c: arch/ffi_x86_64.d $(DPP)
	$(DPP) $< $@

../libmkclmin.a: $(OBJS)
	$(RM) $@
	$(AR) cr $@ $(OBJS)
	$(RANLIB) $@

../libmkcltop.a: main.o all_symbols2.o
	$(RM) $@
	$(AR) cr $@ main.o all_symbols2.o
	$(RANLIB) $@

clean:
	$(RM) $(DPP) $(DCFILES) $(DHFILES) $(OBJS) all_symbols.c all_symbols.o all_symbols2.o main2.o cinit.c cinit.o core core.* a.out
	$(RM) GNUmakefile makefile.depend

distclean: clean
	$(RM) Makefile

realclean: distclean
	$(RM) *~ arch/*~

# Build rules

$(DPP): dpp.c symbols_list2.h
	$(TRUE_CC) -O2 -I../ dpp.c  -o $@

symbols_list2.h: symbols_list.h
	cpp -DDPP -DMKCL_FINAL symbols_list.h | \
	sed -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,.*}}%{\1,NULL,-1}%g' \
	    -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),[ ]*\([^,]*\),.*}}%{\1,"\2",\3}%g' \
	    -e 's%{{NULL.*%{NULL,NULL,-1}};%' > $@

$(OBJS): $(DPP)


#
# GCC might break this code
#

ffi_x86.o: ffi_x86.c
	$(CC) $(CFLAGS) -O0 -c ffi_x86.c -o $@

#
# These files are interrelated
#
all_symbols.o: all_symbols.c
	$(CC) $(CFLAGS) -c all_symbols.c -o $@

all_symbols2.o: all_symbols.o
	$(CC) $(CFLAGS) -DMKCL_FINAL -c all_symbols.c -o $@

main2.o: main.o
	$(CC) $(CFLAGS) -DSTATIC -c main.c -o $@

cinit.o: cinit.c
	$(CC) $(CFLAGS) -c cinit.c -o $@


Makefile: Makefile.in ../config.status
	cd ..; ./config.status

#
#

depend:
	$(MAKE) GNUmakefile

makefile.depend: $(DCFILES) cinit.c all_symbols.c ../mkcl/*.h
	$(RM) makefile.depend
	for i in $^; do \
	  case $$i in \
	  *.h) ;; \
	  *) \
	    $(CC) -MM -MF makefile.depend.tmp $(CFLAGS) $$i; \
	    cat makefile.depend.tmp >> makefile.depend;; \
	  esac; \
	done
	$(RM) makefile.depend.tmp


GNUmakefile: Makefile makefile.depend
	cat Makefile makefile.depend > GNUmakefile



#
# End of Makefile.
#
#================================================
#