CUTIL=${HOME}/NVIDIA_GPU_Computing_SDK/C/common/inc

CC=gcc
NVCC=nvcc

ifneq ($(dbg), 1)
	NVCCFLAGS= -c -I$(CUTIL) --ptxas-options=-v -Xcompiler -fopenmp -lgomp -O3
	CFLAGS=-c -Wall -O2
else
	NVCCFLAGS= -c -I$(CUTIL) --ptxas-options=-v -Xcompiler -fopenmp -lgomp -g -G
	CFLAGS=-c -Wall -g
endif

LDFLAGS= -lm -L$(CUDA_INSTALL_PATH)/lib64 -lcudart -lgomp
SOURCES=main.c seq_block_read.c matrix.c sw_cuda.cu seq_entry_array.c fasta_util.c
SOURCES_CONV=conv.c fasta_util.c seq_entry_array.c
OBJECTS=$(patsubst %.c, %.o, $(patsubst %.cu, %.o, $(SOURCES))) 
OBJECTS_CONV=$(patsubst %.c, %.o, $(SOURCES_CONV)) 
EXECUTABLE=sw

EXE_CONV=convert

FASTA_DB=~/sprot/sprot_57.6.${GPU_NUM}.kfasta
FASTA_ID=~/sprot/sprot_57.6.${GPU_NUM}.id
MATRIX=../matrix/BLOSUM50
FASTA_QUERY=~/sprot/qseq.fasta

.SUFFIXES: .o .c .cu

.PHONY: all
all: $(EXECUTABLE) $(EXE_CONV)

$(EXE_CONV): $(OBJECTS_CONV)
	$(CC) $(LDFLAGS) $(OBJECTS_CONV) -o $@

$(EXECUTABLE): $(OBJECTS) 
	$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.c.o:
	$(CC) $(CFLAGS) $< -o $@

.cu.o:
	$(NVCC) $(NVCCFLAGS) $< -o $@

main.o: seq_block_read.o matrix.o sw_cuda.o

clean:
	rm -rf *.o $(EXECUTABLE) *~ \#*

run:
	./$(EXECUTABLE) -g ${GPU_NUM} ${MATRIX} ${FASTA_QUERY} ${FASTA_DB} ${FASTA_ID}| tee logfile.txt
