TARGETS=main libMQF.a
TESTFILES = tests/CountingTests.o tests/HighLevelFunctionsTests.o tests/IOTests.o tests/tagTests.o tests/bufferedCountingTests.o tests/onDiskCountingTests.o
ifdef D
DEBUG=-g
OPT=
else
DEBUG=
OPT=-Ofast
endif
ifdef NH
ARCH=
else
ARCH=-msse4.2 -D__SSE4_2_
endif
ifdef P
PROFILE=-pg -no-pie endif
CXX = g++ -std=c++11
CC = g++ -std=c++11
LD= g++ -std=c++11
INCLUDE= -I ThirdParty/stxxl/include/ -I ThirdParty/stxxl/build/include/
CXXFLAGS = -fPIC -Wall $(DEBUG) $(PROFILE) $(OPT) $(ARCH) $(INCLUDE) -fpermissive -fopenmp -m64 -I. -Wno-unused-result -Wno-strict-aliasing -Wno-unused-function -Wno-sign-compare
STXXL= ThirdParty/stxxl/build/lib/libstxxl.a
LDFLAGS = -fopenmp $(DEBUG) $(PROFILE) $(OPT)
all: $(TARGETS)
OBJS= gqf.o utils.o bufferedMQF.o onDiskMQF.o
main: main.o $(STXXL) $(OBJS)
$(LD) $^ $(LDFLAGS) -o $@ $(STXXL)
libgqf.so: $(OBJS)
$(LD) $^ $(LDFLAGS) --shared -o $@
test: $(TESTFILES) gqf.c test.o utils.o
$(LD) $(LDFLAGS) -DTEST -o mqf_test test.o LayeredMQF.o bufferedMQF.o onDiskMQF.o utils.o $(TESTFILES) gqf.c $(STXXL)
main.o: gqf.h
libMQF.a: $(STXXL) $(OBJS)
ar rcs libMQF.a $(OBJS) $(STXXL)
$(STXXL):
mkdir -p ThirdParty/stxxl/build
cd ThirdParty/stxxl/build && cmake DBUILD_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./ ..
cd ThirdParty/stxxl/build && make all install
gqf.o: gqf.c gqf.h
bufferedMQF.o: bufferedMQF.cpp bufferedMQF.h
%.o: %.cc
$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
%.o: %.c %.h
$(CC) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
%.o: %.cpp %.hpp
$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
clean:
rm -f $(OBJS) $(TARGETS) $(TESTS) $(TESTFILES)