CC = gcc
CFLAGS = -Wall -O3 -funroll-loops -DNDEBUG -fomit-frame-pointer -std=gnu99 -msse2
#CFLAGS = -m32 -std=c99 -Wall -g -std=gnu99 -fstack-protector-all -D_FORTIFY_SOURCE=2
#CFLAGS = -g -pg -std=c99
CFLAGSSFMT =  -msse2 -DHAVE_SSE2 -O9 -finline-functions -fomit-frame-pointer \
-DNDEBUG -fno-strict-aliasing --param max-inline-insns-single=1800 -std=c99
LD = ld
LDFLAGS =  -lm -lc
INCFLAGS = 
DEFINES =
objects =  sfmt.o base.o gf4.o sequence.o qual.o mutate_color.o conversion.o rgenerate.o

all: simSolid

test: test-mutate test-sequence test-gf4 test-gen

simSolid: $(objects)
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) -o ../bin/$@ $(LDFLAGS) simSolid.c $(objects) 

test-mutate: sfmt.o base.o qual.o sequence.o gf4.o rgenerate.o
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) -o ../bin/$@ -DTEST mutate_color.c $^

test-sequence: base.o qual.o gf4.o
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) -o ../bin/$@ -DTEST sequence.c $^

test-gf4: base.o mats.o
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) -o ../bin/$@ -DTEST gf4.c $^

test-gen: sfmt.o
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) -o ../bin/$@ -DTEST rgenerate.c $^

.c.o:
	$(CC) $(DEFINES) $(CFLAGS) $(INCFLAGS) -o $@ -c $<

.f.o:
	g77 -O3 -o $@ -c $<

clean:
	rm -f ../bin/* *~ *.o  *.obj  *.exe *.lib  && cd SFMT-src-1.3 && make clean

sfmt.o: 
	gcc -o sfmt.o $(CFLAGSSFMT) -DMEXP=19937 -ISFMT-src-1.3/ -c SFMT-src-1.3/SFMT.c

archive: clean
	cd ../.. && tar zcf simSolid.tgz --exclude=.git --exclude=archive --exclude=test  simSolid
