Skip to content

Commit

Permalink
Added new Makefile that I found works well for compiling on CentOS/Sc…
Browse files Browse the repository at this point in the history
…ientific Linux 7
  • Loading branch information
pcarbo committed May 17, 2017
1 parent 4c21290 commit bbbabdb
Showing 1 changed file with 125 additions and 0 deletions.
125 changes: 125 additions & 0 deletions Makefile.linux
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#Makefile

# Supported platforms
# Unix / Linux LNX
# Mac MAC
# Compilation options
# link to LAPACK WITH_LAPACK
# 32-bit binary FORCE_32BIT
# dynamic compilation FORCE_DYNAMIC
# float precision FORCE_FLOAT

# Set this variable to either LNX or MAC
SYS = LNX
# Leave blank after "=" to disable; put "= 1" to enable
# Disable WITH_LAPACK option can slow computation speed significantly and is not recommended
# Disable WITH_ARPACK option only disable -apprx option in the software
WITH_LAPACK = 1
FORCE_32BIT =
FORCE_DYNAMIC =
FORCE_FLOAT =
DIST_NAME = gemma-0.95.2alpha

# --------------------------------------------------------------------
# Edit below this line with caution
# --------------------------------------------------------------------


BIN_DIR = ./bin

SRC_DIR = ./src

CPP = g++

CPPFLAGS = -Wall -Weffc++ -O3 -std=gnu++11

LIBS = /software/gsl-2.2.1-el7-x86_64/lib/libgslcblas.a \
/software/gsl-2.2.1-el7-x86_64/lib/libgsl.a \
-pthread -lz

# ifdef FORCE_DYNAMIC
# LIBS = -lgsl -lgslcblas -lblas -pthread -lz
# else
# LIBS = -lgsl -lgslcblas -pthread -lz
# endif

OUTPUT = $(BIN_DIR)/gemma

ifdef FORCE_FLOAT
OUTPUT = $(BIN_DIR)/gemmaf
endif

SOURCES = $(SRC_DIR)/main.cpp

HDR =

# Detailed libary paths, D for dynamic and S for static
LIBS_LNX_D_LAPACK = -llapack
LIBS_MAC_D_LAPACK = -framework Veclib
LIBS_LNX_S_LAPACK = /software/atlas-3.10.3-el7-x86_64/lib/liblapack.a \
/software/atlas-3.10.3-el7-x86_64/lib/libcblas.a \
/software/atlas-3.10.3-el7-x86_64/lib/libf77blas.a \
/software/atlas-3.10.3-el7-x86_64/lib/libatlas.a -lgfortran \
-Wl,--allow-multiple-definition

# Options

ifdef FORCE_FLOAT
CPPFLAGS += -DFORCE_FLOAT
SOURCES += $(SRC_DIR)/param_float.cpp $(SRC_DIR)/gemma_float.cpp $(SRC_DIR)/io_float.cpp $(SRC_DIR)/lm_float.cpp $(SRC_DIR)/vc_float.cpp $(SRC_DIR)/lmm_float.cpp $(SRC_DIR)/mvlmm_float.cpp $(SRC_DIR)/bslmm_float.cpp $(SRC_DIR)/prdt_float.cpp $(SRC_DIR)/mathfunc_float.cpp $(SRC_DIR)/gzstream.cpp $(SRC_DIR)/eigenlib.cpp
HDR += $(SRC_DIR)/param_float.h $(SRC_DIR)/gemma_float.h $(SRC_DIR)/io_float.h $(SRC_DIR)/lm_float.h $(SRC_DIR)/lmm_float.h $(SRC_DIR)/vc_float.h $(SRC_DIR)/mvlmm_float.h $(SRC_DIR)/bslmm_float.h $(SRC_DIR)/prdt_float.h $(SRC_DIR)/mathfunc_float.h $(SRC_DIR)/gzstream.h $(SRC_DIR)/eigenlib.h
else
SOURCES += $(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
HDR += $(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
endif

ifdef WITH_LAPACK
OBJS += $(SRC_DIR)/lapack.o
CPPFLAGS += -DWITH_LAPACK
ifeq ($(SYS), MAC)
LIBS += $(LIBS_MAC_D_LAPACK)
else
ifdef FORCE_DYNAMIC
LIBS += $(LIBS_LNX_D_LAPACK)
else
LIBS += $(LIBS_LNX_S_LAPACK)
endif
endif
SOURCES += $(SRC_DIR)/lapack.cpp
HDR += $(SRC_DIR)/lapack.h
endif

ifdef FORCE_32BIT
CPPFLAGS += -m32
else
CPPFLAGS += -m64
endif

# all
OBJS = $(SOURCES:.cpp=.o)

all: $(OUTPUT)

$(OUTPUT): $(OBJS)
$(CPP) $(CPPFLAGS) $(OBJS) $(LIBS) -o $(OUTPUT)

$(OBJS) : $(HDR)

.cpp.o:
$(CPP) $(CPPFLAGS) $(HEADERS) -c $*.cpp -o $*.o
.SUFFIXES : .cpp .c .o $(SUFFIXES)


clean:
rm -rf ${SRC_DIR}/*.o ${SRC_DIR}/*~ *~ ${SRC_DIR}/*_float.* $(OUTPUT)

DIST_COMMON = COPYING.txt README.txt Makefile
DIST_SUBDIRS = src doc example bin

tar:
mkdir -p ./$(DIST_NAME)
cp $(DIST_COMMON) ./$(DIST_NAME)/
cp -r $(DIST_SUBDIRS) ./$(DIST_NAME)/
tar cvzf $(DIST_NAME).tar.gz ./$(DIST_NAME)/
rm -r ./$(DIST_NAME)

0 comments on commit bbbabdb

Please sign in to comment.