diff options
author | Peter Carbonetto | 2017-05-04 10:52:24 -0500 |
---|---|---|
committer | Peter Carbonetto | 2017-05-04 10:52:24 -0500 |
commit | 452f232cb627d7180bf1c845dff9ddd88af6a600 (patch) | |
tree | 7b4b114dae947b01c552743b34be14214686e399 /Makefile.osx | |
parent | 03d7d2556a9284dc0ac3e155b5c9a8d69b1b21ee (diff) | |
download | pangemma-452f232cb627d7180bf1c845dff9ddd88af6a600.tar.gz |
Fixed problems with duplicate symbols in io.o, lmm.o, param.o and vc.o; created a Makefile for Mac OS X (tested on 10.11, i.e., El Capitan).
Diffstat (limited to 'Makefile.osx')
-rw-r--r-- | Makefile.osx | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Makefile.osx b/Makefile.osx new file mode 100644 index 0000000..e5d5a26 --- /dev/null +++ b/Makefile.osx @@ -0,0 +1,119 @@ +#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 = MAC +# 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 = 1 +FORCE_FLOAT = +DIST_NAME = gemma-0.95alpha + +# -------------------------------------------------------------------- +# Edit below this line with caution +# -------------------------------------------------------------------- +BIN_DIR = ./bin + +SRC_DIR = ./src + +CPP = g++ + +CPPFLAGS = -F /System/Library/Frameworks -Wall -O3 \ + -I/usr/local/opt/gsl@1/include + +LIBS = -lgsl -lgslcblas -lz -L/usr/local/opt/gsl@1/lib + +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 Accelerate +LIBS_LNX_S_LAPACK = /usr/lib/lapack/liblapack.a -lgfortran /usr/lib/atlas-base/libatlas.a /usr/lib/libblas/libblas.a -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 + # 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 + +ifdef FORCE_DYNAMIC +else + CPPFLAGS += -static +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) + |