1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# Use ?= to allow overriding from the env or command-line, e.g.
#
# make CXXFLAGS="-O3 -fPIC" install
#
# Package managers will override many of these variables automatically, so
# this is aimed at making it easy to create packages (Debian packages,
# FreeBSD ports, MacPorts, pkgsrc, etc.)
CC ?= cc
CXX ?= c++
CXXFLAGS += -fPIC
INCLUDES ?= -Ihtslib
HTS_HEADERS ?= htslib/htslib/bgzf.h htslib/htslib/tbx.h
HTS_LIB ?= htslib/libhts.a
LIBPATH ?= -L. -Lhtslib
DESTDIR ?= stage
PREFIX ?= /usr/local
STRIP ?= strip
INSTALL ?= install -c
MKDIR ?= mkdir -p
AR ?= ar
DFLAGS = -D_FILE_OFFSET_BITS=64 -D_USE_KNETFILE
BIN = tabix++
LIB = libtabix.a
SOVERSION = 1
SLIB = libtabix.so.$(SOVERSION)
OBJS = tabix.o
SUBDIRS = .
SONUMBER=0
.SUFFIXES:.c .o
.c.o:
$(CC) -c $(CXXFLAGS) $(CPPFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@
all: $(BIN) libtabixpp.so.$(SONUMBER) libtabixpp.a
tabix.o: tabix.cpp tabix.hpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c tabix.cpp $(INCLUDES)
libtabixpp.a: tabix.o
ar rcs $@ $<
libtabixpp.so.$(SONUMBER): tabix.o
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -shared -o $@ $< -fPIC -Wl,-soname,libtabixpp.so.$(SONUMBER) $(LDFLAGS) -lhts
$(LIB): $(OBJS)
$(AR) rs $(LIB) $(OBJS)
$(SLIB): $(OBJS)
$(CXX) -shared -Wl,-soname,$(SLIB) -o $(SLIB) $(OBJS)
$(BIN): $(OBJS) main.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ main.cpp $(OBJS) $(INCLUDES) $(LIBPATH) $(LDFLAGS) \
-lhts -lpthread -lm -lz -lcurl -llzma -lbz2
test: all
./tabix++ test/vcf_file.vcf.gz
install: all
$(MKDIR) $(DESTDIR)$(PREFIX)/bin
$(MKDIR) $(DESTDIR)$(PREFIX)/include
$(MKDIR) $(DESTDIR)$(PREFIX)/lib
$(INSTALL) $(BIN) $(DESTDIR)$(PREFIX)/bin
$(INSTALL) *.hpp $(DESTDIR)$(PREFIX)/include
$(INSTALL) $(LIB) $(SLIB) $(DESTDIR)$(PREFIX)/lib
install-strip: install
$(STRIP) $(DESTDIR)$(PREFIX)/bin/$(BIN) $(DESTDIR)$(PREFIX)/lib/$(SLIB)
cleanlocal:
rm -rf $(BIN) $(LIB) $(SLIB) $(OBJS) $(DESTDIR)
rm -fr gmon.out *.o a.out *.dSYM $(BIN) *~ *.a tabix.aux tabix.log \
tabix.pdf *.class libtabix*.dylib libtabix*so*
clean: cleanlocal
|