Skip to content
Makefile.w64 4.07 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= /usr/home/Jean-Claude/mkcl-1.1.5/src
srcdir	= /usr/home/Jean-Claude/mkcl-1.1.5/src/c
VPATH	= /usr/home/Jean-Claude/mkcl-1.1.5/src/c

# Programs used by "make":
#
TRUE_CC = gcc
CC	= gcc
ifeq (mingw32,mingw32)
CFLAGS	= -I../ -DMKCL_API  -fno-strict-aliasing -g -O2  -mthreads -D_MT   -DWin7
else
CFLAGS	= -I../  -fno-strict-aliasing -g -O2  -mthreads -D_MT   -DWin7
endif

SHELL	= /bin/sh
RM	= rm -f
EXE	= .exe
DPP	= ./dpp$(EXE)
RANLIB	= ranlib

# Data for installation
#
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
prefix=/mingw
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

# 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  threads.o alloc_2.o ffi_x86_64_w64.o big.o

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) $< $@

$(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) $< $@

ffi_x86_64_w64.c: arch/ffi_x86_64_w64.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.
#
#================================================
#