# makefile for darc and ccmpred

#NON_STATIC_CC = purify ${C_COMPILERS_DIR}/g++ -g
NS_CC = ${C_COMPILERS_DIR}/g++ -g -O3 -fopenmp
CC = ${C_COMPILERS_DIR}/g++ -g -static -O3 -fopenmp 
#CC = ${NON_STATIC_CC} 

BIN = ../../bin
NVCC = /usr/local/packages/cuda/bin/nvcc -O3 -ccbin g++ --gpu-architecture=compute_50 --gpu-code=sm_50,compute_50
#NVCC = "/usr/local/packages/cuda-10.1/bin/nvcc "
#NVCC = "/usr/local/packages/cuda-10.1/bin/nvcc -ccbin g++ "
#CC = ${CURRENT_CC} 
# for profiles 
#CFLAGS = -p -g $(LIBDIRS) $(INCDIRS) 
CFLAGS = $(LIBDIRS) $(INCDIRS) 
#CFLAGS = -O ${INCDIRS} $(LIBDIRS) 
#CFLAGS = -O2 $(LIBDIRS) ${INCDIRS} 

# ARCHIVE = ./libccm/libccm.a ./libccm/libconjugrad/libconjugrad.a 
# INCDIRS = -I./libccm/include -I./libccm/libconjugrad/include  
#LIBS = -lconjugrad -lccm -ldl -lpthread -lc -lm ${MATH_LIBRARY}
#LIBDIRS = -L./ -L./libccm/ -L./libccm/libconjugrad 

ARCHIVE = ../../lib/libafn/libafn.a ../../lib/libpdb/libpdb.a  ../../lib/libgsq/libgsq.a \
        ../../lib/libaln/libaln.a ../../lib/libblst/libblst.a ../../lib/libtools/libtools.a \
        ../../lib/libalex/libalex.a \
        ../../lib/libtax/libtax.a ../../lib/libhat/libhat.a ../../lib/libgsmo/libgsmo.a \
        ../../lib/libomc/libomc.a ../../lib/libvsi/libvsi.a ../../lib/libchn/libchn.a \
        ../../lib/libsarp/libsarp.a ../../lib/libpsed/libpsed.a ../../lib/libsprs/libsprs.a \
	../../lib/libstarc/libstarc.a ../../lib/libccm/libconjugrad/libconjugrad.a \
	../../lib/libccm/libccm.a ../../lib/libdarc/libdarc.a

INCDIRS = -I. -I../../lib/include -I../../lib/libafn -I../../lib/libblst -I../../lib/libgsq \
        -I../../lib/libaln -I../../lib/libtools -I../../lib/libtax \
        -I../../lib/libalex -I../../lib/libhat -I../../lib/libvsi \
        -I../../lib/libpdb  -I../../lib/libomc  -I../../lib/libchn -I../../lib/libsarp/ \
        -I../../lib/libgsmo -I../../lib/libpsed -I../../lib/libsprs -I../../lib/libstarc \
	-I../../lib/libccm/include -I../../lib/libccm/libconjugrad/include \
	-I../../lib/libdarc 

LIBS = -ldarc -lsprs -lpsed -lsarp -lgsmo -lomc -lchn -lvsi -lhat -ltools -lalex -laln -lgsq \
	-lblst -ltax -lpdb -lafn -lccm -lconjugrad -lstarc -ldl -lpthread \
	-lc -lm ${MATH_LIBRARY}

LIBDIRS = -L../../lib/libafn -L../../lib/libgsq -L../../lib/libaln -L../../lib/libpdb \
	-L../../lib/libblst -L../../lib/libalex \
	-L../../lib/libtools -L../../lib/libtax -L../../lib/libhat \
	-L../../lib/libvsi -L../../lib/libchn -L../../lib/libsarp -L../../lib/libgsmo \
	-L../../lib/libomc -L../../lib/libpsed -L../../lib/libsprs -L../../lib/libstarc \
	-L../../lib/libccm/ -L../../lib/libccm/libconjugrad  -L../../lib/libdarc \
	-L/usr/local/packages/gcc/lib64 

STDINC = ../../lib/include/stdinc.h ../../lib/include/residues.h ../../lib/include/sset.h

OBJS = $(ARCHIVE) 

INC = $(ARCHIVE) $(STDINC)

all: darc sbsmpl_dca 

.cc.o:
	${CC} $(CFLAGS) -c $*.cc 

darc: run_darc.cc ${INC} $(OBJS)
	$(NVCC) $(CFLAGS) -o darc run_darc.cc $(OBJS) $(LIBS) -ljansson -lgomp -luuid
	@ \mv darc ${BIN}

xdarc: run_darc.cc ${INC} $(OBJS)
	$(NVCC) $(CFLAGS) -o xdarc run_darc.cc $(OBJS) $(LIBS) -ljansson -lgomp -luuid
	@ \mv xdarc ${BIN}

gpu_darc: run_darc.cc $(INC)
	$(NVCC) $(CFLAGS) -o gpu_darc run_darc.cc $(OBJS) $(LIBS) -ljansson -lgomp -luuid
	@ \mv gpu_darc ${BIN}

gpu_sbsmpl_dca: sbsmpl_dca.cc $(INC) $(OBJS)
	$(NVCC) $(CFLAGS) -o gpu_sbsmpl_dca sbsmpl_dca.cc $(OBJS) $(LIBS) -ljansson -lgomp -luuid 
	@ \mv gpu_sbsmpl_dca ${BIN}

sbsmpl_dca: sbsmpl_dca.cc  $(INC) $(OBJS)
	$(CC) $(CFLAGS) -o sbsmpl_dca sbsmpl_dca.cc $(OBJS) $(LIBS)
	@ \mv sbsmpl_dca ${BIN}

clean: 
#	@ \rm *.o 

