
CC = gcc
TARGETS = sim990
INSTDIR = /usr/local/bin
ROMDIR = /usr/local/share/sim990
ROMFILES = ti990-4.rom ti990-5.rom ti990-10.rom ti990-12.rom

SIMOBJS = sim990.o simops.o simfops.o simeops.o simio.o simdsk.o simfpy.o \
	simtape.o sim911.o sim931.o simh19.o simeia.o simcard.o sima733.o \
	sim9902.o sim9903.o simprint.o simpunch.o sim401.o sim403.o \
	simterm.o simtermd.o simvdt.o \
	simclock.o simdis.o simloader.o screen.o decimal.o ibmfloat.o \
	hexdump.o

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 (OS X)" ;\
		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 | cut -c1-7`" = "MINGW32" ] ; then \
                echo "Making `uname -s` with MSYS" ;\
		make mingw ;\
        elif [ "`uname -s | cut -c1-6`" = "CYGWIN" ] ; then \
                echo "Making `uname -s`" ;\
                make cygwin ;\
	else \
		echo "OS type `uname -s` is unknown" ;\
		echo "You must enter an OS type. OS types are:" ;\
		echo "   aix | cygwin | darwin | hpux | linux | mingw | " ;\
		echo "   nt | solaris " ;\
		echo " " ;\
	fi

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

cygwin:
	@make $(TARGETS) "CFLAGS = -O -DCYGWIN -DUNIX -DANSICRT $(DEBUG)"

darwin:
	@make $(TARGETS) "CFLAGS = -DUNIX -DDARWIN -DANSICRT $(DEBUG)" \
 		"THREADLIB = -lpthread"

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

and-linux:
	@make $(TARGETS) "CFLAGS = -DUNIX -DDARWIN -DLINUX -DANSICRT $(DEBUG)"

linux:
	@make $(TARGETS) "CFLAGS = -DUNIX -DLINUX -DANSICRT $(DEBUG)" \
		"THREADLIB = -lpthread"

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

nt:
	@nmake/nologo -f makefile.nt

solaris:
	@make $(TARGETS) "CFLAGS = -DUNIX -DSOLARIS -DANSICRT $(DEBUG)" \
		"THREADLIB = -lpthread -lnsl -lsocket -lrt"


sim990: $(SIMOBJS)
	$(CC) ${DEBUG} -o sim990 $(SIMOBJS) $(THREADLIB)

clean:
	rm -f $(SIMOBJS) sim990 *.out *.trc *.t core*

install:
	cp $(TARGETS) $(INSTDIR) 
	test -d $(ROMDIR) || mkdir -p $(ROMDIR) 
	cp $(ROMFILES) $(ROMDIR)

sim990.o: sim990.c simdef.h screen.h simdsk.h
simops.o: simops.c simdef.h 
simfops.o: simfops.c simdef.h ibmfloat.h
simeops.o: simeops.c simdef.h decimal.h
simio.o: simio.c simdef.h simdsk.h
simdsk.o: simdsk.c simdef.h simdsk.h
simtape.o: simtape.c simdef.h
simfpy.o: simfpy.c simdef.h
sim911.o: sim911.c simdef.h
sim931.o: sim931.c simdef.h
simh19.o: simh19.c simdef.h
sim9902.o: sim9902.c simdef.h
sim9903.o: sim9903.c simdef.h
simeia.o: simeia.c simdef.h
sim401.o: sim401.c simdef.h
sim403.o: sim403.c simdef.h
sima733.o: sima733.c simdef.h
simcard.o: simcard.c simdef.h simcra.h
simprint.o: simprint.c simdef.h
simpunch.o: simpunch.c simdef.h simcra.h
simdis.o: simdis.c simdef.h
simterm.o: simterm.c simdef.h screen.h
simtermd.o: simtermd.c simdef.h 
simvdt.o: simvdt.c simdef.h screen.h
simclock.o: simclock.c simdef.h
simloader.o: simloader.c simdef.h
screen.o: screen.c screen.h simdef.h
decimal.o: decimal.c simdef.h decimal.h
ibmfloat.o: ibmfloat.c simdef.h ibmfloat.h
