# GNU-Makefile for CLISP self-construction kit
# DON'T FORGET to set a STACK high enough for LD and GCC!!!
CC=gcc

# what modules.h contains (except affi.o which is in liblisp.a)
KITOBJECTS = queens.o queens-ffi.o

# we don't distribute clisp.h, use lispbibl.c instead
#CLISP_H = lispbibl.c
#DCLISPH = -DNO_CLISP_H
# foreign modules only need clisp.h and not the huge lispbibl.c
CLISP_H= clisp.h
DCLISPH=

CRT0   =amiga/jchlib/lib/crt0.o
CFLAGS =-O2 -fomit-frame-pointer -I.
CLFLAGS=-nostdlib -L. $(CRT0) -Lamiga/jchlib/lib -Lffcall/avcall -Lffcall/vacall -Lffcall/trampoline
LIBS   =-lclisp -lavcall -lvacall -ltrampoline -lcclisp -ltinygcc

LISPEXE=lisp.run
MEMFILE=lispinit.mem


all: $(LISPEXE)

# distribute modules.c so that comment5, ansidecl etc. are not needed
#modules.c: modules.d

modules.o: modules.c modules.h
	$(CC) $(CFLAGS) $(DCLISPH) -c modules.c

$(LISPEXE) : $(KITOBJECTS) modules.o
	$(CC) $(CFLAGS) $(CLFLAGS) modules.o $(KITOBJECTS) $(LIBS) -o $(LISPEXE)

# avoid nested double quotes, "(load "init.fas")" is not possible
lispinit.mem:
	$(LISPEXE) -x (load"init.fas")(saveinitmem)(exit)

# specify here how to compile KITOBJECTS
queens.o: queens.c
	$(CC) $(CFLAGS) -c $*.c
queens-ffi.c: queens-ffi.lsp
	$(LISPEXE) -M $(MEMFILE) -c $*.lsp
queens-ffi.o: queens-ffi.c
	$(CC) $(CFLAGS) -c $*.c
