SHELL		= /bin/csh
RM		= /usr/bin/rm -f
C++ 		= g++
# C++FLAGS 	= -O 
C++FLAGS 	= -O -DUNIT_CELLS -DSTABLE_NEIGHBORS 
LIB 		= -lm
H_FILES 	= header.h cell.h representation.h cellList.h tissue.h cplCode.h point.h hash_define.h 
CC_FILES	= cell.cc repre2.cc cellList.cc point.cc representation.cc cpl.cc tissue.cc cplCode.cc
OFILES 		= point.o tissue.o cpl.o cellList.o cell.o representation.o repre2.o cplCode.o
BASIC_F		= header.h hash_define.h Makefile
PARSE_FILES	= cpl.lex cpl.y parse.h cpl.code
MAN_FILES	= cplvisual.1 cplmovie.1 cpl.1
INFO 		= Makefile README INTERFACE CPL-Changes
EXAMPLES	= dictyostelium.cpl adhes.cpl
OTHERS 		= cplvisual.c cplmovie.c

all:	cpl display

cpl:	quads $(OFILES)
	$(C++) $(OFILES) -o cpl ${LIB}
	strip cpl
point.o:point.cc point.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c point.cc -o point.o
representation.o:representation.cc representation.h cell.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c representation.cc -o representation.o
repre2.o:repre2.cc representation.h cell.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c repre2.cc -o repre2.o
tissue.o:tissue.cc tissue.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c tissue.cc -o tissue.o
cellList.o:cellList.cc cellList.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c cellList.cc -o cellList.o
cell.o:cell.cc cell.h $(BASIC_F) cplCode.h
	$(C++) $(C++FLAGS) -c cell.cc -o cell.o
cpl.o:cpl.cc cell.h tissue.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c cpl.cc -o cpl.o
cplCode.o:cplCode.cc cell.h tissue.h $(BASIC_F) 
	$(C++) $(C++FLAGS) -c cplCode.cc -o cplCode.o
# transform the cpl file last modified into C++
quads:	parser
	echo ----------File being compiled is `ls -t *.cpl|head -1`.-----------
	parser `ls -t *.cpl | head -1`
# prepare the parser
parser: lex.yy.c Makefile cpl.code cpl.tab.c
	cc -O cpl.tab.c -ll -o parser
	strip parser
cpl.tab.c: cpl.y parse.h 
	bison -t cpl.y
lex.yy.c:	cpl.lex
	flex cpl.lex
display:	cplmovie cplvisual
# the X program which produces animation sequences
cplmovie: cplmovie.c 
	gcc -O cplmovie.c -lX11 -lm -o cplmovie
# convert data file into suitable format for xv
cplvisual: cplvisual.c 
	gcc -O cplvisual.c -lm -o cplvisual
superclean: clean
	$(RM) $(O_FILES) parser cpl cplmovie cplvisual cpl.tar.Z
clean:
	$(RM) cpl.output core cpl.tab.c lex.yy.c
tar: 
	tar -cvf cpl.tar $(INFO) $(CC_FILES) $(H_FILES) $(PARSE_FILES) \
		$(MAN_FILES) $(EXAMPLES) $(OTHERS)
	$(RM) cpl.tar.Z
	compress cpl.tar
	chmod a+r cpl.tar.Z
# remake everything
again: dummy cpl
dummy:
	$(RM) *.o cpl lex.yy.c cpl.tab.c cplmovie cplvisual parser cpl.output cpl.code
.PHONY:	junk quads dummy all strip
