all: letterbank
	./letterbank cats dogs
#	./letterbank a
#	./letterbank aa
#	./letterbank aah
#	./letterbank aargh
#	./letterbank lecturers
#	./letterbank pitstop
#	./letterbank pitsaw
#	./letterbank zyzzyvas
#	./letterbank zzzzzz

tables.h: gentables gentables2 wordlist.txt letterbanks.txt
	./gentables wordlist.txt letterbanks.txt > tables.h
	./gentables2 wordlist.txt letterbanks.txt > tables2.h
	diff tables.h tables2.h

gentables: gentables.c
	cc -o gentables gentables.c
 
gentables2: gentables2.c
	cc -o gentables2 gentables2.c
 
# sorting must be by byte value, no case-equivalence or other locale hacks
letterbanks.txt: wordlist.txt canonize gather
	LC_ALL="C" sort < wordlist.txt > sorted.txt
	./canonize < sorted.txt > canonized.txt
	LC_ALL="C" sort < canonized.txt > keyed.txt
	./gather < keyed.txt | sort > letterbanks.txt

canonize: canonize.c
	cc -o canonize canonize.c

gather: gather.c
	cc -o gather gather.c

letterbank: letterbank.c tables.h
	cc -o letterbank letterbank.c

clean:
	rm sorted.txt canonized.txt keyed.txt letterbanks.txt gentables gentables2 letterbank canonize gather tables.h *~

release: all
	tar -cvf letterbank.tar README.txt Makefile gentables.c gentables2.c canonize.c gather.c letterbank.c regression.sh
 
web:
	ctohtml gentables.c > gentables.c.html
	ctohtml gentables2.c > gentables2.c.html
	ctohtml canonize.c > canonize.c.html
	ctohtml gather.c > gather.c.html
	ctohtml letterbank.c > letterbank.c.html
