CPPFLAGS=-g
all: monoguesser multiguesser aestest
clean:
	rm -f *.o *~ aestest aesinttest monoguesser *.zip *.tgz *.tar.gz
tiny_aes.o: tiny_aes.c tiny_aes.h
AES.o: AES.h tiny_aes.h
aestest.o: AES.h

generator.o: generator.cpp generator.h
monoguesser.o: monoguesser.cpp guesser.h generator.h

MANIFEST=Makefile AES.h generator.h guesser.h AES.cpp generator.cpp guesser.cpp\
	tiny_aes.c tiny_aes.h aestest.cpp monoguesser.cpp \
	in1.aes gettysburg.aes secret.aes
start.tgz: $(MANIFEST)
	./mkex.sh
	rm -f threadproj start.tar start.tar.gz start.tgz
	ln -s . threadproj
	tar fc start.tar $(addprefix threadproj/,$(MANIFEST))
	tar fr start.tar --xform='s/_frame//' threadproj/multiguesser_frame.cpp
	gzip start.tar
	mv start.tar.gz start.tgz
	rm -f threadproj

start.zip: $(MANIFEST)
	./mkex.sh
	rm -f start.zip
	zip start.zip $(MANIFEST)
	cp multiguesser_frame.cpp /tmp/multiguesser.cpp
	zip -j start.zip /tmp/multiguesser.cpp

# I kind of wish "goofy" were anywere close to adequate for this gmake hack.
.SECONDEXPANSION:
aestest aesinttest: $$@.o AES.o tiny_aes.o;
	g++ $(CPPFLAGS) -o $@ $^
monoguesser: $$@.o guesser.o generator.o AES.o tiny_aes.o;
	g++ $(CPPFLAGS) -o $@ $^
multiguesser: $$@.o guesser.o generator.o AES.o tiny_aes.o;
	g++ $(CPPFLAGS) -o $@ $^ -lpthread
