# makefile for M68000 version of GSS

MAKE= /bin/make
RM= /bin/rm -f
MV = /bin/mv

.SUFFIXES: .O .o .scm

all:	BIN/gcv BIN/glk loader _ct BIN/gsi BIN/gsc BIN/gsx

clean:	.t
	$(RM) BIN/* LIB/lib* LIB/_*/*.o LIB/_*/*.c demos/*/*.O demos/*/*.o demos/*/*~ src/*/*.o src/*/*~ ../../GSC/gambit/*.o *.s *.o *~
	cd LOADER ; $(MAKE) clean

ultra-clean: clean
	$(RM) LIB/_*/*.O src/*/*.O ../../GSC/gambit/*.O ../../compiler/*.FIX ../../compiler/*.GEN

#------------------------------------------------------------------------------

BIN/gcv: src/gcv/gcv.c
	$(CC) src/gcv/gcv.c
	$(MV) a.out BIN/gcv

BIN/glk: src/glk/glk.c
	$(CC) src/glk/glk.c -DLIB_PATH=\"`pwd`/LIB\"
	$(MV) a.out BIN/glk

BIN/gsx: src/gsx/gsx.c
	$(CC) src/gsx/gsx.c -lX11
	$(MV) a.out BIN/gsx
	
BIN/gsi: BIN/glk LIB/libgloader.a LIB/libglib_ct.a \
	src/gsi/gsi.scm src/gsi/gsi.O src/gsi/gsi.o
	BIN/glk -rct src/gsi/gsi
	$(MV) src/gsi/gsi BIN/gsi

BIN/gsc: BIN/glk LIB/libgloader.a LIB/libglib_ct.a gsc-objects \
	src/gsc/gsc.scm src/gsc/gsc.O src/gsc/gsc.o \
	src/gsc/init.scm src/gsc/init.O src/gsc/init.o
	BIN/glk -rct src/gsc/init ../../GSC/gambit/host ../../GSC/gambit/utils ../../GSC/gambit/parms ../../GSC/gambit/scheme ../../GSC/gambit/source ../../GSC/gambit/env ../../GSC/gambit/ptree1 ../../GSC/gambit/ptree2 ../../GSC/gambit/pvm ../../GSC/gambit/back ../../GSC/gambit/front ../../GSC/gambit/target-m68000-3 ../../GSC/gambit/target-m68000-2 ../../GSC/gambit/target-m68000-1 src/gsc/gsc
	$(MV) src/gsc/gsc BIN/gsc

gsc-files: .t; cd ../.. ; $(MAKE) gsc-files

gsc-objects: BIN/gcv gsc-files \
	../../GSC/gambit/host.o \
	../../GSC/gambit/utils.o \
	../../GSC/gambit/parms.o \
	../../GSC/gambit/scheme.o \
	../../GSC/gambit/source.o \
	../../GSC/gambit/env.o \
	../../GSC/gambit/ptree1.o \
	../../GSC/gambit/ptree2.o \
	../../GSC/gambit/pvm.o \
	../../GSC/gambit/back.o \
	../../GSC/gambit/front.o \
	../../GSC/gambit/target-m68000-3.o \
	../../GSC/gambit/target-m68000-2.o \
	../../GSC/gambit/target-m68000-1.o


.O.o:	BIN/gcv
	BIN/gcv $*

.scm.O:
	gsc $* -- -h1000

#------------------------------------------------------------------------------

loader:	.t; cd LOADER ; $(MAKE)

#------------------------------------------------------------------------------

lib:	_ _c _cs _cst _ct _s _st _t

_:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_=""        GSC_=""
_c:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_=""        GSC_="check"
_cs:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_="-DSTATS" GSC_="check stats"
_cst:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_="-DSTATS" GSC_="check stats touch"
_ct:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_=""        GSC_="check touch"
_s:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_="-DSTATS" GSC_="stats"
_st:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_="-DSTATS" GSC_="stats touch"
_t:	.t BIN/gcv; $(MAKE) -f Make_lib TYPE=$@ CPP_=""        GSC_="touch"

#------------------------------------------------------------------------------

# .t is never up to date (i.e. it must always be made)

.t:

#------------------------------------------------------------------------------
