CC       = g++
SNPSRC   = ../snpsrc
EMMSRC   = ../emmsrc
ICPP     = $(HOME)/lib/libcpp/gpp
LCPP     = $(HOME)/lib/libcpp/gpp
ISNP     = $(HOME)/lib/libsnp/gpp
LSNP     = $(HOME)/lib/libsnp/gpp
ISMM     = $(HOME)/lib/libsmm/gpp
LSMM     = $(HOME)/lib/libsmm/gpp
CFLAGS   = -O -Wall -c -I$(SNPSRC) -I$(EMMSRC) -I$(ISMM) -I$(ISNP) -I$(ICPP)
LFLAGS   = -static -L$(LSMM) -lsmm -L$(LSNP) -lsnp -L$(LCPP) -lcpp -lm 

HEADERS  = $(ISNP)/libsnp.h $(ISMM)/libsmm.h \
	$(EMMSRC)/emm_base.h $(EMMSRC)/emm.h $(EMMSRC)/emmusr.h \
	$(SNPSRC)/snp_base.h $(SNPSRC)/snp.h $(SNPSRC)/snpusr.h \
	$(ICPP)/usual.h $(ICPP)/liberr.h $(ICPP)/tools.h $(ICPP)/libcpp.h
	
OBJECTS = emm.o emmcode1.o emmcode2.o emmusr.o\
	  snpcode1.o snpcode2.o snpcode3.o snpusr.o

emm :  $(OBJECTS) $(HEADERS)
	$(CC) -o emm $(OBJECTS) $(LFLAGS)

emm.o : $(EMMSRC)/emm.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(EMMSRC)/emm.cpp

emmcode1.o : $(EMMSRC)/emmcode1.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(EMMSRC)/emmcode1.cpp

emmcode2.o : $(EMMSRC)/emmcode2.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(EMMSRC)/emmcode2.cpp

emmusr.o : $(EMMSRC)/emmusr.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(EMMSRC)/emmusr.cpp

snpcode1.o : $(SNPSRC)/snpcode1.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SNPSRC)/snpcode1.cpp

snpcode2.o : $(SNPSRC)/snpcode2.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SNPSRC)/snpcode2.cpp

snpcode3.o : $(SNPSRC)/snpcode3.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SNPSRC)/snpcode3.cpp

snpusr.o : $(SNPSRC)/snpusr.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SNPSRC)/snpusr.cpp

clean	:
	rm -f *.o core core.*

veryclean	:
	rm -f *.o core core.*
	rm -f emm

