EXECS=\
	red64 \
	float1 float2 float3 \
	addfour addfour2x4 addfour2x3 \
	divfour fdivfour \
	LAND \
	reduceLAND.s reduceLANDa.s \
	not.s le shift splicing \
	if where \
	while \
	torture.s sample vecdot

CC=/usr/bin/gcc
#CC=/opt/bin/gcc

OBJ=
CFLAGS=
AFLAGS=
#SCCFLAGS= --fe-bvt
SCCFLAGS=

all: $(EXECS) linpack dna

linpack:
	(cd Linpack; make)

dna:
	(cd DNA; make)

valid:
	(cd Valid; make)



## red64 ######################################################################
red64: red64.s
	$(CC) -Wall -o red64 red64.s

red64.s: red64.i
	$(CC) -S -o red64.s red64.i

red64.i: red64.c red64.h
	$(CC) -E -o red64.i red64.c

red64.c: red64.Si
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc red64.c -oh red64.h -O0 -irr red64.Si > red64.tree 2>&1

red64.Si: red64.Sc
	../Scc ${SCCFLAGS} -k -E red64.Sc



## float1 #####################################################################
float1: float1.s
	$(CC) -Wall -o float1 float1.s

float1.s: float1.c float1.h
	$(CC) -S -o float1.s float1.c

float1.c: float1.Sc
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc float1.c -oh float1.h -O2 -irr -mK6-2 float1.Sc > float1.tree 2>&1


## float2 #####################################################################
float2: float2.s
	$(CC) -Wall -o float2 float2.s

float2.s: float2.c float2.h
	$(CC) -S -o float2.s float2.c

float2.c: float2.Sc
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc float2.c -oh float2.h -O2 -irr -mK6-2 float2.Sc > float2.tree 2>&1


## float3 #####################################################################
float3: float3.s
	$(CC) -Wall -o float3 float3.s

float3.s: float3.c float3.h
	$(CC) -S -o float3.s float3.c

float3.c: float3.Sc
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc float3.c -oh float3.h -O2 -irr -mK6-2 float3.Sc > float3.tree 2>&1


## addfour ####################################################################
addfour: addfour.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o addfour addfour.Sc > addfour.tree

addfour2x4: addfour2x4.s
	$(CC) -Wall -o addfour2x4 addfour2x4.s

addfour2x4.s: addfour2x4.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -v -k -S -o addfour2x4.s -O2 -mIA32 -irr addfour2x4.Sc > addfour2x4.tree 2>addfour2x4.err

addfour2x3: addfour2x3.s
	$(CC) -Wall -o addfour2x3 addfour2x3.s

addfour2x3.s: addfour2x3.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -v -k -S -o addfour2x3.s -O2 -irr addfour2x3.Sc > addfour2x3.tree 2>addfour2x3.err

## divfour ####################################################################
divfour: divfour.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o divfour divfour.Sc

fdivfour: fdivfour.s
	$(CC) -Wall -o fdivfour fdivfour.s

fdivfour.s: fdivfour.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o fdivfour.s -O2 -S -mK6-2 fdivfour.Sc



## LAND #######################################################################
LAND: LAND.s
	$(CC) -Wall -o LAND LAND.s

LAND.s: LAND.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-peep -k -o LAND.s -O2 -irr -S LAND.Sc > LAND.tree



## reduceLAND #################################################################
reduceLAND: reduceLAND.s
	$(CC) -Wall -o reduceLAND reduceLAND.s

reduceLAND.s: reduceLAND.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o reduceLAND.s -S -O2 reduceLAND.Sc

reduceLANDa: reduceLANDa.s
	$(CC) -Wall -o reduceLANDa reduceLANDa.s

reduceLANDa.s: reduceLANDa.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o reduceLANDa.s -S -O2 reduceLANDa.Sc


## not ########################################################################
not: not.s
	$(CC) -Wall -o not not.s

not.s: not.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} --no-fe-cofold -k -o not.s -O2 -irr -S not.Sc > not.tree


## le #########################################################################
le: le.s
	$(CC) -Wall -o le le.s

le.s: le.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o le.s -O2 -irr -S le.Sc > le.tree

## shift ######################################################################
shift: shift.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o shift -O2 -mK6-2 shift.Sc

## splicing ###################################################################
splicing: splicing.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o splicing splicing.Sc


## if #########################################################################
if.s: if.c if.h
	$(CC) -S -o if.s if.c

if.c: if.Si
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc if.c -oh if.h -O0 -irr if.Si > if.tree 2>&1

if.Si: if.Sc
	../Scc ${SCCFLAGS} -k -E if.Sc


## where ######################################################################
where.s: where.c where.h
	$(CC) -S -o where.s where.c

where.c: where.Si
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc where.c -oh where.h -O0 -irr where.Si > where.tree 2>&1

where.Si: where.Sc
	../Scc ${SCCFLAGS} -k -E where.Sc


## while ######################################################################
while.s: while.c while.h
	$(CC) -S -o while.s while.c

while.c: while.Si
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc while.c -oh while.h -O0 -irr while.Si > while.tree 2>&1

while.Si: while.Sc
	../Scc ${SCCFLAGS} -k -E while.Sc


## torture ####################################################################
torture.s: torture.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -S -irr -o torture.s torture.Sc > torture.tree

## sample #####################################################################
sample: sample.Sc
	rm -f Scout.c Scout.h
	../Scc ${SCCFLAGS} -k -o sample sample.Sc

## vecdot #####################################################################
vecdot.s: vecdot.c vecdot.h
	$(CC) -S -o vecdot.s vecdot.c

vecdot.c: vecdot.Si
	../Scc ${SCCFLAGS} --no-fe-cofold --no-be-cofold --no-be-peep -Sc -k -oc vecdot.c -oh vecdot.h -O0 -irr vecdot.Si > vecdot.tree 2>&1

vecdot.Si: vecdot.Sc
	../Scc ${SCCFLAGS} -k -E vecdot.Sc



###############################################################################
clean:
	rm -f Scout.c Scout.h
	rm -f *.Si
	rm -f *.c
	rm -f *.h
	rm -f *.i
	rm -f *.s
	rm -f *.o
	rm -f *.tree
	rm -f *.err
	rm -f $(EXECS)
	rm -f core
	(cd Linpack; make clean)
	(cd DNA; make clean)
	(cd Valid; make clean)

distclean: clean
	(cd Linpack; make distclean)
	(cd DNA; make distclean)
	(cd Valid; make distclean)

