Adding librt to link libraries for SuiteSparse_config on Linux.
- SuiteSparse_config (SuiteSparse >= 4.0) requires librt if compiled
with timing support, which is the default on Linux & Unix (except
OSX).
- This was previously raised as issue 124:
https://code.google.com/p/ceres-solver/issues/detail?id=124.
Change-Id: I08ada41cd28d2e63a4bf342e143e23fe8213e9ee
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b7d2569..e54c40c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -298,8 +298,23 @@
MESSAGE("-- Did not find SuiteSparse_config header")
ENDIF (EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
-IF (NOT EXISTS ${SUITESPARSE_CONFIG_LIB} OR
- NOT EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
+IF (EXISTS ${SUITESPARSE_CONFIG_LIB} AND
+ EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
+ # SuiteSparse_config (SuiteSparse version >= 4) requires librt library for
+ # timing by default when compiled on Linux or Unix, but not on OSX (which
+ # does not have librt).
+ IF (CMAKE_SYSTEM_NAME MATCHES "Linux" OR UNIX AND NOT APPLE)
+ FIND_LIBRARY(LIBRT_LIB NAMES rt)
+ IF (LIBRT_LIB)
+ MESSAGE("-- Adding librt: ${LIBRT_LIB} to SuiteSparse_config libraries.")
+ ELSE (LIBRT_LIB)
+ MESSAGE("-- Could not find librt, but found SuiteSparse_config, "
+ "assuming that SuiteSparse was compiled without timing.")
+ ENDIF (LIBRT_LIB)
+ LIST(APPEND SUITESPARSE_CONFIG_LIB ${LIBRT_LIB})
+ ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux" OR UNIX AND NOT APPLE)
+ELSE (EXISTS ${SUITESPARSE_CONFIG_LIB} AND
+ EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
SET(SUITESPARSE_CONFIG_FOUND FALSE)
FIND_PATH(UFCONFIG_INCLUDE NAMES UFconfig.h)
IF (EXISTS ${UFCONFIG_INCLUDE})
@@ -308,8 +323,8 @@
MESSAGE("-- Did not find UFconfig header")
SET(UFCONFIG_FOUND FALSE)
ENDIF (EXISTS ${UFCONFIG_INCLUDE})
-ENDIF (NOT EXISTS ${SUITESPARSE_CONFIG_LIB} OR
- NOT EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
+ENDIF (EXISTS ${SUITESPARSE_CONFIG_LIB} AND
+ EXISTS ${SUITESPARSE_CONFIG_INCLUDE})
FIND_LIBRARY(METIS_LIB NAMES metis)
IF (EXISTS ${METIS_LIB})
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 7c23a68..477cf98 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -154,9 +154,9 @@
LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CAMD_LIB})
LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${COLAMD_LIB})
LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${AMD_LIB})
- IF (EXISTS ${SUITESPARSE_CONFIG_LIB})
+ IF (SUITESPARSE_CONFIG_FOUND)
LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${SUITESPARSE_CONFIG_LIB})
- ENDIF (EXISTS ${SUITESPARSE_CONFIG_LIB})
+ ENDIF (SUITESPARSE_CONFIG_FOUND)
IF (EXISTS ${METIS_LIB})
LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${METIS_LIB})