# HG changeset patch # User Alpar Juttner # Date 1364478763 -3600 # Node ID 4000b7ef4e0104ecb1801bf6cf116ca5dc32c056 # Parent dd1443e4a34c108c8423309dece90d3d887ca477 Add cmake config to find SoPlex (#460) Based on the patch sent by ax487 diff -r dd1443e4a34c -r 4000b7ef4e01 CMakeLists.txt --- a/CMakeLists.txt Wed Aug 07 07:08:38 2013 +0200 +++ b/CMakeLists.txt Thu Mar 28 14:52:43 2013 +0100 @@ -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 -r dd1443e4a34c -r 4000b7ef4e01 cmake/FindSOPLEX.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/FindSOPLEX.cmake Thu Mar 28 14:52:43 2013 +0100 @@ -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 -r dd1443e4a34c -r 4000b7ef4e01 lemon/CMakeLists.txt --- a/lemon/CMakeLists.txt Wed Aug 07 07:08:38 2013 +0200 +++ b/lemon/CMakeLists.txt Thu Mar 28 14:52:43 2013 +0100 @@ -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 -r dd1443e4a34c -r 4000b7ef4e01 lemon/config.h.in --- a/lemon/config.h.in Wed Aug 07 07:08:38 2013 +0200 +++ b/lemon/config.h.in Thu Mar 28 14:52:43 2013 +0100 @@ -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 -r dd1443e4a34c -r 4000b7ef4e01 test/CMakeLists.txt --- a/test/CMakeLists.txt Wed Aug 07 07:08:38 2013 +0200 +++ b/test/CMakeLists.txt Thu Mar 28 14:52:43 2013 +0100 @@ -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)