PKG = revSketch

#CCOPT = -DBIGENDIAN -O3 -Wall -funroll-loops -finline-limit=6000 -DNEW_MANGLE -DNDEBUG
CCOPT = -O2 -Wall -funroll-loops -finline-limit=6000 -DNEW_MANGLE -DNDEBUG -DBINARY_INPUT -DABSOLUTE_CHANGE
CFLAGS48 = -O2 -Wall -funroll-loops -finline-limit=6000  -DNDEBUG -DBINARY_INPUT 
#CCOPT = -g -Wall -DNEW_MANGLE -DNDEBUG
PROF_OPT = #-pg
INCLS = -I.

CPLUS = g++ $(PROF_OPT)
CFLAGS = $(CCOPT) $(INCLS)
LDFLAGS = $(PROF_OPT)

LIBS = -lm

COMPRESS = gzip

SKETCH_TEST_EXEC = ../sketch_test
GROUNDT_EXEC = ../groundt
OUT_PARSER_EXEC = ../out_parser
GEN_BINARY_EXEC = ../gen_binary
VERIFY_OKSKETCH_EXEC = ../verifyOKSketch
SKETCH_TEST_OFILES = revKSketchTest.o revKSketch.o revHash.o  kSketch.o \
	hash.o mangler.o galoisField.o util.o revKSketch48.o revHash48.o

VERIFYBIN_EXEC = ../verifyBin
VERIFY_OKSKETCH_OFILS = verifyOKSketch.o kSketch.o hash.o util.o

VERIFYBIN_OFILES = verifyBin.o
GROUNDT_OFILES = groundt.o
OUT_PARSER_OFILES = outParser.o
GEN_BINARY_OFILES = genBinary.o

CLEANFILES = $(EXEC) $(SKETCH_TEST_OFILES) $(GROUNDT_OFILES) \
	$(OUT_PARSER_OFILES) $(GEN_BINARY_OFILES) *.core $(SKETCH_TEST_EXEC) \
	$(GROUNDT_EXEC) $(OUT_PARSER_EXEC) $(GEN_BINARY_EXEC) *~

all: sketch_test groundt out_parser gen_binary verifyOKSketch verifyBin

gen_binary: $(GEN_BINARY_OFILES)
	$(CPLUS) -o $(GEN_BINARY_EXEC) $(GEN_BINARY_OFILES) $(LIBS) $(LDFLAGS)

sketch_test: $(SKETCH_TEST_OFILES)
	$(CPLUS) -o $(SKETCH_TEST_EXEC) $(SKETCH_TEST_OFILES) $(LIBS) $(LDFLAGS)

verifyBin: $(VERIFYBIN_OFILES)
	$(CPLUS) -o $(VERIFYBIN_EXEC) $(VERIFYBIN_OFILES) $(LIBS) $(LDFLAGS)

groundt: $(GROUNDT_OFILES)
	$(CPLUS) -o $(GROUNDT_EXEC) $(GROUNDT_OFILES) $(LIBS) $(LDFLAGS)

out_parser: $(OUT_PARSER_OFILES)
	$(CPLUS) -o $(OUT_PARSER_EXEC) $(OUT_PARSER_OFILES) $(LIBS) $(LDFLAGS)

verifyOKSketch: $(VERIFY_OKSKETCH_OFILS)
	$(CPLUS) -o $(VERIFY_OKSKETCH_EXEC) $(VERIFY_OKSKETCH_OFILS) $(LIBS) $(LDFLAGS)

linux:
	@$(MAKE) $(MFLAGS) CCOPT="`echo $(CCOPT) | sed -e 's/-DBIGENDIAN//g'`"

solaris:
	@$(MAKE) $(MFLAGS) CCOPT="`echo $(CCOPT) | sed -e 's/$$/ -DBIGENDIAN/g'`"

genBinary.o: genBinary.cpp
	$(CPLUS) $(CFLAGS) -o genBinary.o -c genBinary.cpp

revKSketchTest.o: revKSketchTest.cpp
	$(CPLUS) $(CFLAGS) -o revKSketchTest.o -c revKSketchTest.cpp

verifyOKSketch.o: verifyOKSketch.cpp
	$(CPLUS) $(CFLAGS) -o verifyOKSketch.o -c verifyOKSketch.cpp


revKSketch.o: revKSketch.h revKSketch.cpp
	$(CPLUS) $(CFLAGS) -o revKSketch.o -c revKSketch.cpp

revHash.o: revHash.h revHash.cpp
	$(CPLUS) $(CFLAGS) -o revHash.o -c revHash.cpp

revKSketch48.o: revKSketch48.h revKSketch48.cpp
	$(CPLUS) $(CFLAGS48) -o revKSketch48.o -c revKSketch48.cpp

revHash48.o: revHash48.h revHash48.cpp
	$(CPLUS) $(CFLAGS48) -o revHash48.o -c revHash48.cpp

kSketch.o: kSketch.h kSketch.cpp
	$(CPLUS) $(CFLAGS) -o kSketch.o -c kSketch.cpp

mangler.o: mangler.h mangler.cpp
	$(CPLUS) $(CFLAGS) -o mangler.o -c mangler.cpp

galoisField.o: galoisField.h galoisField.cpp
	$(CPLUS) $(CFLAGS) -o galoisField.o -c galoisField.cpp

util.o: util.h util.cpp
	$(CPLUS) $(CFLAGS) -o util.o -c util.cpp

hash.o: hash.h hash.cpp
	$(CPLUS) $(CFLAGS) -o hash.o -c hash.cpp

groundt.o: groundt.cpp
	$(CPLUS) $(CFLAGS) -o groundt.o -c groundt.cpp

verifyBin.o: verifyBin.cpp
	$(CPLUS) $(CFLAGS) -o verifyBin.o -c verifyBin.cpp

outParser.o: outParser.cpp
	$(CPLUS) $(CFLAGS) -o outParser.o -c outParser.cpp

tar: clean
	rm -f $(PKG).tar $(PKG).tar.gz /tmp/$(PKG).tar
	(cd ..; tar cf /tmp/$(PKG).tar `ls -d src/*`)
	mv /tmp/$(PKG).tar .
	gzip $(PKG).tar

clean:
	-rm -f $(CLEANFILES) *.o
