# MUSBUS Makefile
# $Header: Makefile,v 3.18 87/09/17 06:35:58 kenj Exp $
CC=cc
CFLAGS = -O -DSysV
#CFLAGS = -g -ga -DSysV
PROGS = arithoh register short int long float double hanoi \
	randmem seqmem fstime \
	syscall context1 pipe spawn execl makework keyb \
	iamalive limit clock precision ttychk mkperm
MOSTPROGS = arithoh register short int long float double hanoi \
	randmem seqmem fstime \
	syscall context1 pipe spawn execl limit precision \
	mkperm
DATAFILES = BSDtime.awk Groan Intro.nr SysVtime.awk \
	check.sed cleanup dc.dat fs.awk mem.awk \
	mkscript run time.awk README
SOURCES = arith.c mem.c fstime.c syscall.c context1.c pipe.c spawn.c \
	big.c execl.c makework.c util.c getwork.c keyb.c iamalive.c \
	limit.c clock.c precision.c ttychk.c mkperm.c makework.h \
	cctest.c hanoi.c \
	mkdistrib mkinstall musbus.1
OBJS = $(SOURCES:.c=.o)
TOOLS = Adjust Config comptbl.1 comptbl.2 comptbl.3 comptbl.4 comptbl.5 \
	mk1 mk2 mkcomp mktbl tbl.1 tbl.2 tbl.3 tbl.4 tbl.5 
WORKS = Makefile,1 cat.dat dummy.c edit.dat edscr1.dat edscr2.dat \
	grep.dat mkprofile mkscript.out script.master
MANIFESTS = Workload.files Results.files Tools.files
XSCRIPTS = Tools/Adjust Tools/Config Tools/mk1 Tools/mk2 Tools/mkcomp \
	Tools/mktbl \
	Workload/mkprofile Workload/mkscript.out \
	Groan cleanup mkdistrib mkinstall mkscript run
# Create all the binaries
programs:	$(SOURCES) $(PROGS)
source:	$(OBJS) $(DATAFILES)
install:
	@chmod 755 mkinstall
	./mkinstall
	@chmod 755 $(XSCRIPTS)
unrcs:	$(SOURCES) $(DATAFILES) $(TOOLS) $(WORKS) $(MANIFESTS)
# Workload scripts
script:	Tmp Tmp/script.1 Tmp/script.out
# Individual programs
arithoh:	arith.c
	$(CC) -o arithoh ${CFLAGS} -Darithoh arith.c
register:	arith.c
	$(CC) -o register ${CFLAGS} -Ddatum=register arith.c
short:	arith.c
	$(CC) -o short ${CFLAGS} -Ddatum=short arith.c
int:	arith.c
	$(CC) -o int ${CFLAGS} -Ddatum=int arith.c
long:	arith.c
	$(CC) -o long ${CFLAGS} -Ddatum=long arith.c
float:	arith.c
	$(CC) -o float ${CFLAGS} -Ddatum=float arith.c
double:	arith.c
	$(CC) -o double ${CFLAGS} -Ddatum=double arith.c
hanoi:	hanoi.c
	$(CC) -o hanoi ${CFLAGS} hanoi.c
randmem:	mem.c
	$(CC) -o randmem ${CFLAGS} -Dawk -Drandom mem.c
seqmem:	mem.c
	$(CC) -o seqmem ${CFLAGS} -Dawk mem.c
fstime:	fstime.c
	$(CC) -o fstime ${CFLAGS} -Dawk=1 fstime.c
syscall:	syscall.c
	$(CC) -o syscall ${CFLAGS} syscall.c
context1:	context1.c
	$(CC) -o context1 ${CFLAGS} context1.c
pipe:	pipe.c
	$(CC) -o pipe ${CFLAGS} pipe.c
spawn:	spawn.c
	$(CC) -o spawn ${CFLAGS} spawn.c
execl:	execl.c big.c
	$(CC) -o execl ${CFLAGS} execl.c
makework:	makework.o util.o getwork.o
	$(CC) -o makework $(CFLAGS) makework.o util.o getwork.o
makework.o:	makework.c makework.h
util.o:	util.c makework.h
getwork.o:	getwork.c makework.h
keyb:	keyb.c
	$(CC) -o keyb ${CFLAGS} keyb.c
iamalive:	iamalive.c
	$(CC) -o iamalive ${CFLAGS} iamalive.c
limit:	limit.c
	$(CC) -o limit ${CFLAGS} limit.c
clock:	clock.c
	$(CC) -o clock ${CFLAGS} clock.c
precision:	precision.c
	$(CC) -o precision ${CFLAGS} precision.c
ttychk:	ttychk.c
	$(CC) -o ttychk ${CFLAGS} ttychk.c
mkperm:	mkperm.c
	$(CC) -o mkperm ${CFLAGS} mkperm.c
Tmp/script.1: 	Workload/script.master mkperm mkscript
	./mkscript 4 Workload/script.master
	rm -f Tmp/script.[1-4]
	mv script.[1-4] Tmp
Tmp/script.out: 	Workload/script.master
	cd Workload ; make script.out
	rm -f Tmp/script.out
	mv Workload/script.out Tmp
# Clean out the unnecessary stuff before the multi-user test
initwork:	clean
	/bin/rm -f *.o core a.out ${MOSTPROGS}
# Housekeeping
print:
	pr run *.c cleanup *.awk *.sed workload script.master edscript.? | lpr
modes:
	chmod 444 *.c *.awk
	cd Work ; chmod 444 *.c *.dat script.* workload
	chmod 444 Intro.nr Makefile check.sed
	chmod 555 Config Groan cleanup run 
clean:	Tmp
	rm -f makework.o util.o getwork.o
	cd Tmp ; /bin/rm -f a.out core *.o *.tmp ed.hup script.?.time
	cd Tmp ; /bin/rm -f masterlog.* userlog.* loggederrs
purge:	clean
	@/bin/rm -f *.o core a.out ${PROGS}
	@cd Tmp ; /bin/rm -rf *
Tmp:
	@mkdir Tmp
.DEFAULT:
	co $@
