[Lemon-commits] Alpar Juttner: Add cmake config to find SoPlex (...
Lemon HG
hg at lemon.cs.elte.hu
Wed Aug 7 10:50:44 CEST 2013
details: http://lemon.cs.elte.hu/hg/lemon/rev/4000b7ef4e01
changeset: 1264:4000b7ef4e01
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Thu Mar 28 14:52:43 2013 +0100
description:
Add cmake config to find SoPlex (#460)
Based on the patch sent by ax487
diffstat:
CMakeLists.txt | 15 +++++++++++++--
cmake/FindSOPLEX.cmake | 23 +++++++++++++++++++++++
lemon/CMakeLists.txt | 5 +++++
lemon/config.h.in | 1 +
test/CMakeLists.txt | 3 +++
5 files changed, 45 insertions(+), 2 deletions(-)
diffs (119 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,6 +65,7 @@
SET(LEMON_ENABLE_GLPK YES CACHE STRING "Enable GLPK solver backend.")
SET(LEMON_ENABLE_ILOG YES CACHE STRING "Enable ILOG (CPLEX) solver backend.")
SET(LEMON_ENABLE_COIN YES CACHE STRING "Enable COIN solver backend.")
+SET(LEMON_ENABLE_SOPLEX YES CACHE STRING "Enable SoPlex solver backend.")
IF(LEMON_ENABLE_GLPK)
FIND_PACKAGE(GLPK 4.33)
@@ -75,6 +76,9 @@
IF(LEMON_ENABLE_COIN)
FIND_PACKAGE(COIN)
ENDIF(LEMON_ENABLE_COIN)
+IF(LEMON_ENABLE_SOPLEX)
+ FIND_PACKAGE(SOPLEX)
+ENDIF(LEMON_ENABLE_SOPLEX)
IF(GLPK_FOUND)
SET(LEMON_HAVE_LP TRUE)
@@ -92,6 +96,10 @@
SET(LEMON_HAVE_CLP TRUE)
SET(LEMON_HAVE_CBC TRUE)
ENDIF(COIN_FOUND)
+IF(SOPLEX_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_SOPLEX TRUE)
+ENDIF(SOPLEX_FOUND)
IF(ILOG_FOUND)
SET(DEFAULT_LP "CPLEX")
@@ -102,14 +110,17 @@
ELSEIF(GLPK_FOUND)
SET(DEFAULT_LP "GLPK")
SET(DEFAULT_MIP "GLPK")
+ELSEIF(SOPLEX_FOUND)
+ SET(DEFAULT_LP "SOPLEX")
ENDIF()
IF(NOT LEMON_DEFAULT_LP OR
(NOT ILOG_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CPLEX")) OR
(NOT COIN_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CLP")) OR
- (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")))
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")) OR
+ (NOT SOPLEX_FOUND AND (LEMON_DEFAULT_LP STREQUAL "SOPLEX")))
SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
- "Default LP solver backend (GLPK, CPLEX or CLP)" FORCE)
+ "Default LP solver backend (GLPK, CPLEX, CLP or SOPLEX)" FORCE)
ENDIF()
IF(NOT LEMON_DEFAULT_MIP OR
(NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR
diff --git a/cmake/FindSOPLEX.cmake b/cmake/FindSOPLEX.cmake
new file mode 100644
--- /dev/null
+++ b/cmake/FindSOPLEX.cmake
@@ -0,0 +1,23 @@
+SET(SOPLEX_ROOT_DIR "" CACHE PATH "SoPlex root directory")
+
+FIND_PATH(SOPLEX_INCLUDE_DIR
+ soplex.h
+ HINTS ${SOPLEX_ROOT_DIR}/src
+)
+FIND_LIBRARY(SOPLEX_LIBRARY
+ soplex
+ HINTS ${SOPLEX_ROOT_DIR}/lib
+)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(SOPLEX DEFAULT_MSG SOPLEX_LIBRARY SOPLEX_INCLUDE_DIR)
+
+IF(SOPLEX_FOUND)
+ SET(SOPLEX_INCLUDE_DIRS ${SOPLEX_INCLUDE_DIR})
+ SET(SOPLEX_LIBRARIES ${SOPLEX_LIBRARY})
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ SET(SOPLEX_LIBRARIES "${SOPLEX_LIBRARIES};z")
+ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ENDIF(SOPLEX_FOUND)
+
+MARK_AS_ADVANCED(SOPLEX_LIBRARY SOPLEX_INCLUDE_DIR)
diff --git a/lemon/CMakeLists.txt b/lemon/CMakeLists.txt
--- a/lemon/CMakeLists.txt
+++ b/lemon/CMakeLists.txt
@@ -49,6 +49,11 @@
INCLUDE_DIRECTORIES(${COIN_INCLUDE_DIRS})
ENDIF()
+IF(LEMON_HAVE_SOPLEX)
+ SET(LEMON_SOURCES ${LEMON_SOURCES} soplex.cc)
+ INCLUDE_DIRECTORIES(${SOPLEX_INCLUDE_DIRS})
+ENDIF()
+
ADD_LIBRARY(lemon ${LEMON_SOURCES})
IF(UNIX)
SET_TARGET_PROPERTIES(lemon PROPERTIES OUTPUT_NAME emon)
diff --git a/lemon/config.h.in b/lemon/config.h.in
--- a/lemon/config.h.in
+++ b/lemon/config.h.in
@@ -4,6 +4,7 @@
#cmakedefine LEMON_HAVE_MIP 1
#cmakedefine LEMON_HAVE_GLPK 1
#cmakedefine LEMON_HAVE_CPLEX 1
+#cmakedefine LEMON_HAVE_SOPLEX 1
#cmakedefine LEMON_HAVE_CLP 1
#cmakedefine LEMON_HAVE_CBC 1
#cmakedefine LEMON_DEFAULT_LP @LEMON_DEFAULT_LP@
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -74,6 +74,9 @@
IF(LEMON_HAVE_CLP)
SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES})
ENDIF()
+ IF(LEMON_HAVE_SOPLEX)
+ SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${SOPLEX_LIBRARIES})
+ ENDIF()
TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS})
ADD_TEST(lp_test lp_test)
More information about the Lemon-commits
mailing list