[Lemon-commits] Alpar Juttner: Merge #446, #457, #465
Lemon HG
hg at lemon.cs.elte.hu
Wed Jul 24 11:11:12 CEST 2013
details: http://lemon.cs.elte.hu/hg/lemon/rev/490d89913a17
changeset: 1233:490d89913a17
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Mon Jul 15 08:33:08 2013 +0200
description:
Merge #446, #457, #465
diffstat:
CMakeLists.txt | 61 ++++++++++++++++++++++++++++-
INSTALL | 22 +++++++++-
cmake/FindCOIN.cmake | 7 ---
cmake/FindCPLEX.cmake | 40 -------------------
cmake/FindGLPK.cmake | 6 --
cmake/FindILOG.cmake | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++
lemon/CMakeLists.txt | 2 +-
lemon/cbc.h | 1 -
lemon/config.h.in | 2 +
lemon/cplex.cc | 11 +++++
lemon/cplex.h | 15 +++++++
lemon/glpk.cc | 11 +++++
lemon/glpk.h | 15 +++++++
lemon/lp.h | 29 ++++++-------
lemon/lp_base.h | 49 +++++++++++++++++++++++-
lemon/lp_skeleton.cc | 2 +
lemon/lp_skeleton.h | 5 ++
test/CMakeLists.txt | 8 +-
test/lp_test.cc | 3 +-
19 files changed, 308 insertions(+), 83 deletions(-)
diffs (truncated from 634 to 300 lines):
diff -r 473c71baff72 -r 490d89913a17 CMakeLists.txt
--- a/CMakeLists.txt Thu Feb 28 23:45:39 2013 +0100
+++ b/CMakeLists.txt Mon Jul 15 08:33:08 2013 +0200
@@ -61,9 +61,64 @@
FIND_PACKAGE(Doxygen)
FIND_PACKAGE(Ghostscript)
-FIND_PACKAGE(GLPK 4.33)
-FIND_PACKAGE(CPLEX)
-FIND_PACKAGE(COIN)
+
+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.")
+
+IF(LEMON_ENABLE_GLPK)
+ FIND_PACKAGE(GLPK 4.33)
+ENDIF(LEMON_ENABLE_GLPK)
+IF(LEMON_ENABLE_ILOG)
+ FIND_PACKAGE(ILOG)
+ENDIF(LEMON_ENABLE_ILOG)
+IF(LEMON_ENABLE_COIN)
+ FIND_PACKAGE(COIN)
+ENDIF(LEMON_ENABLE_COIN)
+
+IF(GLPK_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_GLPK TRUE)
+ENDIF(GLPK_FOUND)
+IF(ILOG_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_ILOG TRUE)
+ENDIF(ILOG_FOUND)
+IF(COIN_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_CLP TRUE)
+ SET(LEMON_HAVE_CBC TRUE)
+ENDIF(COIN_FOUND)
+
+IF(ILOG_FOUND)
+ SET(DEFAULT_LP "CPLEX")
+ SET(DEFAULT_MIP "CPLEX")
+ELSEIF(COIN_FOUND)
+ SET(DEFAULT_LP "CLP")
+ SET(DEFAULT_MIP "CBC")
+ELSEIF(GLPK_FOUND)
+ SET(DEFAULT_LP "GLPK")
+ SET(DEFAULT_MIP "GLPK")
+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")))
+ SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
+ "Default LP solver backend (GLPK, CPLEX or CLP)" FORCE)
+ENDIF()
+IF(NOT LEMON_DEFAULT_MIP OR
+ (NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR
+ (NOT COIN_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CBC")) OR
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "GLPK")))
+ SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING
+ "Default MIP solver backend (GLPK, CPLEX or CBC)" FORCE)
+ENDIF()
+
IF(DEFINED ENV{LEMON_CXX_WARNING})
SET(CXX_WARNING $ENV{LEMON_CXX_WARNING})
diff -r 473c71baff72 -r 490d89913a17 INSTALL
--- a/INSTALL Thu Feb 28 23:45:39 2013 +0100
+++ b/INSTALL Mon Jul 15 08:33:08 2013 +0200
@@ -134,11 +134,29 @@
See http://docs.mathjax.org/en/latest/installation.html for more details.
+-DLEMON_ENABLE_GLPK=NO
+-DLEMON_ENABLE_COIN=NO
+-DLEMON_ENABLE_ILOG=NO
+
+ Enable optional third party libraries. They are all enabled by default.
+
+-DLEMON_DEFAULT_LP=GLPK
+
+ Sets the default LP solver backend. The supported values are
+ CPLEX, CLP and GLPK. By default, it is set to the first one which
+ is enabled and succesfully discovered.
+
+-DLEMON_DEFAULT_MIP=GLPK
+
+ Sets the default MIP solver backend. The supported values are
+ CPLEX, CBC and GLPK. By default, it is set to the first one which
+ is enabled and succesfully discovered.
+
-DGLPK_ROOT_DIR=DIRECTORY
-DCOIN_ROOT_DIR=DIRECTORY
--DCPLEX_ROOT_DIR=DIRECTORY
+-DILOG_ROOT_DIR=DIRECTORY
- Install root directory prefixes of optional third party libraries.
+ Root directory prefixes of optional third party libraries.
Makefile Variables
==================
diff -r 473c71baff72 -r 490d89913a17 cmake/FindCOIN.cmake
--- a/cmake/FindCOIN.cmake Thu Feb 28 23:45:39 2013 +0100
+++ b/cmake/FindCOIN.cmake Mon Jul 15 08:33:08 2013 +0200
@@ -108,10 +108,3 @@
COIN_ZLIB_LIBRARY
COIN_BZ2_LIBRARY
)
-
-IF(COIN_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_CLP TRUE)
- SET(LEMON_HAVE_CBC TRUE)
-ENDIF(COIN_FOUND)
diff -r 473c71baff72 -r 490d89913a17 cmake/FindCPLEX.cmake
--- a/cmake/FindCPLEX.cmake Thu Feb 28 23:45:39 2013 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-SET(CPLEX_ROOT_DIR "" CACHE PATH "CPLEX root directory")
-
-FIND_PATH(CPLEX_INCLUDE_DIR
- ilcplex/cplex.h
- PATHS "C:/ILOG/CPLEX/include"
- PATHS "/opt/ilog/cplex/include"
- HINTS ${CPLEX_ROOT_DIR}/include
-)
-FIND_LIBRARY(CPLEX_LIBRARY
- cplex
- PATHS "C:/ILOG/CPLEX/lib/msvc7/stat_mda"
- PATHS "/opt/ilog/cplex/bin"
- HINTS ${CPLEX_ROOT_DIR}/bin
- HINTS ${CPLEX_ROOT_DIR}/lib
-)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG CPLEX_LIBRARY CPLEX_INCLUDE_DIR)
-
-FIND_PATH(CPLEX_BIN_DIR
- cplex.dll
- PATHS "C:/ILOG/CPLEX/bin/x86_win32"
- HINTS ${CPLEX_ROOT_DIR}/bin
-)
-
-IF(CPLEX_FOUND)
- SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR})
- SET(CPLEX_LIBRARIES ${CPLEX_LIBRARY})
- IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
- ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-ENDIF(CPLEX_FOUND)
-
-MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_BIN_DIR)
-
-IF(CPLEX_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_CPLEX TRUE)
-ENDIF(CPLEX_FOUND)
diff -r 473c71baff72 -r 490d89913a17 cmake/FindGLPK.cmake
--- a/cmake/FindGLPK.cmake Thu Feb 28 23:45:39 2013 +0100
+++ b/cmake/FindGLPK.cmake Mon Jul 15 08:33:08 2013 +0200
@@ -53,9 +53,3 @@
ENDIF(GLPK_FOUND)
MARK_AS_ADVANCED(GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_BIN_DIR)
-
-IF(GLPK_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_GLPK TRUE)
-ENDIF(GLPK_FOUND)
diff -r 473c71baff72 -r 490d89913a17 cmake/FindILOG.cmake
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/FindILOG.cmake Mon Jul 15 08:33:08 2013 +0200
@@ -0,0 +1,102 @@
+FIND_PATH(ILOG_ROOT_DIR
+ NAMES cplex
+ DOC "CPLEX STUDIO root directory"
+ PATHS /opt/ibm/ILOG /usr/local/ibm/ILOG /usr/local/ILOG /usr/local/ilog
+ PATHS "$ENV{HOME}/ILOG" "$ENV{HOME}/.local/ILOG"
+ PATHS "$ENV{HOME}/ibm/ILOG" "$ENV{HOME}/.local/ibm/ILOG"
+ PATHS "C:/Program Files/IBM/ILOG"
+ PATH_SUFFIXES "CPLEX_Studio126" "CPLEX_Studio125"
+ "CPLEX_Studio124" "CPLEX_Studio123" "CPLEX_Studio122"
+ NO_DEFAULT_PATH
+)
+
+IF(WIN32)
+ IF(MSVC_VERSION STREQUAL "1400")
+ SET(ILOG_WIN_COMPILER "windows_vs2005")
+ ELSEIF(MSVC_VERSION STREQUAL "1500")
+ SET(ILOG_WIN_COMPILER "windows_vs2008")
+ ELSEIF(MSVC_VERSION STREQUAL "1600")
+ SET(ILOG_WIN_COMPILER "windows_vs2010")
+ ELSE()
+ SET(ILOG_WIN_COMPILER "windows_vs2008")
+ ENDIF()
+ IF(CMAKE_CL_64)
+ SET(ILOG_WIN_COMPILER "x64_${ILOG_WIN_COMPILER}")
+ SET(ILOG_WIN_PLATFORM "x64_win32")
+ ELSE()
+ SET(ILOG_WIN_COMPILER "x86_${ILOG_WIN_COMPILER}")
+ SET(ILOG_WIN_PLATFORM "x86_win32")
+ ENDIF()
+ENDIF()
+
+FIND_PATH(ILOG_CPLEX_ROOT_DIR
+ NAMES include/ilcplex
+ HINTS ${ILOG_ROOT_DIR}/cplex ${ILOG_ROOT_DIR}/cplex121
+ ${ILOG_ROOT_DIR}/cplex122 ${ILOG_ROOT_DIR}/cplex123
+ DOC "CPLEX root directory"
+ NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CONCERT_ROOT_DIR
+ NAMES include/ilconcert
+ HINTS ${ILOG_ROOT_DIR}/concert ${ILOG_ROOT_DIR}/concert29
+ DOC "CONCERT root directory"
+ NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CPLEX_INCLUDE_DIR
+ ilcplex/cplex.h
+ HINTS ${ILOG_CPLEX_ROOT_DIR}/include
+ NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CONCERT_INCLUDE_DIR
+ ilconcert/ilobasic.h
+ HINTS ${ILOG_CONCERT_ROOT_DIR}/include
+ NO_DEFAULT_PATH
+)
+
+FIND_LIBRARY(ILOG_CPLEX_LIBRARY
+ cplex cplex121 cplex122 cplex123 cplex124
+ HINTS ${ILOG_CPLEX_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
+ ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
+ ${ILOG_CPLEX_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
+ ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
+ ${ILOG_CPLEX_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
+ NO_DEFAULT_PATH
+ )
+
+FIND_LIBRARY(ILOG_CONCERT_LIBRARY
+ concert
+ HINTS ${ILOG_CONCERT_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
+ ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
+ ${ILOG_CONCERT_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
+ ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
+ ${ILOG_CONCERT_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
+ NO_DEFAULT_PATH
+ )
+
+FIND_FILE(ILOG_CPLEX_DLL
+ cplex121.dll cplex122.dll cplex123.dll cplex124.dll
+ HINTS ${ILOG_CPLEX_ROOT_DIR}/bin/${ILOG_WIN_PLATFORM}
+ NO_DEFAULT_PATH
+ )
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ILOG
+ DEFAULT_MSG ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR
+ )
+
+IF(ILOG_FOUND)
+ SET(ILOG_INCLUDE_DIRS ${ILOG_CPLEX_INCLUDE_DIR} ${ILOG_CONCERT_INCLUDE_DIR})
+ SET(ILOG_LIBRARIES ${ILOG_CPLEX_LIBRARY} ${ILOG_CONCERT_LIBRARY})
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ # SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
+ SET(ILOG_LIBRARIES ${ILOG_LIBRARIES} "m" "pthread")
+ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ENDIF(ILOG_FOUND)
+
+MARK_AS_ADVANCED(
+ ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR ILOG_CPLEX_DLL
+ ILOG_CONCERT_LIBRARY ILOG_CONCERT_INCLUDE_DIR ILOG_CONCERT_DLL
+ )
diff -r 473c71baff72 -r 490d89913a17 lemon/CMakeLists.txt
--- a/lemon/CMakeLists.txt Thu Feb 28 23:45:39 2013 +0100
+++ b/lemon/CMakeLists.txt Mon Jul 15 08:33:08 2013 +0200
@@ -36,7 +36,7 @@
IF(LEMON_HAVE_CPLEX)
SET(LEMON_SOURCES ${LEMON_SOURCES} cplex.cc)
- INCLUDE_DIRECTORIES(${CPLEX_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES(${ILOG_INCLUDE_DIRS})
ENDIF()
IF(LEMON_HAVE_CLP)
diff -r 473c71baff72 -r 490d89913a17 lemon/cbc.h
--- a/lemon/cbc.h Thu Feb 28 23:45:39 2013 +0100
+++ b/lemon/cbc.h Mon Jul 15 08:33:08 2013 +0200
@@ -16,7 +16,6 @@
*
More information about the Lemon-commits
mailing list