CC = gcc
#ADDITIONAL = -g -DMUSA_DEBUG -DMUSA
ADDITIONAL = -DMUSA
OBJECTS = main.o fasta.o dataset.o util.o profile.o list.o ilist.o\
	configuration.o matrix.o bicluster.o slist.o biclustering.o\
	seed.o bitmask.o blist.o assembly.o clist.o graph.o debug.o\
	range.o smotif.o smlist.o rlist.o cmotif.o motif_report.o\
	mrlist.o occseq.o olist.o buflist.o musa_matcher.o musa_motif_report.o
CFLAGS = -Wall $(ADDITIONAL)
LIBS =  -lm 
ALIBS = $(LIBS) -lmatcher -lstat

LMOBJECTS = matcher.o sequence_extra.o 
LMOBJECTSX = debug.o util.o list.o ilist.o olist.o mrlist.o smlist.o\
	rlist.o occseq.o smotif.o cmotif.o range.o motif_report.o\
	dataset.o
LSOBJECTS = stat.o 
LSOBJECTSX =  debug.o util.o list.o ilist.o olist.o mrlist.o smlist.o rlist.o\
	occseq.o smotif.o cmotif.o range.o motif_report.o sequence_extra.o\
	bitmask.o
DLIBS = libmatcher.so libstat.so
EXE = musa

musa: musa-static

musa-dynamic: $(OBJECTS) $(DLIBS)
	$(CC) $(CFLAGS) -o $(EXE) $(OBJECTS) -L. $(ALIBS)

musa-static: $(OBJECTS) $(LMOBJECTS) $(LSOBJECTS)
	$(CC) $(CFLAGS) -o $(EXE) $(OBJECTS) $(LMOBJECTS) $(LSOBJECTS) -L. $(LIBS)

libmatcher.so: $(LMOBJECTS) $(LMOBJECTSX)
	$(CC) $(CFLAGS) -shared -o $@ $(LMOBJECTS) $(LMOBJECTSX)

libstat.so: $(LSOBJECTS) $(LSOBJECTSX)
	$(CC) $(CFLAGS) -shared -o $@ $(LSOBJECTS) $(LSOBJECTSX)

clean:
	rm -f $(OBJECTS) $(LMOBJECTS) $(LSOBJECTS) musa eval finalMusa.o lib*.so lib*.a

indent:
	indent -kr *.c *.h
	rm *~

eval:	finalMusa.c
	$(CC) $(CFLAGS) -c finalMusa.c
	$(CC) $(CFLAGS) -o $@ finalMusa.o lib/libgsl.a lib/libgslcblas.a -lm

families: familias.c
	$(CC) $(CFLAGS) -o $@ familias.c

test: musa
#	LD_LIBRARY_PATH=. ./musa test.fasta
	LD_LIBRARY_PATH=. ./musa -b another.fasta
#	LD_LIBRARY_PATH=. ./musa bio54.fasta
#	LD_LIBRARY_PATH=. ./musa -e 1 yanother.fasta
#	LD_LIBRARY_PATH=. ./musa minibio.fasta

debug: musa
#	LD_LIBRARY_PATH=. valgrind -v --leak-check=full ./musa test.fasta
	LD_LIBRARY_PATH=. valgrind -v --leak-check=full ./musa another.fasta

LVER = 0.5.6

pack-libmatcher: 
	mkdir -p libmatcher-$(LVER)
	cp matcher.c sequence_extra.c debug.c util.c list.c ilist.c\
	 olist.c mrlist.c smlist.c rlist.c occseq.c smotif.c cmotif.c\
	 range.c motif_report.c dataset.c matcher.h types.h util.h debug.h\
	 list.h ilist.h olist.h occseq.h motif_report.h mrlist.h\
	 smlist.h smotif.h rlist.h range.h cmotif.h sequences.h\
	 sequence_extra.h\
	 makefile.libmatcher libmatcher-$(LVER)
	tar cvf libmatcher-$(LVER)-src.tar libmatcher-$(LVER)/ 
	gzip -f --best libmatcher-$(LVER)-src.tar
	rm -rf libmatcher-$(LVER)/

pack-libstat:
	mkdir -p libstat-$(LVER)
	cp stat.c sequence_extra.c debug.c util.c list.c ilist.c\
	olist.c mrlist.c smlist.c rlist.c occseq.c smotif.c cmotif.c\
	range.c motif_report.c bitmask.c dataset.c stat.h types.h util.h debug.h\
	list.h ilist.h olist.h occseq.h motif_report.h mrlist.h\
	smlist.h smotif.h rlist.h range.h cmotif.h bitmask.h sequences.h\
	sequence_extra.h\
	makefile.libstat libstat-$(LVER)
	tar cvf libstat-$(LVER)-src.tar libstat-$(LVER)/
	gzip -f --best libstat-$(LVER)-src.tar
	rm -rf libstat-$(LVER)/

pack-libs: pack-libmatcher pack-libstat

pack-musa:
	mkdir -p musa-$(LVER)
	cp *.c *.h makefile musa-$(LVER)
	tar cvf musa-$(LVER)-src.tar musa-$(LVER)
	gzip -f --best musa-$(LVER)-src.tar
	rm -rf musa-$(LVER)


