CC = cc
S = ..
CFLAGS = -g -I$S
Rpath = -Wl,-rpath,.
B = -fPIC -shared

Foo = foo1 foo2 foo3
Foo_a = foo2a foo3a
dakreorder_src = dakreorder.c $S/nidr.c $S/nidr-parser.c $S/nidr-scanner.c $S/avltree.c

testall: bad dakreorder libb1.dll libb2.dll
	rm -rf bad
	mkdir bad
	for i in $(Foo) $(Foo_a); do ./dakreorder $$i.in >bad/$$i.out; done
	for i in $(Foo); do ./dakreorder -s $$i.in >bad/$$i.sout; done
	cmp bad/foo1.sout good/foo1.out && rm bad/foo1.sout
	cd bad; for i in *; do cmp $$i ../good/$$i && rm $$i; done; cd ..
	rmdir bad
	touch testall

bad:
	mkdir bad

dakreorder.c: $S/dakreorder.c
	ln $S/dakreorder.c . || cp $S/dakreorder.c .
dakreorder: $(dakreorder_src) NIDR_keywds0.h
	$(CC) $(CFLAGS) -DNIDR_DYLIB_DEBUG -o dakreorder $(dakreorder_src) $(Rpath) -ldl

NIDR_keywds0.h: t.nspec
	echo '#define NSPEC_DATE "'`$S/Dt -8 t.nspec`'"' >NIDR_keywds0.h
	$S/nidrgen -tn- t.nspec >>NIDR_keywds0.h

libb1.dll: libb1.nspec
	$S/nidrgen -lfn- -h nidr.h libb1.nspec >bad/libb1.c
	$(CC) $(CFLAGS) $B -o libb1.dll bad/libb1.c

libb2.dll: libb2.nspec
	$S/nidrgen -lfn- -h nidr.h libb2.nspec >bad/libb2.c
	$(CC) $(CFLAGS) $B -o libb2.dll bad/libb2.c

clean:
	rm -rf bad *.dll dakreorder NIDR_keywds0.h testall
