From a06ac9884b4d4436e8821216cdba8ac83a8dcc07 Mon Sep 17 00:00:00 2001 From: Peter Carbonetto Date: Tue, 10 Oct 2017 13:08:28 -0500 Subject: Updated/revised Makefile for MacOSX. --- Makefile.macosx | 149 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 96 insertions(+), 53 deletions(-) (limited to 'Makefile.macosx') diff --git a/Makefile.macosx b/Makefile.macosx index 5312288..d2c1d90 100644 --- a/Makefile.macosx +++ b/Makefile.macosx @@ -1,38 +1,78 @@ -#Makefile - +# Generic Makefile for GEMMA +# # Supported platforms -# Unix / Linux LNX +# +# Unix / Linux LNX (default) # Mac MAC +# # Compilation options -# link to LAPACK WITH_LAPACK -# 32-bit binary FORCE_32BIT -# dynamic compilation FORCE_DYNAMIC +# static compilation FORCE_STATIC +# +# Examples: +# +# Make GEMMA on Linux with OPENBLAS support: +# +# make WITH_OPENBLAS=1 +# +# Disable debug info and checks (slightly faster release mode) +# +# make WITH_OPENBLAS=1 DEBUG= +# +# Force static compilation +# +# make FORCE_STATIC=1 +# +# Run tests with +# +# make check +# +# See also the INSTALL.md document in the source tree at +# +# https://github.com/genetics-statistics/GEMMA/blob/master/INSTALL.md # Set this variable to either LNX or MAC -SYS = MAC +SYS = MAC # LNX|MAC (Linux is the default) # 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 -DIST_NAME = gemma-0.97.2 +DIST_NAME = gemma-0.97.2 +DEBUG = # DEBUG mode, set DEBUG= for a release +SHOW_COMPILER_WARNINGS = +WITH_LAPACK = 1 +WITH_OPENBLAS = # Defaults to LAPACK - OPENBLAS may be faster +FORCE_STATIC = # Static linking of libraries +GCC_FLAGS = -O3 -I/usr/local/Cellar/gsl/2.4/include -I./eigen +TRAVIS_CI = # used by TRAVIS for testing +EIGEN_INCLUDE_PATH= +CXX = g++ # -------------------------------------------------------------------- # Edit below this line with caution # -------------------------------------------------------------------- -BIN_DIR = ./bin +BIN_DIR = ./bin SRC_DIR = ./src +TEST_SRC_DIR = ./test/src -CPP = g++ +ifdef CXX # CXX defined in environment + CPP = $(CXX) + CC = $(CXX) +else + CPP = g++ +endif + +ifdef OPENBLAS + WITH_LAPACK = # OPENBLAS usually includes LAPACK +endif -CPPFLAGS = -F /System/Library/Frameworks \ - -O3 -I/usr/local/opt/gsl@1/include \ - -I./eigen -Wc++11-narrowing -Wno-unused-value +ifdef DEBUG + CPPFLAGS = -g $(GCC_FLAGS) -std=gnu++11 -isystem/$(EIGEN_INCLUDE_PATH) -Icontrib/catch-1.9.7 -Isrc +else + # release mode + CPPFLAGS = -DNDEBUG $(GCC_FLAGS) -std=gnu++11 -isystem/$(EIGEN_INCLUDE_PATH) -Icontrib/catch-1.9.7 -Isrc +endif -LIBS = /usr/local/opt/gsl@1/lib/libgsl.a \ - /usr/local/opt/gsl@1/lib/libgslcblas.a -lz +ifdef SHOW_COMPILER_WARNINGS + CPPFLAGS += -Wall +endif OUTPUT = $(BIN_DIR)/gemma @@ -41,55 +81,59 @@ SOURCES = $(SRC_DIR)/main.cpp HDR = # Detailed libary paths, D for dynamic and S for static +LIBS += -framework Accelerate \ + /usr/local/opt/zlib/lib/libz.a \ + /usr/local/Cellar/gsl/2.4/lib/libgsl.a \ + /usr/local/Cellar/gsl/2.4/lib/libgslcblas.a -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 - -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 - -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 +HDR = $(wildcard src/*.h) +SOURCES = $(wildcard src/*.cpp) # all OBJS = $(SOURCES:.cpp=.o) all: $(OUTPUT) +