# makefile for M68000 version of GSS

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

.SUFFIXES: .O .o .scm

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

all-x11: BIN/gcv BIN/glk _ct BIN/gsi-x11 BIN/gsc-x11

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 loader 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/gsi-x11: BIN/glk loader-x11 LIB/libglib_ct.a \
	src/gsi/xdrawing.scm src/gsi/xdrawing.O src/gsi/xdrawing.o \
	src/gsi/gsi.scm src/gsi/gsi.O src/gsi/gsi.o
	BIN/glk -rct src/gsi/xdrawing src/gsi/gsi -lX11
	$(MV) src/gsi/gsi BIN/gsi-x11

BIN/gsc: BIN/glk loader LIB/libglib_ct.a gsc-objects \
	src/gsi/xdrawing.scm src/gsi/xdrawing.O src/gsi/xdrawing.o \
	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/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

BIN/gsc-x11: BIN/glk loader-x11 LIB/libglib_ct.a gsc-objects \
	src/gsi/xdrawing.scm src/gsi/xdrawing.O src/gsi/xdrawing.o \
	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/gsi/xdrawing src/gsc/init ../../GSC/gambit/host ../../GSC/gambit/utils ../../GSC/gambit/parms ../../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 -lX11
	$(MV) src/gsc/gsc BIN/gsc-x11

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/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 ; $(TOUCH) ext_unix.c ; $(MAKE) CFLAGS_OTHER="-DNO_EMUL_M68881 -Dunix_extensions"

loader-x11: .t; cd LOADER ; $(TOUCH) ext_unix.c ; $(MAKE) CFLAGS_OTHER="-DNO_EMUL_M68881 -Dunix_extensions -Dx_extensions"

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

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:

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