CC = gcc

LIBHTS_CPPFLAGS = -I/usr/local/include
LIBHTS_LDFLAGS = -L/usr/local/lib
LIBHTS_LIBS = -lhts
LIBHTS_LIB_DIR = /usr/local/lib

LIBCFU_CPPFLAGS = -I/usr/local/include
LIBCFU_LDFLAGS = -L/usr/local/lib
LIBCFU_LIBS = -lcfu
LIBCFU_LIB_DIR = 

CFLAGS = -g -fPIC -pthread -O2 -Wall $(LIBHTS_CPPFLAGS) $(LIBCFU_CPPFLAGS)
LIB_FLAGS = -static-libgcc -shared -Wl,-rpath,$(LIBHTS_LIB_DIR),-soname,libPMBam.so.0
LIBS =  -lm $(LIBCFU_LDFLAGS) $(LIBCFU_LIBS) $(LIBHTS_LDFLAGS) $(LIBHTS_LIBS)
EXECUTABLE = bamParser
PM_BAM_LIB = libPMBam.a

TEST_SOURCES = example.c bamParser.c pairedLink.c
LIB_SOURCES = bamParser.c pairedLink.c

LIBPMBAM_OBJS = \
        bamParser.o \
        pairedLink.o

all: test library
        
.SUFFIXES: .c .o

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

$(PM_BAM_LIB) : $(LIBPMBAM_OBJS)
	@-rm -f $@
	$(CC) $(CFLAGS) $(LIB_FLAGS) -o $@ $(LIB_SOURCES) $(LIBS)

$(EXECUTABLE): $(TEST_SOURCES)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)

test: $(EXECUTABLE)

library: $(PM_BAM_LIB)

clean:
	$(RM) $(EXECUTABLE)
	$(RM) *.o
	$(RM) $(PM_BAM_LIB)
