aboutsummaryrefslogtreecommitdiff
path: root/Makefile.macosx
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.macosx')
-rw-r--r--Makefile.macosx114
1 files changed, 114 insertions, 0 deletions
diff --git a/Makefile.macosx b/Makefile.macosx
new file mode 100644
index 0000000..798f09c
--- /dev/null
+++ b/Makefile.macosx
@@ -0,0 +1,114 @@
+#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.96
+
+# --------------------------------------------------------------------
+# Edit below this line with caution
+# --------------------------------------------------------------------
+BIN_DIR = ./bin
+
+SRC_DIR = ./src
+
+CPP = g++
+
+CPPFLAGS = -F /System/Library/Frameworks -Wall -Weffc++ \
+ -O3 -I/usr/local/opt/gsl@1/include -Wc++11-narrowing
+
+LIBS = /usr/local/opt/gsl@1/lib/libgsl.a \
+ /usr/local/opt/gsl@1/lib/libgslcblas.a -lz
+
+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 $(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)
+