CC       = /usr/lib64/openmpi/1.4-gcc/bin/mpic++
SDIR     = ../snpsrc
ISCL     = ../lib/libscl/gpp
LSCL     = ../lib/libscl/gpp
ISNP     = ../lib/libsnp/gpp
LSNP     = ../lib/libsnp/gpp
IMPI     = /usr/lib64/openmpi/1.4-gcc/include
LMPI     = /usr/lib64/openmpi/1.4-gcc/lib
CFLAGS   = -O2 -Wall -c -I./ -I$(SDIR) -I$(ISNP) -I$(ISCL) -I$(ISCL)
LFLAGS   = -L$(LSNP) -lsnp -L$(LSCL) -lscl -L$(LSCL) -lm 

HEADERS  = ./pathname.h $(ISNP)/libsnp.h \
	$(SDIR)/snp_base.h $(SDIR)/snp.h $(SDIR)/snpusr.h \
	$(ISCL)/libscl.h

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

LIBRARIES = libscl.a libsnp.a

PROGRAMS = snp_mpi

all :  $(LIBRARIES) $(PROGRAMS)

libscl.a :
	make -C $(LSCL)

libsnp.a :
	make -C $(LSNP)

snp_mpi : snp_mpi.o $(OBJECTS) $(HEADERS) $(LIBRARIES)
	$(CC) -o snp_mpi snp_mpi.o $(OBJECTS) $(LFLAGS)

pathname.h : 
	/bin/echo "#define PATHNAME \"$(PWD)\"" > pathname.h

snp_mpi.o : $(SDIR)/snp_mpi.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SDIR)/snp_mpi.cpp

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

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

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

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

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

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

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

