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)"

# SRCDIR is the root of the distribution before installation
#
#				 include directory
IDIR = $(SRCDIR)/include
#				 release directory
RELDIR = $(SRCDIR)/lib
#
XGIDIR = $(SRCDIR)/src/xgi
#				 flags used when building release version
#				 don't ask about the escape sequences!!
#				 all I want is -DXX='"YY"' passed to cc
#
FLAGS = $(CFLAGS) -I$(IDIR) -I$(XINCROOT)
#
RFLAGS= $(FLAGS) -DXGIDIR='"'"'$(RELDIR)'"'"' -O 
#
#				 flags used when building testing version
#
TFLAGS= $(FLAGS) -DXGIDIR='"'"'$(XGIDIR)'"'"' -g
#
#
RFILES = Display.o \
	 cmd_panel.o \
	 control_panel.o \
	 display_panel.o \
	 gisim.o \
	 gistart.o \
	 gi_cmdfunc.o \
	 globals.o \
	 info_panel.o \
	 main.o \
	 misc.o \
	 mode_panel.o \
	 msg_panel.o \
	 show.o \
	 update.o \
	 Xsupport.o

TFILES = Display.go \
	 cmd_panel.go \
 	 control_panel.go \
 	 display_panel.go \
 	 gisim.go \
 	 gistart.go \
	 gi_cmdfunc.go \
 	 globals.go \
 	 info_panel.go \
 	 main.go \
 	 misc.go \
 	 mode_panel.go \
 	 msg_panel.go \
 	 show.go \
 	 update.go \
 	 Xsupport.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='xgi' \
			  SEDSTR=$(SIMDIR) ${DEFNS}
test-int:
	${MAKE} $(MFLAGS) maketest CFLAGS="$(TFLAGS)" GI_NAME='xgi' \
			  SEDSTR=$(SRCDIR) ${DEFNS}
float:
	${MAKE} $(MFLAGS) release CFLAGS="$(RFLAGS) -DFSIM" GI_NAME='xgif' \
			  SEDSTR=$(SIMDIR) ${DEFNS}
test-float:
	${MAKE} $(MFLAGS) maketest CFLAGS="$(TFLAGS) -DFSIM" GI_NAME='xgif' \
		SEDSTR=$(SRCDIR) ${DEFNS}

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

maketest: $(TFILES) 
	$(LD) -r -o ${GI_NAME}g.o $(TFILES)
	cat xgi.help-dist | sed 's?TOPLEVELDIRECTORY?$(SEDSTR)?g' > xgi.help

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)
	cat xgi.help-dist | sed 's?TOPLEVELDIRECTORY?$(SEDSTR)?g' > $(RELDIR)/xgi.help

.SUFFIXES: .go .c

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

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


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

tidy:
	rm -f *~ \#*

# source dependencies

Display.o: Display.c Display.h DisplayP.h

globals.o: globals.c macros.h externs.h Xsupport.h

main.o: main.c macros.h externs.h panel.h info_panel.h control_panel.h Xsupport.h

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

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

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

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

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

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

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

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

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

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

gistart.o: gistart.c

Xsupport.c: Xsupport.h
