# HG changeset patch
# User Alpar Juttner <alpar@cs.elte.hu>
# Date 1539789854 -7200
# Node ID 389416f8a995b3eab52b4f8fce27f46c7cd75956
# Parent  d7e25df22e88fc8e87577d75919c1291ea0cfae4
Better MIP solver discovery and support linking to CLP/CBC on Windows (#614)

diff -r d7e25df22e88 -r 389416f8a995 CMakeLists.txt
--- a/CMakeLists.txt	Mon Oct 15 23:39:22 2018 +0200
+++ b/CMakeLists.txt	Wed Oct 17 17:24:14 2018 +0200
@@ -82,38 +82,37 @@
 
 IF(LEMON_ENABLE_GLPK) 
   FIND_PACKAGE(GLPK 4.33)
+  IF(GLPK_FOUND)
+    SET(LEMON_HAVE_LP TRUE)
+    SET(LEMON_HAVE_MIP TRUE)
+    SET(LEMON_HAVE_GLPK TRUE)
+  ENDIF(GLPK_FOUND)
 ENDIF(LEMON_ENABLE_GLPK)
 IF(LEMON_ENABLE_ILOG)
   FIND_PACKAGE(ILOG)
+  IF(ILOG_FOUND)
+    SET(LEMON_HAVE_LP TRUE)
+    SET(LEMON_HAVE_MIP TRUE)
+    SET(LEMON_HAVE_CPLEX TRUE)
+  ENDIF(ILOG_FOUND)
 ENDIF(LEMON_ENABLE_ILOG)
 IF(LEMON_ENABLE_COIN)
   FIND_PACKAGE(COIN)
+  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)
 ENDIF(LEMON_ENABLE_COIN)
 IF(LEMON_ENABLE_SOPLEX)
   FIND_PACKAGE(SOPLEX)
+  IF(SOPLEX_FOUND)
+    SET(LEMON_HAVE_LP TRUE)
+    SET(LEMON_HAVE_SOPLEX TRUE)
+  ENDIF(SOPLEX_FOUND)
 ENDIF(LEMON_ENABLE_SOPLEX)
 
-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_CPLEX 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(SOPLEX_FOUND)
-  SET(LEMON_HAVE_LP TRUE)
-  SET(LEMON_HAVE_SOPLEX TRUE)
-ENDIF(SOPLEX_FOUND)
-
 IF(ILOG_FOUND)
   SET(DEFAULT_LP "CPLEX")
   SET(DEFAULT_MIP "CPLEX")
diff -r d7e25df22e88 -r 389416f8a995 cmake/FindCOIN.cmake
--- a/cmake/FindCOIN.cmake	Mon Oct 15 23:39:22 2018 +0200
+++ b/cmake/FindCOIN.cmake	Wed Oct 17 17:24:14 2018 +0200
@@ -65,6 +65,12 @@
   HINTS ${COIN_ROOT_DIR}/lib
 )
 
+FIND_LIBRARY(COIN_PTHREADS_LIBRARY
+  NAMES pthreads libpthreads
+  HINTS ${COIN_ROOT_DIR}/lib/coin
+  HINTS ${COIN_ROOT_DIR}/lib
+)
+
 INCLUDE(FindPackageHandleStandardArgs)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(COIN DEFAULT_MSG
   COIN_INCLUDE_DIR
@@ -82,14 +88,17 @@
 
 IF(COIN_FOUND)
   SET(COIN_INCLUDE_DIRS ${COIN_INCLUDE_DIR})
-  SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY};${COIN_ZLIB_LIBRARY};${COIN_BZ2_LIBRARY}")
+  SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY}")
   IF(COIN_ZLIB_LIBRARY)
     SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARIES};${COIN_ZLIB_LIBRARY}")
   ENDIF(COIN_ZLIB_LIBRARY)
    IF(COIN_BZ2_LIBRARY)
     SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARIES};${COIN_BZ2_LIBRARY}")
   ENDIF(COIN_BZ2_LIBRARY)
-  SET(COIN_CBC_LIBRARIES "${COIN_CBC_LIBRARY};${COIN_CBC_SOLVER_LIBRARY};${COIN_CGL_LIBRARY};${COIN_OSI_LIBRARY};${COIN_OSI_CBC_LIBRARY};${COIN_OSI_CLP_LIBRARY};${COIN_ZLIB_LIBRARY};${COIN_BZ2_LIBRARY};${COIN_CLP_LIBRARIES}")
+   IF(COIN_PTHREADS_LIBRARY)
+    SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARIES};${COIN_PTHREADS_LIBRARY}")
+  ENDIF(COIN_PTHREADS_LIBRARY)
+  SET(COIN_CBC_LIBRARIES "${COIN_CBC_LIBRARY};${COIN_CBC_SOLVER_LIBRARY};${COIN_CGL_LIBRARY};${COIN_OSI_LIBRARY};${COIN_OSI_CBC_LIBRARY};${COIN_OSI_CLP_LIBRARY};${COIN_CLP_LIBRARIES}")
   SET(COIN_LIBRARIES ${COIN_CBC_LIBRARIES})
 ENDIF(COIN_FOUND)