
HDIR	= ../h
ODIR	= ../o
LSPDIR	= ../lsp
CMPDIR	= ../cmpnew
PORTDIR	= ../unixport
MPDIR	= ../mp

CFLAGS	= -c $(DEFS) -I$(HDIR)
LDCC    = $(CC)

LIBS	= -lm # -lpixrect -lc
OLDDATE = "DATE"
AKCLIB	= $(ODIR)/akcllib.a
MPFILES= $(MPDIR)/mpi.o $(MPDIR)/mp2.o  $(MPDIR)/libmport.a
KCLCC = /usr/local/lib/kcl/kcl-cc -DVOL=volatile -fwritable-strings
# begin makedefs
AKCLDIR=/usr/local/src/akcl-1-599
SHELL=/bin/sh
MACHINE=NeXT
LBINDIR=/usr/local/bin

# For NeXT Operating system 2.

OFLAG= -O
ODIR_DEBUG=  -g
LIBS	= -lm -lg 

CC = cc -DVOL=volatile -I$(AKCLDIR)/o -fwritable-strings

LDCC= ld -noseglinkedit -segprot __TEXT rwx rwx

ODIR_DEBUG= -g

EXTRA_OTARGETS= sbrkNeXT.o unexNeXT.o seekNeXT.o
EXTRAS= $(ODIR)/sbrkNeXT.o $(ODIR)/unexNeXT.o $(ODIR)/seekNeXT.o

MAINDIR = /usr/local/src/kcl
CFLAGS	= -c $(DEFS)  -I../h

MAIN    = ../o/main.o


RSYM	= rsym
SFASL	= $(ODIR)/sfaslNeXT.o

INITFORM=(si::build-symbol-table)(load "../lsp/setdoc.lsp")

MPFILES= $(MPDIR)/mpi-bsd68k.o   $(MPDIR)/libmport.a

# Use symbolic links
SYMB=-s
# the  make to use for saved_kcp the profiler.
#KCP=kcp-sun
KCP=kcp-next

NULLFILE = ../h/secondary_sun_magic
MAINDIR = /usr/local/src/kcl
# end makedefs

LIBS1= $(LIBS) $(AKCLIB)


















OBJS	= $(ODIR)/main.o $(ODIR)/alloc.o $(ODIR)/gbc.o \
	$(ODIR)/bitop.o $(ODIR)/typespec.o $(ODIR)/eval.o \
	$(ODIR)/macros.o $(ODIR)/lex.o $(ODIR)/bds.o \
	$(ODIR)/frame.o $(ODIR)/predicate.o $(ODIR)/reference.o \
	$(ODIR)/assignment.o $(ODIR)/bind.o $(ODIR)/let.o \
	$(ODIR)/conditional.o $(ODIR)/block.o $(ODIR)/iteration.o \
	$(ODIR)/mapfun.o $(ODIR)/prog.o $(ODIR)/multival.o \
	$(ODIR)/catch.o $(ODIR)/symbol.o $(ODIR)/cfun.o \
	$(ODIR)/cmpaux.o $(ODIR)/package.o $(ODIR)/big.o \
	$(ODIR)/number.o $(ODIR)/num_pred.o $(ODIR)/num_comp.o \
	$(ODIR)/num_arith.o $(ODIR)/num_sfun.o $(ODIR)/num_co.o \
	$(ODIR)/num_log.o $(ODIR)/num_rand.o $(ODIR)/earith.o \
	$(ODIR)/character.o  $(ODIR)/sequence.o \
	$(ODIR)/list.o $(ODIR)/hash.o $(ODIR)/array.o \
	$(ODIR)/string.o $(ODIR)/structure.o $(ODIR)/toplevel.o \
	$(ODIR)/file.o $(ODIR)/read.o $(ODIR)/backq.o \
	$(ODIR)/print.o $(ODIR)/format.o $(ODIR)/pathname.o \
	$(ODIR)/unixfsys.o $(ODIR)/unixfasl.o $(ODIR)/error.o \
	$(ODIR)/unixtime.o $(ODIR)/unixsys.o $(ODIR)/unixsave.o \
	$(ODIR)/unixint.o $(ODIR)/funlink.o  \
	$(ODIR)/fat_string.o ${ODIR}/run_process.o \
	$(ODIR)/init_pari.o $(MPFILES) $(SFASL) $(EXTRAS)

LSPOBJS	= $(LSPDIR)/defmacro.o $(LSPDIR)/evalmacros.o $(LSPDIR)/top.o \
	$(LSPDIR)/module.o $(LSPDIR)/predlib.o $(LSPDIR)/setf.o \
	$(LSPDIR)/arraylib.o $(LSPDIR)/assert.o $(LSPDIR)/defstruct.o \
	$(LSPDIR)/describe.o $(LSPDIR)/iolib.o $(LSPDIR)/listlib.o \
	$(LSPDIR)/mislib.o $(LSPDIR)/numlib.o $(LSPDIR)/packlib.o \
	$(LSPDIR)/seq.o $(LSPDIR)/seqlib.o $(LSPDIR)/trace.o \
	$(LSPDIR)/sloop.o  $(LSPDIR)/debug.o 

CMPOBJS	= $(CMPDIR)/cmpinline.o $(CMPDIR)/cmputil.o $(CMPDIR)/cmptype.o \
	$(CMPDIR)/cmpbind.o $(CMPDIR)/cmpblock.o $(CMPDIR)/cmpcall.o \
	$(CMPDIR)/cmpcatch.o $(CMPDIR)/cmpenv.o $(CMPDIR)/cmpeval.o \
	$(CMPDIR)/cmpflet.o $(CMPDIR)/cmpfun.o $(CMPDIR)/cmpif.o \
	$(CMPDIR)/cmplabel.o $(CMPDIR)/cmplam.o $(CMPDIR)/cmplet.o \
	$(CMPDIR)/cmploc.o $(CMPDIR)/cmpmap.o $(CMPDIR)/cmpmulti.o \
	$(CMPDIR)/cmpspecial.o $(CMPDIR)/cmptag.o $(CMPDIR)/cmptop.o \
	$(CMPDIR)/cmpvar.o $(CMPDIR)/cmpvs.o $(CMPDIR)/cmpwt.o

KCL=kcl

saved_$(KCL):	raw_$(KCL) $(RSYM) init_kcl.lsp \
		$(LSPDIR)/setdoc.lsp \
		$(CMPDIR)/cmpmain.lsp \
		$(CMPDIR)/lfun_list.lsp \
		$(CMPDIR)/cmpopt.lsp
# if you are wfs on rascal increment the minor version number.
	../xbin/if-exists /usr/u9/wfs/schelter "../xbin/inc-version"
	../xbin/if-exists saved_$(KCL) "rm -f saved_$(KCL)"
	cat init_kcl.lsp | \
	sed -e "s$(OLDDATE)Version(`cat ../majvers`.`cat ../minvers`) `date`g" \
	-e 'ssaved_kclsaved_$(KCL)g' \
	-e 'slinks t)links t)(setq compiler::*cc* "$(KCLCC)")$(INITFORM)g' \
	-e "sAKCLDIR${AKCLDIR}g" \
	-e "s(defun lisp-imp(setq si::*akcl-version* '`cat ../minvers`)(defun lisp-imp'g" | \
	./raw_$(KCL) $(PORTDIR)/ 

rsym:	mach_rsym.c $(HDIR)/mdefs.h
	$(CC) $(DEFS) -I../h -o rsym mach_rsym.c 

$(HDIR)/mdefs.h: $(HDIR)/include.h
	cat $(HDIR)/include.h | sed -e "/include/d" > $(HDIR)/mdefs.h

saved_kcn:	
	make -f make_kcn "MPFILES=$(MPFILES)"

FOR_RAW=$(OBJS) $(LSPOBJS) $(CMPOBJS)
SYS_KCL=sys_kcl.o

# on boot strapping the akcl compiler because of structure changes,
# some files need to be loaded as lisp files.
raw_$(KCL): $(FOR_RAW)
	rm -f raw_$(KCL) 
	- if  fgrep ASSIGN-DOWN ../cmpnew/cmpvar.c > /dev/null ; \
		then make raw_$(KCL)1 "KCL=${KCL}" "ODIR=${ODIR}" "EXTRAS=${EXTRAS}" "LIBS=${LIBS}" "LDCC=${LDCC}" "MPFILES=$(MPFILES)" ; \
		else make raw_$(KCL)1 "SYS_KCL=sys_boot.o" ; fi 

raw_$(KCL)1: $(SYS_KCL)
	$(LDCC)  -o raw_$(KCL) /lib/crt0.o $(FOR_RAW) $(SYS_KCL) -lsys_s $(LIBS1)

saved_kcl_boot:
	make raw_$(KCL)1 "SYS_KCL=sys_boot.o"
	make saved_kcl

HFILES	= $(HDIR)/include.h \
	$(HDIR)/object.h $(HDIR)/vs.h $(HDIR)/symbol.h $(HDIR)/bds.h \
	$(HDIR)/frame.h $(HDIR)/lex.h $(HDIR)/eval.h $(HDIR)/external.h \
	$(HDIR)/rgbc.h

sys_kcl.o:	sys_kcl.c $(HFILES)
	$(CC) $(CFLAGS) sys_kcl.c


# create a sed script.
boots : lspboots cmpboots
	rm -f boots ; \
	echo "# edit lspboots or cmpboots " >> boots ;\
	for v in `cat lspboots cmpboots` ; \
	do echo "s:$$v.o:$$v.lsp:g" >> boots ;\
	echo "s:init_or_load(init_$$v,:load1(:g" >> boots ; \
	done 

sys_boot.o: sys_kcl.c $(HFILES) boots
	rm -f sys_boot.c ; cat sys_kcl.c | sed -f boots > sys_boot.c
	$(CC) $(CFLAGS) sys_boot.c
	
kcp-sun:	gcrt0-mod.o
	(cd ../go ; make  "CFLAGS = -I../h -pg -g -c")
	make -e "KCL=kcp" "ODIR=../go"  "EXTRAS= gcrt0-mod.o" "LDCC=${LDCC}" "CC = ${CC} -pg"

kcp-bsd: ncrt0.o
	(cd ../go ; make  "CFLAGS = -I../h -pg -g -c")
	make "KCL=kcp" "ODIR=../go" "EXTRAS = gcrt0-mod.o ${EXTRAS} " "CC = ${CC} -pg" "LDCC = gcc -nostdlib  ncrt0.o "

aix_crt0.o:
	emacs -batch -l aix-crt0.el

kcp-aix: aix_crt0.o
	(cd ../go ; make  "CFLAGS = -I../h -pg -g -c")
	make "KCL=kcp" "ODIR=../go" "EXTRAS = /lib/gcrt0.o ${EXTRAS} " "CC = ${CC} -pg" "LDCC = ld  -H4096 -D0 -T512 -bhalt:4  -bnso -bI:/lib/syscalls.exp -L/lib/profiled aix_crt0.o     "	

kcp: ${KCP}
	
ncrt0.o: /lib/crt0.o
	emacs -batch -l ncrt0.el

gcrt0-mod.o:
	../xbin/if-exists /lib/gcrt0.o  "cp /lib/gcrt0.o ."
	../xbin/if-exists /usr/lib/gcrt0.o  "cp /usr/lib/gcrt0.o ."
	emacs -batch -l gcrt0.el


hpbsd-crt0-mod.o:
	cp /lib/crt0.o .
	emacs -batch -l hpbsd-crt0.el


clean:
	rm -f saved_$(KCL) raw_$(KCL) *.o core a.out
