1#Makefile 2 3# Supported platforms 4# Unix / Linux LNX 5# Mac MAC 6# Compilation options 7# link to LAPACK WITH_LAPACK 8# 32-bit binary FORCE_32BIT 9# dynamic compilation FORCE_DYNAMIC 10 11# Set this variable to either LNX or MAC 12SYS = LNX 13# Leave blank after "=" to disable; put "= 1" to enable 14# Disable WITH_LAPACK option can slow computation speed significantly and is not recommended 15# Disable WITH_ARPACK option only disable -apprx option in the software 16WITH_LAPACK = 1 17FORCE_32BIT = 18FORCE_DYNAMIC = 19DIST_NAME = gemma-0.97.1 20 21# -------------------------------------------------------------------- 22# Edit below this line with caution 23# -------------------------------------------------------------------- 24 25BIN_DIR = ./bin 26 27SRC_DIR = ./src 28 29CPP = g++ 30 31CPPFLAGS = -O3 -std=gnu++11 -I./eigen 32 33LIBS = /software/gsl-1.16-el7-x86_64/lib/libgslcblas.a \ 34 /software/gsl-1.16-el7-x86_64/lib/libgsl.a \ 35 -pthread -lz 36 37# ifdef FORCE_DYNAMIC 38# LIBS = -lgsl -lgslcblas -lblas -pthread -lz 39# else 40# LIBS = -lgsl -lgslcblas -pthread -lz 41# endif 42 43OUTPUT = $(BIN_DIR)/gemma 44 45SOURCES = $(SRC_DIR)/main.cpp 46 47HDR = 48 49# Detailed libary paths, D for dynamic and S for static 50LIBS_LNX_D_LAPACK = -llapack 51LIBS_MAC_D_LAPACK = -framework Veclib 52LIBS_LNX_S_LAPACK = /software/atlas-3.10.3-el7-x86_64/lib/liblapack.a \ 53 /software/atlas-3.10.3-el7-x86_64/lib/libcblas.a \ 54 /software/atlas-3.10.3-el7-x86_64/lib/libf77blas.a \ 55 /software/atlas-3.10.3-el7-x86_64/lib/libatlas.a -lgfortran \ 56 -Wl,--allow-multiple-definition 57 58SOURCES += $(SRC_DIR)/param.cpp $(SRC_DIR)/gemma.cpp $(SRC_DIR)/io.cpp $(SRC_DIR)/lm.cpp $(SRC_DIR)/lmm.cpp $(SRC_DIR)/vc.cpp $(SRC_DIR)/mvlmm.cpp $(SRC_DIR)/bslmm.cpp $(SRC_DIR)/prdt.cpp $(SRC_DIR)/mathfunc.cpp $(SRC_DIR)/gzstream.cpp $(SRC_DIR)/eigenlib.cpp $(SRC_DIR)/ldr.cpp $(SRC_DIR)/bslmmdap.cpp $(SRC_DIR)/logistic.cpp $(SRC_DIR)/varcov.cpp 59HDR += $(SRC_DIR)/param.h $(SRC_DIR)/gemma.h $(SRC_DIR)/io.h $(SRC_DIR)/lm.h $(SRC_DIR)/lmm.h $(SRC_DIR)/vc.h $(SRC_DIR)/mvlmm.h $(SRC_DIR)/bslmm.h $(SRC_DIR)/prdt.h $(SRC_DIR)/mathfunc.h $(SRC_DIR)/gzstream.h $(SRC_DIR)/eigenlib.h 60 61ifdef WITH_LAPACK 62 OBJS += $(SRC_DIR)/lapack.o 63 CPPFLAGS += -DWITH_LAPACK 64ifeq ($(SYS), MAC) 65 LIBS += $(LIBS_MAC_D_LAPACK) 66else 67ifdef FORCE_DYNAMIC 68 LIBS += $(LIBS_LNX_D_LAPACK) 69else 70 LIBS += $(LIBS_LNX_S_LAPACK) 71endif 72endif 73 SOURCES += $(SRC_DIR)/lapack.cpp 74 HDR += $(SRC_DIR)/lapack.h 75endif 76 77ifdef FORCE_32BIT 78 CPPFLAGS += -m32 79else 80 CPPFLAGS += -m64 81endif 82 83# all 84OBJS = $(SOURCES:.cpp=.o) 85 86all: $(OUTPUT) 87 88$(OUTPUT): $(OBJS) 89 $(CPP) $(CPPFLAGS) $(OBJS) $(LIBS) -o $(OUTPUT) 90 91$(OBJS) : $(HDR) 92 93.cpp.o: 94 $(CPP) $(CPPFLAGS) $(HEADERS) -c $*.cpp -o $*.o 95.SUFFIXES : .cpp .c .o $(SUFFIXES) 96 97 98clean: 99 rm -rf ${SRC_DIR}/*.o ${SRC_DIR}/*~ *~ $(OUTPUT) 100 101DIST_COMMON = COPYING.txt README.txt Makefile 102DIST_SUBDIRS = src doc example bin 103 104tar: 105 mkdir -p ./$(DIST_NAME) 106 cp $(DIST_COMMON) ./$(DIST_NAME)/ 107 cp -r $(DIST_SUBDIRS) ./$(DIST_NAME)/ 108 tar cvzf $(DIST_NAME).tar.gz ./$(DIST_NAME)/ 109 rm -r ./$(DIST_NAME) 110 111