# Task Control Architecture Makefile

#
# directory containing lisp.h (Franz Common Lisp)
#
LISPINCLUDES = -I/usr/local/lib/fcl4.2/misc

#
# directory containing VxWorks headers
#
VXWORKSINCLUDES = -I/usr1/vw/h

#
# flags for sgi compile
#
SGI_CFLAGS = -g -ansi

#
# flags for sun compile using GCC
#
SUN_CFLAGS = -g -ansi

#
# flags for VxWorks compile using GCC
#
VX_CFLAGS = -g -ansi -DCPU=MC68020

VXOBJS2 = behaviors.o comModule.o tcModError.o

MODVXOBJS =  datamsg.o formatters.o hash.o idtable.o key.o list.o monMod.o \
	primFmttrs.o reg.o resMod.o sendMsg.o taskTreeMod.o tcaMatrix.o \
	tcaMem.o tcaRef.o tplModule.o msgTapMod.o excepMod.o

MODULEOBJS = $(VXOBJS2) $(MODVXOBJS)

SERVOBJS = comServer.o dispatch.o lex.o parseFmttrs.o recvMsg.o queue.o \
	res.o tplConstr.o tms.o cells.o qlattice.o \
	rules.o mon.o tcerror.o logging.o printData.o taskTree.o \
	msgTap.o exception.o

# exception.o excModule.o preference.o prefModule.o

SERVEROBJS = $(SERVOBJS) $(MODULEOBJS)

SGISERVEROBJS = $(SERVEROBJS) ftime.o

SGI4DOBJS = $(SGISERVEROBJS:%.o=sgi4d/%.o)

SUN4OBJS = $(SERVEROBJS:%.o=sun4/%.o)

SUN3OBJS = $(SERVEROBJS:%.o=sun3/%.o)

MODVXOBJS2 = $(MODVXOBJS:%.o=vx/%.o)

LISPOBJS = $(MODULEOBJS:%.o=lisp/%.o)

VXOBJS = $(VXOBJS2:%.o=vx/%.o)

TESTOBJS = $(SERVOBJS) $(MODULEOBJS)

INC = -I. -I../test/

%.o: %.c
	gcc -g -c -DSUN4 $<

sgi4d/%.o: %.c
	cc -o $@ -DSUN4 -DSGI $(SGI_CFLAGS) -c $<

sun4/%.o: %.c
	gcc -o $@ -DSUN4 $(SUN_CFLAGS) -c $< 

sun3/%.o: %.c
	gcc -o $@ -DSUN3 $(SUN_CFLAGS) -c $< 

lisp/%.o: %.c
	gcc -o $@ -DSUN4 -DLISP $(SUN_CFLAGS) $(LISPINCLUDES) -c $<

vx/%.o: %.c
	cc68k -o $@ -DVXWORKS $(VX_CFLAGS) $(VXWORKSINCLUDES) -c $< 

#test: libtca.a c gs1 gs2

#test: libtca.a c a b 

#test: libtca.a c a b t m t2 t3 m1 m2

#
# default build: sun4 and VxWorks
#
all sun: ../bin/central_sun4 ../lib/libtca_vx.a ../lib/libtca_lisp.a

#
# do a "make sgi" to build for sgi4d
#
sgi: ../bin/central_sgi4d ../lib/libtca_vx.a

libtca.a: $(TESTOBJS)
	ar rvu libtca.a $(TESTOBJS)
	ranlib libtca.a

c: central.c libtca.a
	cc $(INC) -g -o c central.c libtca.a 

print.o: print.c model.h
	cc $(INC) -g -c print.c

gs1: gs1.c libtca.a print.o model.h
	cc $(INC) -g -o gs1 gs1.c print.o libtca.a -lm

gs2: gs2.c libtca.a print.o model.h
	cc $(INC) -g -o gs2 gs2.c print.o libtca.a -lm

m: ../test/mt.c libtca.a
	cc $(INC) -g -o m ../test/mt.c libtca.a

m1: ../test/mtest1.c libtca.a
	cc $(INC) -g -o m1 ../test/mtest1.c libtca.a 

m2: ../test/mtest2.c libtca.a
	cc $(INC) -g -o m2 ../test/mtest2.c libtca.a

t2: ../test/t2.c libtca.a
	cc $(INC) -g -o t2 ../test/t2.c libtca.a

t3: ../test/t3.c libtca.a
	cc $(INC) -g -o t3 ../test/t3.c libtca.a

a3: ../test/a3.c libtca.a
	cc $(INC) -g -o a3 ../test/a3.c libtca.a

b3: ../test/b3.c libtca.a
	cc $(INC) -g -o b3 ../test/b3.c libtca.a

ra: ../test/ra.c libtca.a
	cc $(INC) -g -o ra ../test/ra.c libtca.a

rb: ../test/rb.c libtca.a
	cc $(INC) -g -o rb ../test/rb.c libtca.a

rc: ../test/rc.c libtca.a
	cc $(INC) -g -o rc ../test/rc.c libtca.a

a: ../test/a1.c libtca.a
	cc $(INC) -g -o a ../test/a1.c libtca.a

b: ../test/b1.c libtca.a
	cc $(INC) -g -o b ../test/b1.c libtca.a

t: ../test/tapTest.c libtca.a
	cc $(INC) -g -o t ../test/tapTest.c libtca.a

st: ../test/showTree.c libtca.a
	cc $(INC) -g -o st ../test/showTree.c libtca.a

../bin/central_sgi4d: central.c ../lib/libtca_sgi4d.a
	cc -o ../bin/central_sgi4d $(SGI_CFLAGS) -DSUN4 -DSGI central.c \
		../lib/libtca_sgi4d.a

../bin/central_sun4: central.c ../lib/libtca_sun4.a
	gcc -o ../bincentral_sun4 $(SUN_CFLAGS) -DSUN4 central.c \
		../lib/libtca_sun4.a

../bin/central_sun3: central.c ../lib/libtca_sun3.a
	cc -o ../bin/central_sun3 $(SUN_CFLAGS) -DSUN3 central.c \
		../lib/libtca_sun3.a

../lib/libtca_sgi4d.a: $(SGI4DOBJS)
	ar rvu ../lib/libtca_sgi4d.a $(SGI4DOBJS)

../lib/libtca_sun4.a: $(SUN4OBJS)
	ar rvu ../lib/libtca_sun4.a $(SUN4OBJS)
	ranlib ../lib/libtca_sun4.a	

../lib/libtca_sun3.a: $(SUN3OBJS)
	ar rvu ../lib/libtca_sun3.a $(SUN3OBJS)
	ranlib ../lib/libtca_sun3.a	

../lib/libtca_lisp.a: $(LISPOBJS)
	ar rvu ../lib/libtca_lisp.a $(LISPOBJS)
	ranlib ../lib/libtca_lisp.a

../lib/libtca_vx.a: $(VXOBJS) $(MODVXOBJS2)
	ld68k -r -o ../lib/libtca_vx.a $(VXOBJS) $(MODVXOBJS2) 

clean:
	rm -f *.o
	rm -f c a b t m t2 t3 m1 m2 st ra rb rc
	rm -f libtca.a
	rm -f sgi4d/*
	rm -f sun3/*
	rm -f sun4/*
	rm -f lisp/*
	rm -f vx/*

#libtca_mips.a: $(MODULEOBJS) -DSUN4
#	ar rvu mips/libtca_mips.a $(MODULEOBJS)
# some include file changes - need a def MIPS

TCASRCS = $(SERVEROBJS:.o=.c) central.c

tca.lint: $(TCASRCS)
	lint -uvx $(TCASRCS)
