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})