[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