#
# generate test files for phase3 testing
#

CC = gcc

all: all70 all80 all90

out: out70 out80 out90 out100

all70: add70.c sub70.c mul70.c div70.c addAssign70.c subAssign70.c \
       mulAssign70.c divAssign70.c

add70.c: generic70.c
	cpp -DOP=+ -P <generic70.c >add70.c

sub70.c: generic70.c
	cpp -DOP=- -P <generic70.c >sub70.c

mul70.c: generic70.c
	cpp -DOP=* -P <generic70.c >mul70.c

div70.c: generic70.c
	cpp -DOP=/ -P <generic70.c >div70.c

addAssign70.c: genAssign70.c
	cpp -DOP=+= -P <genAssign70.c >addAssign70.c

subAssign70.c: genAssign70.c
	cpp -DOP=-= -P <genAssign70.c >subAssign70.c

mulAssign70.c: genAssign70.c
	cpp -DOP=*= -P <genAssign70.c >mulAssign70.c

divAssign70.c: genAssign70.c
	cpp -DOP=/= -P <genAssign70.c >divAssign70.c

out70: add70.out sub70.out mul70.out div70.out addAssign70.out subAssign70.out \
       mulAssign70.out divAssign70.out advance70.out basic70.out other70.out

add70.out: add70.c
	$(CC) add70.c
	a.out >add70.out

sub70.out: sub70.c
	$(CC) sub70.c
	a.out >sub70.out

mul70.out: mul70.c
	$(CC) mul70.c
	a.out >mul70.out

div70.out: div70.c
	$(CC) div70.c
	a.out >div70.out

addAssign70.out: addAssign70.c
	$(CC) addAssign70.c
	a.out >addAssign70.out

subAssign70.out: subAssign70.c
	$(CC) subAssign70.c
	a.out >subAssign70.out

mulAssign70.out: mulAssign70.c
	$(CC) mulAssign70.c
	a.out >mulAssign70.out

divAssign70.out: divAssign70.c
	$(CC) divAssign70.c
	a.out >divAssign70.out

advance70.out: advance70.c
	$(CC) advance70.c
	a.out >advance70.out

basic70.out: basic70.c
	$(CC) basic70.c
	a.out >basic70.out

other70.out: other70.c
	$(CC) other70.c
	a.out >other70.out

all80: lt80.c gt80.c le80.c ge80.c eq80.c ne80.c

lt80.c: generic80.c
	cpp "-DOP=<" -P <generic80.c >lt80.c

gt80.c: generic80.c
	cpp "-DOP=>" -P <generic80.c >gt80.c

le80.c: generic80.c
	cpp "-DOP=<=" -P <generic80.c >le80.c

ge80.c: generic80.c
	cpp "-DOP=>=" -P <generic80.c >ge80.c

eq80.c: generic80.c
	cpp "-DOP===" -P <generic80.c >eq80.c

ne80.c: generic80.c
	cpp "-DOP=!=" -P <generic80.c >ne80.c

out80: lt80.out gt80.out le80.out ge80.out eq80.out ne80.out basic80.out \
       other80.out

lt80.out: lt80.c
	$(CC) lt80.c
	a.out >lt80.out

gt80.out: gt80.c
	$(CC) gt80.c
	a.out >gt80.out

le80.out: le80.c
	$(CC) le80.c
	a.out >le80.out

ge80.out: ge80.c
	$(CC) ge80.c
	a.out >ge80.out

eq80.out: eq80.c
	$(CC) eq80.c
	a.out >eq80.out

ne80.out: ne80.c
	$(CC) ne80.c
	a.out >ne80.out

basic80.out: basic80.c
	$(CC) basic80.c
	a.out >basic80.out

other80.out: other80.c
	$(CC) other80.c
	a.out >other80.out

all90: lshift90.c rshift90.c and90.c or90.c xor90.c \
       lshiftAssign90.c rshiftAssign90.c andAssign90.c orAssign90.c \
       xorAssign90.c

lshift90.c: generic90.c
	cpp "-DOP=<<" -P <generic90.c >lshift90.c

rshift90.c: generic90.c
	cpp "-DOP=>>" -P <generic90.c >rshift90.c

and90.c: generic90.c
	cpp "-DOP=&" -P <generic90.c >and90.c

or90.c: generic90.c
	cpp "-DOP=|" -P <generic90.c >or90.c

xor90.c: generic90.c
	cpp "-DOP=^" -P <generic90.c >xor90.c

lshiftAssign90.c: genAssign90.c
	cpp "-DOP=<<=" -P <genAssign90.c >lshiftAssign90.c

rshiftAssign90.c: genAssign90.c
	cpp "-DOP=>>=" -P <genAssign90.c >rshiftAssign90.c

andAssign90.c: genAssign90.c
	cpp "-DOP=&=" -P <genAssign90.c >andAssign90.c

orAssign90.c: genAssign90.c
	cpp "-DOP=|=" -P <genAssign90.c >orAssign90.c

xorAssign90.c: genAssign90.c
	cpp "-DOP=^=" -P <genAssign90.c >xorAssign90.c

out90: lshiftAssign90.out rshiftAssign90.out andAssign90.out orAssign90.out \
       xorAssign90.out lshift90.out rshift90.out and90.out or90.out xor90.out \
       advance90.out basic90.out other90.out

lshift90.out: lshift90.c
	$(CC) lshift90.c
	a.out >lshift90.out

rshift90.out: rshift90.c
	$(CC) rshift90.c
	a.out >rshift90.out

and90.out: and90.c
	$(CC) and90.c
	a.out >and90.out

or90.out: or90.c
	$(CC) or90.c
	a.out >or90.out

xor90.out: xor90.c
	$(CC) xor90.c
	a.out >xor90.out

lshiftAssign90.out: lshiftAssign90.c
	$(CC) lshiftAssign90.c
	a.out >lshiftAssign90.out

rshiftAssign90.out: rshiftAssign90.c
	$(CC) rshiftAssign90.c
	a.out >rshiftAssign90.out

andAssign90.out: andAssign90.c
	$(CC) andAssign90.c
	a.out >andAssign90.out

orAssign90.out: orAssign90.c
	$(CC) orAssign90.c
	a.out >orAssign90.out

xorAssign90.out: xorAssign90.c
	$(CC) xorAssign90.c
	a.out >xorAssign90.out

basic90.out: basic90.c
	$(CC) basic90.c
	a.out >basic90.out

other90.out: other90.c
	$(CC) other90.c
	a.out >other90.out

advance90.out: advance90.c
	$(CC) advance90.c
	a.out >advance90.out

out100: basic100.out advance100.out

basic100.out: basic100.c
	$(CC) basic100.c
	a.out >basic100.out

advance100.out: advance100.c
	$(CC) advance100.c
	a.out >advance100.out

clean:
	-rm -f add70.c sub70.c mul70.c div70.c
	-rm -f addAssign70.c subAssign70.c mulAssign70.c divAssign70.c
	-rm -f lt80.c gt80.c le80.c ge80.c eq80.c ne80.c
	-rm -f lshift90.c rshift90.c and90.c or90.c xor90.c
	-rm -f lshiftAssign90.c rshiftAssign90.c andAssign90.c orAssign90.c
	-rm -f xorAssign90.c
	-rm -f *.out

