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

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

LIBS	= -lm # -lpixrect -lc
OLDDATE = "DATE"
AKCLIB	= $(ODIR)/akcllib.a
MPFILES= $(MPDIR)/mpi-386.o  $(MPDIR)/libmport.a
EXE_PREFIX=./
# begin makedefs
AKCLDIR=/akcl
SHELL=/bin/sh
MACHINE=dos-go32

LBINDIR=d:/unix
OFLAG	= -O
#  -O
LIBS	= -lm -lg 

CAT=cat -B
EXE_PREFIX=

#gcc 2.1 compiles akcl correctly as far as I have been able to determine.
CC = gcc -I${AKCLDIR}/dos -I${AKCLDIR}/o -DVOL=volatile -W 
ODIR_DEBUG= -O
# -O -g
# using gcc so dont need this and dont have cc.
MYGCC=gcc
RANLIB1_O=ranlib akcllib.a
RANLIB2_O=
RANLIB1_MP=ranlib libmport.a
RANLIB2_MP=
GNULIB1= ${MPDIR}/gnulib1.o

PORTDIR	= ..\unixport

LSP2C_1=..\xbin\if-exists $(PORTDIR)\saved_kcl rm -f $*.c $*.h $*.data $*.o
LSP2C_2=..\xbin\if-exists makefile $(PORTDIR)\saved_kcl $(PORTDIR)/ $* $* S0111

.lsp.c:
	$(LSP2C_1)
	$(LSP2C_2)

LSP2O_1=..\xbin\if-exists $(PORTDIR)\saved_kcl rm -f $*.c $*.h $*.data $*.o
LSP2O_2=..\xbin\if-exists $(PORTDIR)\saved_kcl $(PORTDIR)\saved_kcl $(PORTDIR)/ $* $* S0111
LSP2O_3=..\xbin\if-exists $(PORTDIR)\saved_kcl $(CC) $(OFLAG) $(CFLAGS) $*.c
LSP2O_4=..\xbin\if-exists $(PORTDIR)\saved_kcl ..\xbin\append ${NULLFILE} $*.data $*.o

.lsp.o: 
	$(LSP2O_1)
	$(LSP2O_2)
	$(LSP2O_3)
	$(LSP2O_4)

AS=as

MAINDIR = /akcl
CFLAGS	= -c $(DEFS)  -I../h

MAIN    = ../o/main.o

MPFILES=${MPDIR}/mpi-386d.o ${MPDIR}/libmport.a
# objs for libmport.a
MPOBJS= mp_divul3.o mp_bfffo.o mp_mulul3.o mp2.o mp_dblrsl3.o mp_dblremul3.o ${MPDIR}/gnulib1.o
NATIVE_CC=gcc

RSYM	= rsym
SFASL	= $(ODIR)/sfasl.o
EXTRA_OTARGETS=

# extras for dos (in dos directory)
DOS_ODIR=../dos
EXX_DOS=${DOS_ODIR}/dostimes.o ${DOS_ODIR}/read.o ${DOS_ODIR}/signal.o ${DOS_ODIR}/sigman.o ${DOS_ODIR}/dum_dos.o

# This function will be run before dumping.
# When using SFASL it is good to have (si::build-symbol-table)
INITFORM=(si::build-symbol-table)

NULLFILE=
DPP = ..\bin\dpp

# 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 ../mp/gnulib1.o $(MPFILES) $(SFASL) $(EXTRA_OTARGETS)

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

xxxxsaved_$(KCL):	raw_$(KCL) $(RSYM) init_kcl.lsp \
		$(LSPDIR)/setdoc.lsp \
		$(CMPDIR)/cmpmain.lsp \
		$(CMPDIR)/lfun_list.lsp \
		$(CMPDIR)/cmpopt.lsp akcl${ISDOS}.lsp

saved_kcl: raw_kcl
#	go32 ${EXE_PREFIX}raw_kcl ${PORDIR}/ < akcl${ISDOS}.lsp
	copy saved_kcl.exe raw_kcl.exe
	raw_kcl.exe ${PORDIR}/ < akcl${ISDOS}.lsp
	del raw_kcl.exe


akcldos.lsp:
	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* "$(CC)")$(INITFORM)g' \
	-e "sAKCLDIR${AKCLDIR}g" \
	-e "s(defun lisp-imp(setq si::*akcl-version* '`cat ../minvers`)(defun lisp-imp'g" > akcldos.lsp

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

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

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

raw_${KCL}: $(EXX_DOS) ${SYS_KCL} ${FOR_RAW} 
	>raw.$$$$$$ ${OBJS}
	>>raw.$$$$$$ ${LSPOBJS}
	>>raw.$$$$$$ ${CMPOBJS}
	>>raw.$$$$$$ ${EXX_DOS}
	>>raw.$$$$$$ sys_kcl.o -lm ${ODIR}/akcllib.a
	${LDCC} @raw.$$$$$$ -o raw_kcl
#	copy raw_kcl raw_kcl2
#	strip -x raw_kcl2

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

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

all: raw_kcl

