CXX      = g++
SDIR     = ../snpsrc
ISCL     = ../lib/libscl/gpp
LSCL     = ../lib/libscl/gpp
ISNP     = ../lib/libsnp/gpp
LSNP     = ../lib/libsnp/gpp
CXXFLAGS = -O2 -Wall -c -I$(SDIR) -I$(ISNP) -I$(ISCL)
LDFLAGS  = -L$(LSNP) -lsnp -L$(LSCL) -lscl -lm 

HEADERS  = $(LSNP)/libsnp.h \
	$(SDIR)/snp_base.h $(SDIR)/snp.h $(SDIR)/snpusr.h \
	$(LSCL)/libscl.h

OBJECTS = snpcode1.o snpcode2.o snpcode3.o snpusr.o

LIBRARIES = libscl.a libsnp.a

PROGRAMS = snp

all :  $(LIBRARIES) $(PROGRAMS)

libscl.a :
	make -C $(LSCL)

libsnp.a :
	make -C $(LSNP)
	
snp :  snp.o $(HEADERS) $(OBJECTS)
	$(CXX) -o snp snp.o $(OBJECTS) $(LDFLAGS)

snp.o : $(SDIR)/snp.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/snp.cpp

snpcode1.o : $(SDIR)/snpcode1.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/snpcode1.cpp

snpcode2.o : $(SDIR)/snpcode2.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/snpcode2.cpp

snpcode3.o : $(SDIR)/snpcode3.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/snpcode3.cpp

snpusr.o : $(SDIR)/snpusr.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/snpusr.cpp

clean	:
	make -C $(LSCL) clean
	make -C $(LSNP) clean
	rm -f *.o core core.*

veryclean	:
	make -C $(LSCL) veryclean
	make -C $(LSNP) veryclean
	rm -f *.o core core.*
	rm -f $(PROGRAMS)

dirclean	:
	rm -f *.o core core.*
	rm -f $(PROGRAMS)

