##### compiling with g++ gives a little more speed
#COMPILER=gcc
COMPILER=g++

###there are two functions which apparently don't want to be inlined
#FLAGS=-O3 -march=athlon-xp -fexpensive-optimizations -funroll-loops -finline-limit=6000000 --param max-unrolled-insns=500
FLAGS=-O3 -march=athlon-xp -fexpensive-optimizations -funroll-loops --param max-unrolled-insns=500

###icc crashes for unknown reasons
#COMPILER=/opt/intel_cc_80/bin/icc
#FLAGS=-O3 -march=pentiumiii

FLAGS += -g
#FLAGS += -fno-alias
#FLAGS += -vec_report3
FLAGS += -Wall -Winline
FLAGS += -fomit-frame-pointer 
#FLAGS += -pg

H_FILES = FFdecsa.h \
          parallel_generic.h \
          parallel_032_4char.h \
          parallel_032_int.h \
          parallel_064_2int.h \
          parallel_064_8charA.h \
          parallel_064_8char.h \
          parallel_064_long.h \
          parallel_064_mmx.h \
          parallel_128_16charA.h \
          parallel_128_16char.h \
          parallel_128_2long.h \
          parallel_128_2mmx.h \
          parallel_128_4int.h \
          parallel_128_sse.h

all: FFdecsa_test

FFdecsa_test:	FFdecsa_test.o FFdecsa.o
	$(COMPILER) $(FLAGS) -o FFdecsa_test FFdecsa_test.o FFdecsa.o

FFdecsa_test.o: FFdecsa_test.c  FFdecsa.h FFdecsa_test_testcases.h
	$(COMPILER) $(FLAGS) -c FFdecsa_test.c

FFdecsa.o: tmp_autogenerated_stuff_FFdecsa.c tmp_autogenerated_stuff_stream.c  $(H_FILES)
	$(COMPILER) $(FLAGS)  -c tmp_autogenerated_stuff_FFdecsa.c -o FFdecsa.o


# the grep discards all the debugging stuff before compilation
tmp_autogenerated_stuff_FFdecsa.c: FFdecsa.c
	grep -v DBG FFdecsa.c >tmp_autogenerated_stuff_FFdecsa.c

tmp_autogenerated_stuff_stream.c: stream.c
	grep -v DBG stream.c >tmp_autogenerated_stuff_stream.c


clean:
	rm -f FFdecsa_test *.o tmp_autogenerated_stuff_*.c || true

release: clean
	tar -C .. -cvf ../FFdecsa-1.0.0.tar FFdecsa-1.0.0
	rm -f ../FFdecsa-1.0.0.tar.bz2 || true
	bzip2 -9 ../FFdecsa-1.0.0.tar

test:
	sync;clear;usleep 200000;nice --19 ./FFdecsa_test;usleep 200000;nice --19 ./FFdecsa_test;usleep 200000;nice --19 ./FFdecsa_test

test1:
	sync;clear;usleep 200000;nice --19 ./FFdecsa_test
