MAKE=make
DEFNS=	"SIMDIR=$(SIMDIR)" "CC=$(CC)" "LD=$(LD)" "MAKE=$(MAKE)" \
	"DTYPE=$(DTYPE)" "SIMLD=$(SIMLD)" "SIMCC=$(SIMCC)" "BINDIR=$(BINDIR)" \
	"SRCDIR=$(SRCDIR)" "XUSRLIBDIR=$(XUSRLIBDIR)" "XINCROOT=$(XINCROOT)"
#	"CFLAGS=$(CFLAGS)"

#				 root file
CONNECT_DIR = $(SRCDIR)
#				 include directory
IDIR = ${CONNECT_DIR}/include
#				 release directory
RELDIR = ${CONNECT_DIR}/lib
#				 flags used when building release ver
RFLAGS = $(CFLAGS) -O -I$(IDIR)
#				 flags used when building testing ver
TFLAGS = $(CFLAGS) -g -I$(IDIR)

RFILES = cmd_panel.o \
	 control_panel.o \
	 display_panel.o \
	 gisim.o \
	 gistart.o \
	 globals.o \
	 info_panel.o \
	 main.o \
	 misc.o \
	 mode_panel.o \
	 msg_panel.o \
	 show.o \
	 update.o
TFILES = cmd_panel.go \
	 control_panel.go \
	 display_panel.go \
	 gisim.go \
	 gistart.go \
	 globals.go \
	 info_panel.go \
	 main.go \
	 misc.go \
	 mode_panel.go \
	 msg_panel.go \
	 show.go \
	 update.go 

all: int float

debug:
	${MAKE} ${MFLAGS} ${DTYPE} ${DEFNS}

# next few rules recursively call this makefile with CFLAGS properly set
int:
	${MAKE} $(MFLAGS) release  CFLAGS="$(RFLAGS)" GI_NAME='gi' ${DEFNS}

test-int:
	${MAKE} $(MFLAGS) maketest CFLAGS="$(TFLAGS)" GI_NAME='gi' ${DEFNS}

float:
	${MAKE} $(MFLAGS) release CFLAGS="$(RFLAGS) -DFSIM" GI_NAME='gif' ${DEFNS}

test-float:
	${MAKE} $(MFLAGS) maketest CFLAGS="$(TFLAGS) -DFSIM" GI_NAME='gif' ${DEFNS}

# previous few rules recursively call this makefile with CFLAGS properly set

maketest: $(TFILES) 
	$(LD) -r -o gig.o $(TFILES)

release: $(RFILES) gistart.o
	$(LD) -r -o $(GI_NAME).o $(RFILES)
	cp $(GI_NAME).o $(RELDIR)/${GI_NAME}.o
	cp gistart.o $(RELDIR)/gistart.o
	rm -f  $(RFILES)

.SUFFIXES: .go .c

.c.go:
	$(CC) -c $(CFLAGS) $*.c
	mv $*.o $*.go

.c.o:
	$(CC) -c $(CFLAGS) $*.c


clean: tidy
	rm -f *.o *.go

tidy:
	rm -f *~ \#*

# source dependencies

globals.o: globals.c macros.h 

main.o: main.c macros.h externs.h panel.h

cmd_panel.o: cmd_panel.c macros.h externs.h panel.h control_panel.h mode_panel.h

msg_panel.o: msg_panel.c macros.h externs.h panel.h

info_panel.o: info_panel.c macros.h externs.h panel.h

control_panel.o: control_panel.c macros.h externs.h panel.h cmd_panel.h

display_panel.o: display_panel.c macros.h externs.h panel.h cmd_panel.h mode_panel.h control_panel.h

mode_panel.o: mode_panel.c macros.h externs.h panel.h control_panel.h

show.o: show.c macros.h externs.h control_panel.h

update.o: update.c macros.h externs.h control_panel.h

misc.o: misc.c macros.h externs.h control_panel.h

gisim.o: gisim.c macros.h externs.h $(IDIR)/uniproc.h

gistart.o: gistart.c
