281 lines
12 KiB
Makefile
281 lines
12 KiB
Makefile
# ----- You should not need to modify the following, unless the -----
|
|
# ----- configuration is not standard. In that case, please tell us -----
|
|
# ----- about it. -----
|
|
|
|
# Unix specific definitions
|
|
PROTOBUF_DIR = $(UNIX_PROTOBUF_DIR)
|
|
SWIG_BINARY = $(UNIX_SWIG_BINARY)
|
|
MKDIR = mkdir
|
|
COPY = cp
|
|
TOUCH = touch
|
|
LIBPREFIX = lib
|
|
ifeq ($(PLATFORM),MACOSX)
|
|
# Keep the path in the lib as it is stored upon construction.
|
|
LIB_DIR = $(OR_ROOT_FULL)/lib
|
|
else # No need to keep the path in the lib, it is not stored there on linux.
|
|
LIB_DIR = $(OR_ROOT)lib
|
|
endif
|
|
BIN_DIR = $(OR_ROOT)bin
|
|
GEN_DIR = $(OR_ROOT)src/gen
|
|
OBJ_DIR = $(OR_ROOT)objs
|
|
SRC_DIR = $(OR_ROOT)src
|
|
EX_DIR = $(OR_ROOT)examples
|
|
INC_DIR = $(OR_ROOT)src
|
|
O = o
|
|
E =
|
|
LDOUT = -o # need the space.
|
|
OBJ_OUT = -o #
|
|
EXE_OUT = -o #
|
|
DEL = rm -f
|
|
DELREC = rm -rf
|
|
S = /
|
|
CPSEP = :
|
|
SED = sed
|
|
|
|
# This is needed to find python.h
|
|
PYTHON_INC = -I/usr/include/python$(UNIX_PYTHON_VER) -I/usr/lib/python$(UNIX_PYTHON_VER)
|
|
PYTHON_VERSION = $(UNIX_PYTHON_VER)
|
|
# This is needed to find gflags/gflags.h
|
|
GFLAGS_INC = -I$(UNIX_GFLAGS_DIR)/include
|
|
# This is needed to find protocol buffers.
|
|
PROTOBUF_INC = -I$(UNIX_PROTOBUF_DIR)/include
|
|
# This is needed to find sparse hash containers.
|
|
SPARSEHASH_INC = -I$(UNIX_SPARSEHASH_DIR)/include
|
|
|
|
# Define UNIX_CLP_DIR if unset and if UNIX_CBC_DIR is set.
|
|
ifdef UNIX_CBC_DIR
|
|
ifndef UNIX_CLP_DIR
|
|
UNIX_CLP_DIR = $(UNIX_CBC_DIR)
|
|
endif
|
|
endif
|
|
# This is needed to find Coin LP include files.
|
|
ifdef UNIX_CLP_DIR
|
|
CLP_INC = -I$(UNIX_CLP_DIR)/include -DUSE_CLP
|
|
CLP_SWIG = $(CLP_INC)
|
|
endif
|
|
# This is needed to find Coin Branch and Cut include files.
|
|
ifdef UNIX_CBC_DIR
|
|
CBC_INC = -I$(UNIX_CBC_DIR)/include -DUSE_CBC
|
|
CBC_SWIG = $(CBC_INC)
|
|
endif
|
|
# This is needed to find GLPK include files.
|
|
ifdef UNIX_GLPK_DIR
|
|
GLPK_INC = -I$(UNIX_GLPK_DIR)/include -DUSE_GLPK
|
|
GLPK_SWIG = $(GLPK_INC)
|
|
endif
|
|
# This is needed to find scip include files.
|
|
ifdef UNIX_SCIP_DIR
|
|
SCIP_INC = -I$(UNIX_SCIP_DIR)/src -DUSE_SCIP
|
|
SCIP_SWIG = $(SCIP_INC)
|
|
endif
|
|
# This is needed to find SULUM include files.
|
|
ifdef UNIX_SLM_DIR
|
|
SLM_INC = -I$(UNIX_SLM_DIR)/header -DUSE_SLM
|
|
SLM_SWIG = $(SLM_INC)
|
|
endif
|
|
ifdef UNIX_GUROBI_DIR
|
|
GUROBI_INC = -I$(UNIX_GUROBI_DIR)/$(GUROBI_PLATFORM)/include -DUSE_GUROBI
|
|
GUROBI_SWIG = $(GUROBI_INC)
|
|
endif
|
|
ifdef UNIX_CPLEX_DIR
|
|
CPLEX_INC = -I$(UNIX_CPLEX_DIR)/cplex/include -DUSE_CPLEX
|
|
CPLEX_SWIG = $(CPLEX_INC)
|
|
endif
|
|
|
|
ifeq ($(UNIX_SCIP_TAG),3.0.0)
|
|
SCIP_30 = TRUE
|
|
endif
|
|
ifeq ($(UNIX_SCIP_TAG),3.0.1)
|
|
SCIP_30 = TRUE
|
|
endif
|
|
ifeq ($(UNIX_SCIP_TAG),3.1.0)
|
|
SCIP_30 = TRUE
|
|
endif
|
|
|
|
SWIG_INC = $(GLPK_SWIG) $(CLP_SWIG) $(CBC_SWIG) $(SCIP_SWIG) $(SLM_SWIG) $(GUROBI_SWIG) $(CPLEX_SWIG) -DUSE_GLOP
|
|
|
|
# Compilation flags
|
|
DEBUG = -O4 -DNDEBUG
|
|
JNIDEBUG = -O1 -DNDEBUG
|
|
|
|
# Check wether CBC/CLP need a coin subdir in library.
|
|
ifdef UNIX_CBC_DIR
|
|
ifneq ($(wildcard $(UNIX_CBC_DIR)/lib/coin),)
|
|
UNIX_CBC_COIN = /coin
|
|
endif
|
|
endif
|
|
ifdef UNIX_CLP_DIR
|
|
ifneq ($(wildcard $(UNIX_CLP_DIR)/lib/coin),)
|
|
UNIX_CLP_COIN = /coin
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(PLATFORM),LINUX)
|
|
CCC = g++ -fPIC -std=c++0x
|
|
DYNAMIC_LD = g++ -shared
|
|
STATIC_LD = ar rv
|
|
ifeq ($(PTRLENGTH),64)
|
|
ARCH = -DARCH_K8
|
|
else
|
|
ARCH =
|
|
endif
|
|
ifeq ($(UNIX_MONO_DIR),)
|
|
CSC = mono-csc
|
|
MONO = LD_LIBRARY_PATH=$(LIB_DIR):$(LD_LIBRARY_PATH) mono
|
|
else
|
|
CSC = $(UNIX_MONO_DIR)/bin/mcs
|
|
MONO = LD_LIBRARY_PATH=$(LIB_DIR):$(LD_LIBRARY_PATH) $(UNIX_MONO_DIR)/bin/mono
|
|
endif
|
|
|
|
# This is needed to find libgflags.a
|
|
DYNAMIC_GFLAGS_LNK = -Wl,-rpath $(UNIX_GFLAGS_DIR)/lib -L$(UNIX_GFLAGS_DIR)/lib -lgflags
|
|
STATIC_GFLAGS_LNK = $(UNIX_GFLAGS_DIR)/lib/libgflags.a
|
|
# This is needed to find libz.a
|
|
ZLIB_LNK = -lz
|
|
# This is needed to find libprotobuf.a
|
|
DYNAMIC_PROTOBUF_LNK = -Wl,-rpath $(UNIX_PROTOBUF_DIR)/lib -L$(UNIX_PROTOBUF_DIR)/lib -lprotobuf -lpthread
|
|
STATIC_PROTOBUF_LNK = $(UNIX_PROTOBUF_DIR)/lib/libprotobuf.a
|
|
ifdef UNIX_GLPK_DIR
|
|
DYNAMIC_GLPK_LNK = -Wl,-rpath $(UNIX_GLPK_DIR)/lib -L$(UNIX_GLPK_DIR)/lib -lglpk
|
|
STATIC_GLPK_LNK = $(UNIX_GLPK_DIR)/lib/libglpk.a
|
|
endif
|
|
ifdef UNIX_CLP_DIR
|
|
DYNAMIC_CLP_LNK = -Wl,-rpath $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN) -L$(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN) -lClp -lCoinUtils
|
|
STATIC_CLP_LNK = $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libClp.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libCoinUtils.a
|
|
endif
|
|
ifdef UNIX_CBC_DIR
|
|
DYNAMIC_CBC_LNK = -Wl,-rpath $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN) -L$(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN) -lCbcSolver -lCbc -lCgl -lOsi -lOsiCbc -lOsiClp
|
|
STATIC_CBC_LNK = $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libCbcSolver.a $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libCbc.a $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libCgl.a $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libOsi.a $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libOsiCbc.a $(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN)/libOsiClp.a
|
|
endif
|
|
ifdef UNIX_SCIP_DIR
|
|
ifeq ($(PTRLENGTH),64)
|
|
SCIP_ARCH = linux.x86_64.gnu.opt
|
|
else
|
|
SCIP_ARCH = linux.x86.gnu.opt
|
|
endif
|
|
ifeq ($(SCIP_30),TRUE)
|
|
STATIC_SCIP_LNK = $(UNIX_SCIP_DIR)/lib/libscip.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libnlpi.cppad.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/liblpispx.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libsoplex.$(SCIP_ARCH).a
|
|
else
|
|
STATIC_SCIP_LNK = $(UNIX_SCIP_DIR)/lib/libscip.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libnlpi.cppad.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/liblpispx.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libsoplex.$(SCIP_ARCH).a
|
|
endif
|
|
endif
|
|
ifdef UNIX_SLM_DIR
|
|
ifeq ($(PTRLENGTH),64)
|
|
DYNAMIC_SLM_LNK = -Wl,-rpath $(UNIX_SLM_DIR)/linux64/bin/ -L$(UNIX_SLM_DIR)/linux64/bin/ -m64 -lc -ldl -lm -lpthread -lsulum10
|
|
STATIC_SLM_LNK = -Wl,-rpath $(UNIX_SLM_DIR)/linux64/bin/ -L$(UNIX_SLM_DIR)/linux64/bin/ -m64 -lc -ldl -lm -lpthread -lsulum10
|
|
else
|
|
DYNAMIC_SLM_LNK = -Wl,-rpath $(UNIX_SLM_DIR)/linux32/bin/ -L$(UNIX_SLM_DIR)/linux32/bin/ -m32 -lc -ldl -lm -lpthread -lsulum10
|
|
STATIC_SLM_LNK = -Wl,-rpath $(UNIX_SLM_DIR)/linux32/bin/ -L$(UNIX_SLM_DIR)/linux32/bin/ -m32 -lc -ldl -lm -lpthread -lsulum10
|
|
endif
|
|
endif
|
|
ifdef UNIX_GUROBI_DIR
|
|
ifeq ($(PTRLENGTH),64)
|
|
DYNAMIC_GUROBI_LNK = -Wl,-rpath $(UNIX_GUROBI_DIR)/linux64/lib/ -L$(UNIX_GUROBI_DIR)/linux64/lib/ -m64 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
STATIC_GUROBI_LNK = -Wl,-rpath $(UNIX_GUROBI_DIR)/linux64/lib/ -L$(UNIX_GUROBI_DIR)/linux64/lib/ -m64 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
else
|
|
DYNAMIC_GUROBI_LNK = -Wl,-rpath $(UNIX_GUROBI_DIR)/linux32/lib/ -L$(UNIX_GUROBI_DIR)/linux32/lib/ -m32 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
STATIC_GUROBI_LNK = -Wl,-rpath $(UNIX_GUROBI_DIR)/linux32/lib/ -L$(UNIX_GUROBI_DIR)/linux32/lib/ -m32 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
endif
|
|
endif
|
|
SYS_LNK = -lrt -lpthread
|
|
JAVA_INC = -I$(LINUX_JDK_ROOT)/include -I$(LINUX_JDK_ROOT)/include/linux
|
|
JAVAC_BIN = $(LINUX_JDK_ROOT)/bin/javac
|
|
JAVA_BIN = $(LINUX_JDK_ROOT)/bin/java
|
|
JAR_BIN = $(LINUX_JDK_ROOT)/bin/jar
|
|
JNI_LIB_EXT = so
|
|
DYNAMIC_LIB_SUFFIX = so
|
|
DYNAMIC_SWIG_LIB_SUFFIX = so
|
|
DYNAMIC_LINK_CMD = g++ -shared
|
|
DYNAMIC_LINK_PREFIX = -o # Need the space.
|
|
LINKPREFIX = -o # Need the space.
|
|
STATIC_LIB_SUFFIX = a
|
|
STATIC_LINK_CMD = ar rv
|
|
STATIC_LINK_PREFIX =
|
|
DYNAMIC_PRE_LIB = -Wl,-rpath $(OR_ROOT_FULL)/lib -L$(OR_ROOT_FULL)/lib -l
|
|
DYNAMIC_POST_LIB =
|
|
STATIC_PRE_LIB = $(OR_ROOT_FULL)/lib/lib
|
|
STATIC_POST_LIB = .a
|
|
BISON = dependencies/install/bin/bison
|
|
FLEX = dependencies/install/bin/flex
|
|
endif # LINUX
|
|
ifeq ($(PLATFORM),MACOSX)
|
|
CCC = clang++ -fPIC -std=c++11
|
|
DYNAMIC_LD = ld -arch x86_64 -bundle -flat_namespace -undefined suppress -macosx_version_min 10.6 -lSystem -compatibility_version 1.0 -current_version $(OR_TOOLS_VERSION)
|
|
JNI_LIB_EXT = jnilib
|
|
ifeq ($(UNIX_MONO_DIR),)
|
|
CSC = gmcs
|
|
MONO = DYLD_FALLBACK_LIBRARY_PATH=$(LIB_DIR):$(DYLD_LIBRARY_PATH) mono
|
|
else
|
|
CSC = $(UNIX_MONO_DIR)/bin/mcs
|
|
MONO = DYLD_FALLBACK_LIBRARY_PATH=$(LIB_DIR):$(DYLD_LIBRARY_PATH) $(UNIX_MONO_DIR)/bin/mono
|
|
endif
|
|
|
|
DYNAMIC_GFLAGS_LNK = -L$(UNIX_GFLAGS_DIR)/lib -lgflags
|
|
STATIC_GFLAGS_LNK = $(UNIX_GFLAGS_DIR)/lib/libgflags.a
|
|
ZLIB_LNK = -lz
|
|
DYNAMIC_PROTOBUF_LNK = -L$(UNIX_PROTOBUF_DIR)/lib -lprotobuf
|
|
STATIC_PROTOBUF_LNK = $(UNIX_PROTOBUF_DIR)/lib/libprotobuf.a
|
|
ARCH = -DARCH_K8
|
|
SYS_LNK =
|
|
|
|
JAVA_INC = -I$(MAC_JDK_HEADERS) -I$(MAC_JDK_HEADERS)/darwin
|
|
JAVAC_BIN = javac
|
|
JAVA_BIN = java
|
|
JAR_BIN = jar
|
|
|
|
DYNAMIC_PRE_LIB = -L$(OR_ROOT)lib -l
|
|
DYNAMIC_POST_LIB =
|
|
STATIC_PRE_LIB = $(OR_ROOT)lib/lib
|
|
STATIC_POST_LIB = .a
|
|
DYNAMIC_LIB_SUFFIX = dylib
|
|
DYNAMIC_SWIG_LIB_SUFFIX = so# To overcome a bug in Mac OS X loader.
|
|
DYNAMIC_LINK_CMD = ld -arch x86_64 -dylib -flat_namespace -undefined suppress -macosx_version_min 10.6 -lSystem -compatibility_version 1.0 -current_version $(OR_TOOLS_VERSION)
|
|
DYNAMIC_LINK_PREFIX = -o # Space needed.
|
|
STATIC_LIB_SUFFIX = a
|
|
STATIC_LINK_CMD = ar -r -v
|
|
STATIC_LINK_PREFIX =
|
|
|
|
ifdef UNIX_GLPK_DIR
|
|
DYNAMIC_GLPK_LNK = -L$(UNIX_GLPK_DIR)/lib -lglpk
|
|
STATIC_GLPK_LNK = $(UNIX_GLPK_DIR)/lib/libglpk.a
|
|
endif
|
|
ifdef UNIX_CLP_DIR
|
|
DYNAMIC_CLP_LNK = -L$(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN) -lClp -lCoinUtils
|
|
STATIC_CLP_LNK = $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libClp.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libCoinUtils.a
|
|
endif
|
|
ifdef UNIX_CBC_DIR
|
|
DYNAMIC_CBC_LNK = -L$(UNIX_CBC_DIR)/lib$(UNIX_CBC_COIN) -lCbcSolver -lCbc -lCgl -lOsi -lOsiCbc -lOsiClp
|
|
STATIC_CBC_LNK = $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libCbcSolver.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libCbc.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libCgl.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libOsi.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libOsiCbc.a $(UNIX_CLP_DIR)/lib$(UNIX_CLP_COIN)/libOsiClp.a
|
|
endif
|
|
ifdef UNIX_SCIP_DIR
|
|
SCIP_ARCH = darwin.x86_64.gnu.opt
|
|
ifeq ($(SCIP_30),TRUE)
|
|
STATIC_SCIP_LNK = -force_load $(UNIX_SCIP_DIR)/lib/libscip.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libnlpi.cppad.$(SCIP_ARCH).a -force_load $(UNIX_SCIP_DIR)/lib/liblpispx.$(SCIP_ARCH).a -force_load $(UNIX_SCIP_DIR)/lib/libsoplex.$(SCIP_ARCH).a
|
|
else
|
|
STATIC_SCIP_LNK = -force_load $(UNIX_SCIP_DIR)/lib/libscip.$(SCIP_ARCH).a $(UNIX_SCIP_DIR)/lib/libnlpi.$(SCIP_ARCH).a -force_load $(UNIX_SCIP_DIR)/lib/liblpispx.$(SCIP_ARCH).a -force_load $(UNIX_SCIP_DIR)/lib/libsoplex.$(SCIP_ARCH).a
|
|
endif
|
|
SCIP_LNK = -lreadline
|
|
endif
|
|
ifdef UNIX_GUROBI_DIR
|
|
DYNAMIC_GUROBI_LNK = -L$(UNIX_GUROBI_DIR)/mac64/lib/ -m64 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
STATIC_GUROBI_LNK = -L$(UNIX_GUROBI_DIR)/mac64/bin/ -m64 -lc -ldl -lm -lpthread -lgurobi$(GUROBI_LIB_VERSION)
|
|
endif
|
|
ifdef UNIX_CPLEX_DIR
|
|
STATIC_CPLEX_LNK = -force_load $(UNIX_CPLEX_DIR)/cplex/lib/x86-64_osx/static_pic/libcplex.a -m64 -lm -lpthread -framework CoreFoundation -framework IOKit
|
|
DYNAMIC_CPLEX_LNK = $(STATIC_CPLEX_LNK)
|
|
endif
|
|
BISON = dependencies/install/bin/bison
|
|
FLEX = dependencies/install/bin/flex
|
|
endif # MAC OS X
|
|
|
|
CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
|
|
-Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) \
|
|
$(SCIP_INC) $(SLM_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP $(SPARSEHASH_INC)
|
|
|
|
JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
|
|
-Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(SLM_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP
|
|
DYNAMIC_LD_FLAGS = $(DYNAMIC_GFLAGS_LNK) $(ZLIB_LNK) $(DYNAMIC_PROTOBUF_LNK) $(SYS_LNK)
|
|
DYNAMIC_LD_LP_DEPS = $(DYNAMIC_GLPK_LNK) $(DYNAMIC_CBC_LNK) $(DYNAMIC_CLP_LNK) $(DYNAMIC_SLM_LNK) $(DYNAMIC_GUROBI_LNK) $(DYNAMIC_CPLEX_LNK)
|
|
STATIC_LD_FLAGS = $(STATIC_GFLAGS_LNK) $(ZLIB_LNK) $(STATIC_PROTOBUF_LNK) $(SYS_LNK)
|
|
STATIC_LD_LP_DEPS = $(STATIC_GLPK_LNK) $(STATIC_CBC_LNK) $(STATIC_CLP_LNK) $(STATIC_SCIP_LNK) $(STATIC_SLM_LNK) $(STATIC_GUROBI_LNK) $(STATIC_CPLEX_LNK)
|