1. Changed the semantics of how SuiteSparse dependencies are checked and used. Now SuiteSparse is built by default, only if all of its
2. Corrected a number of typos and reorganized the CMakefile to handle the corner cases better.
3. Moved the various search paths to the top of the CMakefile so that they are more easily accessible.
4. Tests that depend on gflags are only built if gflags support is compiled in.
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index f105fcd..e6dcbd9 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -105,38 +105,36 @@
${CERES_INTERNAL_HDRS}
${CERES_INTERNAL_SCHUR_FILES})
-SET(CERES_LIBRARY_DEPENDENCIES
- ${GLOG_LIB}
- ${GFLAGS_LIB}
- ${CHOLMOD_LIB}
- ${LAPACK_LIB}
- ${CAMD_LIB}
- ${AMD_LIB}
- ${CCOLAMD_LIB}
- ${COLAMD_LIB})
+SET(CERES_LIBRARY_DEPENDENCIES ${GLOG_LIB})
-IF (EXISTS ${METIS_LIB})
- SET(CERES_LIBRARY_DEPENDENCIES
- ${CERES_LIBRARY_DEPENDENCIES}
- ${METIS_LIB})
-ENDIF (EXISTS ${METIS_LIB})
+IF (GFLAGS)
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${GFLAGS_LIB})
+ENDIF (GFLAGS)
-IF (EXISTS ${BLAS_LIB})
- SET(CERES_LIBRARY_DEPENDENCIES
- ${CERES_LIBRARY_DEPENDENCIES}
- ${BLAS_LIB})
-ENDIF (EXISTS ${BLAS_LIB})
+IF (SUITESPARSE)
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CHOLMOD_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CCOLCAMD_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CAMD_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${COLAMD_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${AMD_LIB})
+
+ IF (EXISTS ${METIS_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${METIS_LIB})
+ ENDIF (EXISTS ${METIS_LIB})
+
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${LAPACK_LIB})
+
+ IF (EXISTS ${BLAS_LIB})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${BLAS_LIB})
+ ENDIF (EXISTS ${BLAS_LIB})
+ENDIF (SUITESPARSE)
IF (OPENMP_FOUND)
- SET(CERES_LIBRARY_DEPENDENCIES
- ${CERES_LIBRARY_DEPENDENCIES}
- gomp)
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES gomp)
ENDIF (OPENMP_FOUND)
IF (PROTOBUF_FOUND)
- SET(CERES_LIBRARY_DEPENDENCIES
- ${CERES_LIBRARY_DEPENDENCIES}
- ${PROTOBUF_LIBRARY})
+ LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${PROTOBUF_LIBRARY})
ENDIF (PROTOBUF_FOUND)
TARGET_LINK_LIBRARIES(ceres ${CERES_LIBRARY_DEPENDENCIES})
@@ -185,13 +183,19 @@
CERES_TEST(rotation)
CERES_TEST(runtime_numeric_diff_cost_function)
CERES_TEST(schur_complement_solver)
- CERES_TEST(schur_eliminator)
+ IF (GFLAGS)
+ CERES_TEST(schur_eliminator)
+ ENDIF (GFLAGS)
CERES_TEST(schur_ordering)
CERES_TEST(solver_impl)
CERES_TEST(symmetric_linear_solver)
- CERES_TEST(system)
+ IF (GFLAGS)
+ CERES_TEST(system)
+ ENDIF (GFLAGS)
CERES_TEST(triplet_sparse_matrix)
CERES_TEST(unsymmetric_linear_solver)
CERES_TEST(visibility)
- CERES_TEST(visibility_based_preconditioner)
+ IF (GFLAGS)
+ CERES_TEST(visibility_based_preconditioner)
+ ENDIF (GFLAGS)
ENDIF (BUILD_TESTING)