CC = gcc
TIGCC = gcc-dx10
INSTDIR = /usr/local/bin
TIMINLIB = ../ti990-libc

DUMPDISK = dumpdisk.o support.o
SCANDISK = scandisk.o support.o
PATCHDISK = patchdisk.o support.o
PATCHFPY = patchfpy.o support.o
DUMPFPY = dumpfpy.o
DUMPROM = dumprom.o
FPYDIR = fpydir.o
FPYFILE = fpyfile.o support.o
CHKDISK = chkdisk.o support.o
GETDISK = getdisk.o support.o
GETFPY = getfpy.o
GETROM = getrom.o
HD = hd.o support.o
MKDISK = mkdisk.o support.o
MKTAPE = mktape.o support.o
PUTDISK = putdisk.o support.o
PUTFPY = putfpy.o
RDTAPE = rdtape.o support.o
SPLITOBJ = splitobj.o
SEDIT = sedit.o
DCOPY = dcopy.o support.o
OBJCMP = objcmp.o support.o
OBJLINK = objlink.o
OBJ2HEX = obj2hex.o

DISOBJS = dis990.o disloader.o dissupt.o disops.o

TCOPYOBJS = tload.o tapeio.o diskio.o lights.o
TCOMPOBJS = tcomp.o tapeio.o diskio.o lights.o
TCOMP2OBJS = tcomp2.o tapeio.o diskio.o lights.o
SDISKOBJS = setdsk.o diskio.o lights.o
TBOOTOBJS = tboot.o tapeio.o loader.o trans.o
DSKGEOOBJ = diskgeo.o diskio.o
TAROBJS = tar.o

EXES = ddisk.exe dfpy.exe drom.exe drom5.exe drom10a.exe drom12.exe \
	fdisk.exe pfpy.exe pdisk.exe tload.exe tboot.exe diskgeo.exe \
	setdsk.exe

TARGETS = dumpdisk dumpfpy dumprom fpydir fpyfile \
	hd mkdisk mktape rdtape patchdisk patchfpy dis990 scandisk \
	splitobj sedit dcopy chkdisk objcmp objlink putdisk obj2hex
GETTARGETS = getdisk getfpy getrom

all: 
	@if [ "`uname -s`" = "Linux" ] ; then \
		echo "Making Linux on a `uname -m`" ;\
		make linux ;\
	elif [ "`uname -s`" = "AIX" ] ; then \
		echo "Making AIX" ;\
		make aix ;\
	elif [ "`uname -s`" = "Darwin" ] ; then \
		echo "Making Darwin" ;\
		make darwin ;\
	elif [ "`uname -s`" = "HP-UX" ] ; then \
		echo "Making HP-UX" ;\
		make hpux ;\
	elif [ "`uname -s`" = "SunOS" ] ; then \
		echo "Making Solaris" ;\
		make solaris ;\
	elif [ "`uname -s`" = "OS/390" ] ; then \
		echo "Making OS/390 USS" ;\
		make uss ;\
	elif [ "`uname -s | cut -c1-7`" = "MINGW32" ] ; then \
                echo "Making `uname -s` with MSYS" ;\
		make mingw ;\
	else \
		echo "OS type `uname -s` is unknown" ;\
		echo "You must enter an OS type. OS types are:" ;\
		echo "   aix | hpux | linux | mingw | nt | solaris | uss " ;\
		echo " " ;\
	fi

aix:
	@make $(TARGETS) $(GETTARGETS) "CFLAGS = -DUNIX -DAIX $(DEBUG)"

darwin:
	@make $(TARGETS) $(GETTARGETS) "CFLAGS = -DUNIX -DDARWIN $(DEBUG)"

hpux:
	@make $(TARGETS) $(GETTARGETS) "CFLAGS = -DUNIX -DHPUX $(DEBUG)"

linux:
	@make $(TARGETS) $(GETTARGETS) "CFLAGS = -DUNIX -DLINUX $(DEBUG)" 

mingw:
	@make $(TARGETS) "CFLAGS = -DWIN32 -DMINGW $(DEBUG)" 

nt:
	@nmake/nologo -f makefile.nt

solaris:
	@make $(TARGETS) $(GETTARGETS) "CFLAGS = -DUNIX -DSOLARIS $(DEBUG)"

uss:
	@make $(TARGETS) "CC = cc" "CFLAGS = -DUNIX -DUSS $(DEBUG)"


allexes: $(EXES)

scandisk: $(SCANDISK)
	$(CC) $(DEBUG) -o $@ $(SCANDISK)

dumpdisk: $(DUMPDISK)
	$(CC) $(DEBUG) -o $@ $(DUMPDISK)

patchdisk: $(PATCHDISK)
	$(CC) $(DEBUG) -o $@ $(PATCHDISK)

patchfpy: $(PATCHFPY)
	$(CC) $(DEBUG) -o $@ $(PATCHFPY)

dumpfpy: $(DUMPFPY)
	$(CC) $(DEBUG) -o $@ $(DUMPFPY)

dumprom: $(DUMPROM)
	$(CC) $(DEBUG) -o $@ $(DUMPROM)

fpydir: $(FPYDIR)
	$(CC) $(DEBUG) -o $@ $(FPYDIR)

fpyfile: $(FPYFILE)
	$(CC) $(DEBUG) -o $@ $(FPYFILE)

chkdisk: $(CHKDISK)
	$(CC) $(DEBUG) -o $@ $(CHKDISK)

getdisk: $(GETDISK)
	$(CC) $(DEBUG) -o $@ $(GETDISK)

getfpy: $(GETFPY)
	$(CC) $(DEBUG) -o $@ $(GETFPY)

getrom: $(GETROM)
	$(CC) $(DEBUG) -o $@ $(GETROM)

hd: $(HD)
	$(CC) $(DEBUG) -o $@ $(HD)

mkdisk: $(MKDISK)
	$(CC) $(DEBUG) -o $@ $(MKDISK)

mktape: $(MKTAPE)
	$(CC) $(DEBUG) -o $@ $(MKTAPE)

putfpy: $(PUTFPY)
	$(CC) $(DEBUG) -o $@ $(PUTFPY)

putdisk: $(PUTDISK)
	$(CC) $(DEBUG) -o $@ $(PUTDISK)

rdtape: $(RDTAPE)
	$(CC) $(DEBUG) -o $@ $(RDTAPE)

splitobj: $(SPLITOBJ)
	$(CC) $(DEBUG) -o $@ $(SPLITOBJ)

dis990: $(DISOBJS)
	$(CC) $(DEBUG) -o dis990 $(DISOBJS)

objcmp: $(OBJCMP)
	$(CC) $(DEBUG) -o objcmp $(OBJCMP)

objlink: $(OBJLINK)
	$(CC) $(DEBUG) -o objlink $(OBJLINK)

obj2hex: $(OBJ2HEX)
	$(CC) $(DEBUG) -o obj2hex $(OBJ2HEX)

dcopy: $(DCOPY)
	$(CC) $(DEBUG) -o $@ $(DCOPY)


clean:
	rm -f $(PATCHDISK) patchdisk
	rm -f $(PATCHFPY) patchfpy
	rm -f $(DUMPDISK) dumpdisk
	rm -f $(SCANDISK) scandisk
	rm -f $(DUMPFPY) dumpfpy
	rm -f $(DUMPROM) dumprom
	rm -f $(FPYDIR) fpydir
	rm -f $(FPYFILE) fpyfile
	rm -f $(CHKDISK) chkdisk
	rm -f $(GETDISK) getdisk
	rm -f $(GETFPY) getfpy
	rm -f $(GETROM) getrom
	rm -f $(HD) hd
	rm -f $(MKDISK) mkdisk
	rm -f $(MKTAPE) mktape
	rm -f $(PUTDISK) putdisk
	rm -f $(PUTFPY) putfpy
	rm -f $(RDTAPE) rdtape
	rm -f $(SPLITOBJ) splitobj
	rm -f $(SEDIT) sedit
	rm -f $(DCOPY) dcopy
	rm -f $(OBJCMP) objcmp
	rm -f $(OBJLINK) objlink
	rm -f $(OBJ2HEX) obj2hex
	rm -f $(DISOBJS) dis990
	rm -f $(TCOPYOBJS) tload.exe tload.map
	rm -f $(TCOMPOBJS) tcomp.exe tcomp.map
	rm -f $(TCOMP2OBJS) tcomp2.exe tcomp2.map
	rm -f $(SDISKOBJS) setdsk.exe setdsk.map
	rm -f $(TBOOTOBJS) tboot.exe tboot.map
	rm -f $(DSKGEOOBJ) diskgeo.exe diskgeo.map
	rm -f $(TAROBJS) tar.exe tar.map
	rm -f $(EXES) *.lst

install:
	cp $(TARGETS) $(INSTDIR)

dumpdisk.o: dumpdisk.c simdsk.h hexdump.h support.h
patchdisk.o: patchdisk.c simdsk.h hexdump.h support.h
patchfpy.o: patchfpy.c utiltypes.h fd800defs.h hexdump.h support.h
dumpfpy.o: dumpfpy.c utiltypes.h fd800defs.h hexdump.h
dumprom.o: dumprom.c hexdump.h
fpydir.o: fpydir.c utiltypes.h fd800defs.h tx990types.h ucsdtypes.h hexdump.h
fpyfile.o: fpyfile.c utiltypes.h fd800defs.h tx990types.h ucsdtypes.h \
	hexdump.h support.h
chkdisk.o: chkdisk.c simdsk.h support.h
getdisk.o: getdisk.c simdsk.h support.h
getfpy.o: getfpy.c fd800defs.h
getrom.o: getrom.c
hd.o: hd.c hexdump.h support.h simdsk.h
mkdisk.o: mkdisk.c simdsk.h support.h
mktape.o: mktape.c support.h
scandisk.o: scandisk.c hexdump.h simdsk.h support.h
putdisk.o: putdisk.c support.h simdsk.h
putfpy.o: putfpy.c
rdtape.o: rdtape.c hexdump.h support.h
splitobj.o: splitobj.c
sedit.o: sedit.c fd800defs.h
dcopy.o: dcopy.c simdsk.h
objcmp.o: objcmp.c utildef.h hexdump.h support.h
objlink.o: objlink.c utildef.h hexdump.h

ddisk.exe: ddisk.asm
	asm990 -clo ddisk.lst ddisk.exe ddisk.asm
dfpy.exe: dfpy.asm
	asm990 -clo dfpy.lst dfpy.exe dfpy.asm
drom.exe: drom.asm
	asm990 -clo drom.lst drom.exe drom.asm
drom5.exe: drom5.asm
	asm990 -clo drom5.lst drom5.exe drom5.asm
drom10a.exe: drom10a.asm
	asm990 -clo drom10a.lst drom10a.exe drom10a.asm
drom12.exe: drom12.asm
	asm990 -clo drom12.lst drom12.exe drom12.asm
fdisk.exe: fdisk.asm
	asm990 -clo fdisk.lst fdisk.exe fdisk.asm
pdisk.exe: pdisk.asm
	asm990 -clo pdisk.lst pdisk.exe pdisk.asm
pfpy.exe: pfpy.asm
	asm990 -clo pfpy.lst pfpy.exe pfpy.asm

tload.exe: $(TCOPYOBJS)
	lnk990 -cmo tload.map tload.exe $(TIMINLIB)/crt0sa.o \
		$(TCOPYOBJS) -L$(TIMINLIB) -lcsys -lsa

tcomp.exe: $(TCOMPOBJS)
	lnk990 -cmo tcomp.map tcomp.exe $(TIMINLIB)/crt0sa.o \
		$(TCOMPOBJS) -L$(TIMINLIB) -lcsys -lsa

tcomp2.exe: $(TCOMP2OBJS)
	lnk990 -cmo tcomp2.map tcomp2.exe $(TIMINLIB)/crt0sa.o \
		$(TCOMP2OBJS) -L$(TIMINLIB) -lcsys -lsa

setdsk.exe: $(SDISKOBJS)
	lnk990 -cmo setdsk.map setdsk.exe $(TIMINLIB)/crt0sa.o \
		$(SDISKOBJS) -L$(TIMINLIB) -lcsys -lsa

tboot.exe: $(TBOOTOBJS)
	lnk990 -P 0xC000 -cmo tboot.map tboot.exe $(TIMINLIB)/crt0sa.o \
		$(TBOOTOBJS) -L$(TIMINLIB) -lcsys -lsa

diskgeo.exe: $(DSKGEOOBJ)
	lnk990 -cmo diskgeo.map diskgeo.exe $(TIMINLIB)/crt0sa.o \
		$(DSKGEOOBJ) -L$(TIMINLIB) -lcsys -lsa

tar.exe: $(TAROBJS)
	lnk990 -mo tar.map tar.exe $(TIMINLIB)/crt0sci.o \
		$(TAROBJS) -L$(TIMINLIB) -lcsys -ldxsci

dis990.o: dis990.c utildef.h utiltypes.h
disloader.o: disloader.c utildef.h utiltypes.h
dissupt.o: dissupt.c utildef.h utiltypes.h
disops.o: disops.c utildef.h utiltypes.h
support.o: support.c support.h

tcomp.o: tcomp.c tapeio.h diskio.h hexdump.h
	$(TIGCC) $(DEBUG) -c tcomp.c
tcomp2.o: tcomp2.c tapeio.h diskio.h hexdump.h
	$(TIGCC) $(DEBUG) -c tcomp2.c
tload.o: tload.c tapeio.h diskio.h hexdump.h
	$(TIGCC) $(DEBUG) -c tload.c
setdsk.o: setdsk.c diskio.h hexdump.h
	$(TIGCC) $(DEBUG) -c setdsk.c
tboot.o: tboot.c tapeio.h utildef.h
	$(TIGCC) $(DEBUG) -c tboot.c
loader.o:loader.c 
	$(TIGCC) -Os $(DEBUG) -c loader.c
tapeio.o: tapeio.c tapeio.h
	$(TIGCC) -Os $(DEBUG) -c tapeio.c
diskio.o: diskio.c diskio.h
	$(TIGCC) -Os $(DEBUG) -c diskio.c
diskgeo.o: diskgeo.c diskio.h
	$(TIGCC) -Os $(DEBUG) -c diskgeo.c
lights.o: lights.asm
	asm990 -o lights.o lights.asm
trans.o: trans.asm
	asm990 -o trans.o trans.asm
tar.o: tar.c
	$(TIGCC) -Os $(DEBUG) -c tar.c
