# /usr/lindsay/cube/sim/makefile

#//		Copyright 1988 D.C. Lindsay at Carnegie Mellon University

# setenv MICC 1 makes CC use MICC (except for nm -p??)
#CC=MICC
#CC=g++
#CC = g++-2.3.3-930316 -V 2.3.3-930316 -O0 -g
CC = g++

#(mark)LDFLAGS=-L/udir/detlefs/lib -p
LIBFLAGS=-lm
#(mark)LIBFLAGS=-lExcept -lRef -lm
# define KSEARCH to get k, not k(k-1)
# the following gives trace info from the scheduler.
#CCFLAGS = -c -DDOMESG -DDOSCHED

#CCFLAGS = -c -g -DDOMESG
#CCFLAGS = -c -O -DDOMESG
#CCFLAGS = -c -g -DDOMESG -DDOSCHED
#CCFLAGS = -c -g -I.:/udir/detlefs/include:/udir/detlefs/c++/gc/Ref -DDOMESG -DREFGC -DDEBUG=1
#CCFLAGS = -c -O -I.:/udir/detlefs/include:/udir/detlefs/c++/gc/Ref -DDOMESG -DREFGC
#(mark)CCFLAGS = -c -O -I.:/udir/detlefs/include:/udir/detlefs/c++/gc/Ref -DDOMESG -DREFGC -DULTRASAFE
CCFLAGS = -c -ggdb -O2 -DINLINES -DNDEBUG -DDOMESG

# the following leaves "gmon.out" at run time: run "gprof".
#CCFLAGS = -c -pg -DDOMESG
#LDFLAGS = -pg -t
#LDFLAGS = -r1
#LIBFLAGS = -lc_p
# the following leaves a .d for each .cxx file. Use "tcov".
#CCFLAGS = -c -a -DDOMESG

INCLUDES = machine.h sched.h node.h statistics.h measure.h xrand.h histogram.h chart.h choose.h
#SOURCES = sim.cxx sched.cxx statistics.cxx measure.cxx xrand.cxx histogram.cxx chart.cxx choose.cxx message.cxx xgen.cxx event_ctor.cxx
SOURCES = sim.cc sched.cc statistics.cc measure.cc xrand.cc histogram.cc chart.cc choose.cc message.cc xgen.cc event_ctor.cc

# the next doesn't include choose.o
OBJECTS = sim.o sched.o statistics.o measure.o xrand.o histogram.o chart.o message.o xgen.o event_ctor.o
OBJECTSK = simk.o sched.o statistics.o measure.o xrand.o histogram.o chart.o message.o xgen.o
OBJECTS2 = sim2.o sched.o statistics.o measure.o xrand.o histogram.o chart.o message.o xgen.o
OBJECTSHARD = sim.o sched.o statistics.o measure.o xrand.o histogram.o chart.o messagehard.o xgen.o
OBJECTSSOFT = sim.o sched.o statistics.o measure.o xrand.o histogram.o chart.o messagesoft.o xgen.o

#.SUFFIXES:	.cxx
#.cxx.o:
#	$(CC) $(CCFLAGS) $*.cxx
.SUFFIXES:	.cc
.cc.o:
	$(CC) $(CCFLAGS) $*.cc

sim:	$(OBJECTS) choose.o
	$(CC) -o sim $(LDFLAGS) $(OBJECTS) choose.o $(LIBFLAGS)

choose.o: choose.cc $(INCLUDES)

simk:	$(OBJECTSK) choose.o
	$(CC) -o simk $(LDFLAGS) $(OBJECTSK) choose.o -lm $(LIBFLAGS)

sim2:	$(OBJECTS2) choose.o
	$(CC) -o sim2 $(LDFLAGS) $(OBJECTS2) choose.o -lm $(LIBFLAGS)
sim2.o: sim2.cc $(INCLUDES)

simhard:	$(OBJECTSHARD) choose.o
	$(CC) -o simhard $(LDFLAGS) $(OBJECTSHARD) choose.o -lm $(LIBFLAGS)
simsoft:	$(OBJECTSSOFT) choose.o
	$(CC) -o simsoft $(LDFLAGS) $(OBJECTSSOFT) choose.o -lm $(LIBFLAGS)


simlr:  $(OBJECTS) chooselr.o
	$(CC) -o simlr $(LDFLAGS) $(OBJECTS) chooselr.o -lm $(LIBFLAGS)
chooselr.o: chooselr.cc $(INCLUDES)

simhigh:  $(OBJECTS) choosehigh.o
	$(CC) -o simhigh $(LDFLAGS) $(OBJECTS) choosehigh.o -lm $(LIBFLAGS)
choosehigh.o: choosehigh.cc $(INCLUDES)

simdiff:  $(OBJECTS) choosediff.o
	$(CC) -o simdiff $(LDFLAGS) $(OBJECTS) choosediff.o -lm $(LIBFLAGS)
choosediff.o: choosediff.cc $(INCLUDES)

simage:  $(OBJECTS) chooseage.o
	$(CC) -o simage $(LDFLAGS) $(OBJECTS) chooseage.o -lm $(LIBFLAGS)
chooseage.o: chooseage.cc $(INCLUDES)

simset:  $(OBJECTS) chooseset.o
	$(CC) -o simset $(LDFLAGS) $(OBJECTS) chooseset.o -lm $(LIBFLAGS)
chooseset.o: chooseset.cc $(INCLUDES)

xrand.o: xrand.cc xrand.h

#	cc -c -O xrand.c

xgen.o: xgen.cc node.h measure.h message.h

event_ctor.o: event_ctor.cc sched.h
	$(CC) $(CCFLAGS) -g $*.cc


message.o: message.cc message.h
messagehard.o: messagehard.cc $(INCLUDES)
messagesoft.o: messagesoft.cc $(INCLUDES)
sim.o:	sim.cc \
	node.h sched.h statistics.h measure.h choose.h \
	chart.h xrand.h message.h
simk.o: sim.cc $(INCLUDES)
	$(CC) $(CCFLAGS) -DKSEARCH sim.cc
	mv sim.o simk.o
#	$(CC) -o simk.o $(CCFLAGS) -DKSEARCH sim.cc
sched.o: sched.cc sched.h
measure.o: measure.cc node.h statistics.h histogram.h measure.h
statistics.o: statistics.cc statistics.h
histogram.o: histogram.cc $(INCLUDES)

bak:
	cp README READMEbak makefile script*  *.cc *.h xrand.o probe* run* backup
print:
	enscript README READMEbak makefile $(INCLUDES) $(SOURCES) runstd.right
test: sim
	sim < script.15 > out
	diff out script15.right
	sim < script.05 > out
	diff out script05.right
	sim < script.045 > out
	diff out script045.right
	sim < script.art > out
	diff out scriptart.right
	sim < script.artx > out
	diff out scriptartx.right
	sim < script.gen > out
	diff out scriptgen.right
	sim < script.05pull > out
	diff out script05pull.right
std: sim
	runscript script.std > out
	diff out runstd.right
diff:
	diff . backup
clean:
	rm -f *.o *.CKP *.BAK sim out core a.out
kleen:
	rm -f *.CKP *.BAK out core a.out
q:
	lpq -Pberyl
j: j.o 
	$(CC) -o j j.o -lm
