Updated depend.cmake to follow CMake IF convention. Change-Id: I1e86cf134d3f40852033ae73f36d9143b389a918
diff --git a/CMakeLists.txt b/CMakeLists.txt index c3b536b..348f719 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -29,6 +29,7 @@ # Author: keir@google.com (Keir Mierle) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0) +CMAKE_POLICY(VERSION 2.8) IF (COMMAND cmake_policy) CMAKE_POLICY(SET CMP0003 NEW) @@ -273,12 +274,12 @@ ENDIF (EXISTS ${METIS_LIB}) SET(BLAS_AND_LAPACK_FOUND TRUE) -IF (${APPLE}) +IF (APPLE) # Mac OS X has LAPACK/BLAS bundled in a framework called # "vecLib". Search for that instead of for the normal "lapack" # library. FIND_LIBRARY(LAPACK_LIB NAMES vecLib) -ELSE (${APPLE}) +ELSE (APPLE) FIND_LIBRARY(BLAS_LIB NAMES blas) IF (EXISTS ${BLAS_LIB}) MESSAGE("-- Found BLAS library: ${BLAS_LIB}") @@ -287,7 +288,7 @@ SET(BLAS_AND_LAPACK_FOUND FALSE) ENDIF (EXISTS ${BLAS_LIB}) FIND_LIBRARY(LAPACK_LIB NAMES lapack) -ENDIF (${APPLE}) +ENDIF (APPLE) IF (EXISTS ${LAPACK_LIB}) MESSAGE("-- Found LAPACK library: ${LAPACK_LIB}") @@ -310,22 +311,22 @@ # built with SuiteSparse support. -DSUITESPARSE=ON/OFF can be used to # enable/disable SuiteSparse explicitly. IF (DEFINED SUITESPARSE) - IF (${SUITESPARSE}) + IF (SUITESPARSE) IF (NOT ${SUITESPARSE_FOUND}) MESSAGE(FATAL_ERROR "One or more of SuiteSparse's dependencies was not found") ENDIF (NOT ${SUITESPARSE_FOUND}) - ELSE (${SUITESPARSE}) + ELSE (SUITESPARSE) ADD_DEFINITIONS(-DCERES_NO_SUITESPARSE) - ENDIF (${SUITESPARSE}) + ENDIF (SUITESPARSE) ELSE (DEFINED SUITESPARSE) - IF (${SUITESPARSE_FOUND}) + IF (SUITESPARSE_FOUND) MESSAGE("-- Found all SuiteSparse dependencies. Building with SuiteSparse") SET(SUITESPARSE ON) - ELSE (${SUITESPARSE_FOUND}) + ELSE (SUITESPARSE_FOUND) MESSAGE("-- Did not find all SuiteSparse dependencies. Building without SuiteSparse") SET(SUITESPARSE OFF) ADD_DEFINITIONS(-DCERES_NO_SUITESPARSE) - ENDIF (${SUITESPARSE_FOUND}) + ENDIF (SUITESPARSE_FOUND) ENDIF (DEFINED SUITESPARSE) # By default, if all of CXSparse's dependencies are found, Ceres is @@ -353,22 +354,22 @@ ENDIF ((NOT DEFINED CXSPARSE) OR (DEFINED CXSPARSE AND CXSPARSE)) IF (DEFINED CXSPARSE) - IF (${CXSPARSE}) + IF (CXSPARSE) IF (NOT ${CXSPARSE_FOUND}) MESSAGE(FATAL_ERROR "-- CXSparse not found.") ENDIF (NOT ${CXSPARSE_FOUND}) - ELSE (${CXSPARSE}) + ELSE (CXSPARSE) ADD_DEFINITIONS(-DCERES_NO_CXSPARSE) - ENDIF (${CXSPARSE}) + ENDIF (CXSPARSE) ELSE (DEFINED CXSPARSE) - IF (${CXSPARSE_FOUND}) + IF (CXSPARSE_FOUND) MESSAGE("-- Building with CXSparse support.") SET(CXSPARSE ON) - ELSE (${CXSPARSE_FOUND}) + ELSE (CXSPARSE_FOUND) MESSAGE("-- Building without CXSparse.") SET(CXSPARSE OFF) ADD_DEFINITIONS(-DCERES_NO_CXSPARSE) - ENDIF (${CXSPARSE_FOUND}) + ENDIF (CXSPARSE_FOUND) ENDIF (DEFINED CXSPARSE) # Google Flags @@ -376,7 +377,7 @@ "Enable Google Flags." ON) -IF (${GFLAGS}) +IF (GFLAGS) MESSAGE("-- Check for Google Flags") FIND_LIBRARY(GFLAGS_LIB NAMES gflags PATHS ${SEARCH_LIBS}) IF (NOT EXISTS ${GFLAGS_LIB}) @@ -392,10 +393,10 @@ "-DGFLAGS_INCLUDE=...") ENDIF (NOT EXISTS ${GFLAGS_INCLUDE}) MESSAGE("-- Found Google Flags header in: ${GFLAGS_INCLUDE}") -ELSE (${GFLAGS}) +ELSE (GFLAGS) MESSAGE("-- Google Flags disabled; no tests or tools will be built!") ADD_DEFINITIONS(-DCERES_NO_GFLAGS) -ENDIF (${GFLAGS}) +ENDIF (GFLAGS) # Google Logging IF (NOT ${BUILD_ANDROID}) @@ -469,11 +470,11 @@ "Enable threaded solving in Ceres (requires OpenMP)" ON) -IF (${OPENMP}) +IF (OPENMP) FIND_PACKAGE(OpenMP) -ENDIF (${OPENMP}) +ENDIF (OPENMP) -IF(${OPENMP_FOUND}) +IF (OPENMP_FOUND) MESSAGE("-- Found OpenMP.") ADD_DEFINITIONS(-DCERES_USE_OPENMP) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") @@ -488,43 +489,43 @@ ADD_DEFINITIONS(-DCERES_HAVE_PTHREAD) ADD_DEFINITIONS(-DCERES_HAVE_RWLOCK) ENDIF ("${UNIX}") -ELSE(${OPENMP_FOUND}) +ELSE (OPENMP_FOUND) MESSAGE("-- Can't find OpenMP. Disabling multithreading.") ADD_DEFINITIONS(-DCERES_NO_THREADS) -ENDIF(${OPENMP_FOUND}) +ENDIF (OPENMP_FOUND) # Disable threads in mutex.h. Someday, after there is OpenMP support in # Android, this can get removed. Also turn on a workaround for an NDK bug. -IF (${BUILD_ANDROID}) +IF (BUILD_ANDROID) ADD_DEFINITIONS(-DCERES_NO_THREADS) ADD_DEFINITIONS(-DCERES_WORK_AROUND_ANDROID_NDK_COMPILER_BUG) -ENDIF (${BUILD_ANDROID}) +ENDIF (BUILD_ANDROID) # Protocol buffers OPTION(PROTOBUF "Enable protocol buffers support." ON) -IF (${PROTOBUF}) +IF (PROTOBUF) FIND_PACKAGE(Protobuf) - IF (${PROTOBUF_FOUND}) + IF (PROTOBUF_FOUND) INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/internal) - ELSE (${PROTOBUF_FOUND}) + ELSE (PROTOBUF_FOUND) ADD_DEFINITIONS(-DCERES_NO_PROTOCOL_BUFFERS) - ENDIF (${PROTOBUF_FOUND}) -ELSE (${PROTOBUF}) + ENDIF (PROTOBUF_FOUND) +ELSE (PROTOBUF) ADD_DEFINITIONS(-DCERES_NO_PROTOCOL_BUFFERS) -ENDIF (${PROTOBUF}) +ENDIF (PROTOBUF) OPTION(DISABLE_TR1 "Don't use TR1. This replaces some hash tables with sets. Slower." OFF) -IF (${DISABLE_TR1}) +IF (DISABLE_TR1) MESSAGE("-- Replacing unordered_map/set with map/set (warning: slower!)") ADD_DEFINITIONS(-DCERES_NO_TR1) -ELSE (${DISABLE_TR1}) +ELSE (DISABLE_TR1) MESSAGE("-- Using normal TR1 unordered_map/set") # Use the std namespace for the hash<> and related templates. This may vary by # system. @@ -537,7 +538,7 @@ ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {\"") ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_END=}}\"") ENDIF (MSVC) -ENDIF (${DISABLE_TR1}) +ENDIF (DISABLE_TR1) INCLUDE_DIRECTORIES( include @@ -553,27 +554,27 @@ FILE(GLOB CERES_PUBLIC_INTERNAL_HDRS ${CMAKE_SOURCE_DIR}/include/ceres/internal/*.h) INSTALL(FILES ${CERES_PUBLIC_INTERNAL_HDRS} DESTINATION include/ceres/internal) -IF (${SUITESPARSE}) +IF (SUITESPARSE) INCLUDE_DIRECTORIES(${AMD_INCLUDE}) INCLUDE_DIRECTORIES(${CAMD_INCLUDE}) INCLUDE_DIRECTORIES(${COLAMD_INCLUDE}) INCLUDE_DIRECTORIES(${CCOLAMD_INCLUDE}) INCLUDE_DIRECTORIES(${CHOLMOD_INCLUDE}) - IF (${SUITESPARSE_CONFIG_FOUND}) + IF (SUITESPARSE_CONFIG_FOUND) INCLUDE_DIRECTORIES(${SUITESPARSE_CONFIG_INCLUDE}) - ENDIF (${SUITESPARSE_CONFIG_FOUND}) - IF (${UFCONFIG_FOUND}) + ENDIF (SUITESPARSE_CONFIG_FOUND) + IF (UFCONFIG_FOUND) INCLUDE_DIRECTORIES(${UFCONFIG_INCLUDE}) - ENDIF (${UFCONFIG_FOUND}) -ENDIF(${SUITESPARSE}) + ENDIF (UFCONFIG_FOUND) +ENDIF (SUITESPARSE) -IF (${CXSPARSE}) +IF (CXSPARSE) INCLUDE_DIRECTORIES(${CXSPARSE_INCLUDE}) -ENDIF(${CXSPARSE}) +ENDIF (CXSPARSE) -IF (${GFLAGS}) +IF (GFLAGS) INCLUDE_DIRECTORIES(${GFLAGS_INCLUDE}) -ENDIF (${GFLAGS}) +ENDIF (GFLAGS) # Change the default build type from Debug to Release, while still # supporting overriding the build type. @@ -599,10 +600,10 @@ IF (CMAKE_BUILD_TYPE STREQUAL "Release") IF (CMAKE_COMPILER_IS_GNUCXX) - IF (${BUILD_ANDROID}) + IF (BUILD_ANDROID) # TODO(keir): Figure out what flags should go here to make an optimized # native ARM binary for Android. - ELSE (${BUILD_ANDROID}) + ELSE (BUILD_ANDROID) # Linux IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux") SET (CERES_CXX_FLAGS "${CERES_CXX_FLAGS} -march=native -mtune=native") @@ -611,7 +612,7 @@ IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") SET (CERES_CXX_FLAGS "${CERES_CXX_FLAGS} -fast -msse3") ENDIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - ENDIF (${BUILD_ANDROID}) + ENDIF (BUILD_ANDROID) ENDIF (CMAKE_COMPILER_IS_GNUCXX) IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # Use of -O4 requires use of gold linker & LLVM-gold plugin, which might @@ -622,10 +623,10 @@ IF (HAVE_LTO_SUPPORT) MESSAGE(STATUS "Enabling link-time optimization (-O4)") SET(CERES_CXX_FLAGS "${CERES_CXX_FLAGS} -O4") - ELSE() + ELSE () MESSAGE(STATUS "Compiler/linker does not support link-time optimization (-O4), disabling.") ENDIF (HAVE_LTO_SUPPORT) - ENDIF() + ENDIF () ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release") SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CERES_CXX_FLAGS}") @@ -663,10 +664,10 @@ ENDIF (MSVC) # GCC is not strict enough by default, so enable most of the warnings. -IF ("${UNIX}") +IF (UNIX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter") -ENDIF ("${UNIX}") +ENDIF (UNIX) # Use a larger inlining threshold for Clang, since it hobbles Eigen, # resulting in an unreasonably slow version of the blas routines. The @@ -675,7 +676,7 @@ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600 -Wno-return-type-c-linkage") -ENDIF() +ENDIF () ADD_SUBDIRECTORY(internal/ceres) @@ -683,7 +684,7 @@ "Build User's Guide (html)" OFF) -IF (${BUILD_DOCUMENTATION}) +IF (BUILD_DOCUMENTATION) MESSAGE("-- Documentation building is enabled") # Make CMake aware of the cmake folder, in order to find 'FindSphinx.cmake' @@ -692,16 +693,16 @@ # Generate the User's Guide (html). # The corresponding target is UserGuide, but is included in ALL. ADD_SUBDIRECTORY(docs) -ENDIF (${BUILD_DOCUMENTATION}) +ENDIF (BUILD_DOCUMENTATION) OPTION(BUILD_EXAMPLES "Build examples" ON) -IF (${BUILD_EXAMPLES}) +IF (BUILD_EXAMPLES) MESSAGE("-- Build the examples.") ADD_SUBDIRECTORY(examples) -ELSE (${BUILD_EXAMPLES}) +ELSE (BUILD_EXAMPLES) MESSAGE("-- Do not build any example.") -ENDIF (${BUILD_EXAMPLES}) +ENDIF (BUILD_EXAMPLES) # Add an uninstall target to remove all installed files. CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in"
diff --git a/cmake/depend.cmake b/cmake/depend.cmake index 8796339..275a440 100644 --- a/cmake/depend.cmake +++ b/cmake/depend.cmake
@@ -52,7 +52,7 @@ "Enable Google Flags." ON) -IF (${GFLAGS}) +IF (GFLAGS) MESSAGE("-- Check for Google Flags") FIND_LIBRARY(GFLAGS_LIB NAMES gflags PATHS ${SEARCH_LIBS}) IF (NOT EXISTS ${GFLAGS_LIB}) @@ -68,7 +68,7 @@ "-DGFLAGS_INCLUDE=...") ENDIF (NOT EXISTS ${GFLAGS_INCLUDE}) MESSAGE("-- Found Google Flags header in: ${GFLAGS_INCLUDE}") -ENDIF (${GFLAGS}) +ENDIF (GFLAGS) # Google Logging MESSAGE("-- Check for Google Log")
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index dfe5589..c0b4ec0 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt
@@ -54,7 +54,7 @@ simple_bundle_adjuster.cc) TARGET_LINK_LIBRARIES(simple_bundle_adjuster ceres) -IF (${GFLAGS}) +IF (GFLAGS) ADD_EXECUTABLE(nist nist.cc) TARGET_LINK_LIBRARIES(nist ceres) @@ -70,5 +70,5 @@ denoising.cc fields_of_experts.cc) TARGET_LINK_LIBRARIES(denoising ceres) -ENDIF (${GFLAGS}) +ENDIF (GFLAGS)
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt index df67f68..45df9be 100644 --- a/internal/ceres/CMakeLists.txt +++ b/internal/ceres/CMakeLists.txt
@@ -114,25 +114,25 @@ NOT EXISTS "/etc/debian_version" AND NOT EXISTS "/etc/arch-release") SET(LIB_SUFFIX "64") -ENDIF() +ENDIF () -If (${PROTOBUF_FOUND}) +If (PROTOBUF_FOUND) PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS matrix.proto) -ENDIF (${PROTOBUF_FOUND}) +ENDIF (PROTOBUF_FOUND) # Also depend on the header files so that they appear in IDEs. FILE(GLOB CERES_INTERNAL_HDRS *.h) # Include the specialized schur solvers. -IF (${SCHUR_SPECIALIZATIONS}) +IF (SCHUR_SPECIALIZATIONS) FILE(GLOB CERES_INTERNAL_SCHUR_FILES generated/*.cc) -ELSE (${SCHUR_SPECIALIZATIONS}) +ELSE (SCHUR_SPECIALIZATIONS) # Only the fully dynamic solver. The build is much faster this way. FILE(GLOB CERES_INTERNAL_SCHUR_FILES generated/schur_eliminator_d_d_d.cc) -ENDIF (${SCHUR_SPECIALIZATIONS}) +ENDIF (SCHUR_SPECIALIZATIONS) # For Android, use the internal Glog implementation. -IF (${BUILD_ANDROID}) +IF (BUILD_ANDROID) ADD_LIBRARY(miniglog STATIC miniglog/glog/logging.cc) @@ -145,15 +145,15 @@ RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) -ENDIF (${BUILD_ANDROID}) +ENDIF (BUILD_ANDROID) SET(CERES_LIBRARY_DEPENDENCIES ${GLOG_LIB}) -IF (${GFLAGS}) +IF (GFLAGS) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${GFLAGS_LIB}) -ENDIF (${GFLAGS}) +ENDIF (GFLAGS) -IF (${SUITESPARSE_FOUND}) +IF (SUITESPARSE_FOUND) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CHOLMOD_LIB}) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CCOLAMD_LIB}) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CAMD_LIB}) @@ -172,21 +172,21 @@ IF (EXISTS ${BLAS_LIB}) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${BLAS_LIB}) ENDIF (EXISTS ${BLAS_LIB}) -ENDIF (${SUITESPARSE_FOUND}) +ENDIF (SUITESPARSE_FOUND) -IF (${CXSPARSE_FOUND}) +IF (CXSPARSE_FOUND) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${CXSPARSE_LIB}) -ENDIF (${CXSPARSE_FOUND}) +ENDIF (CXSPARSE_FOUND) -IF (${OPENMP_FOUND}) +IF (OPENMP_FOUND) IF (NOT MSVC) LIST(APPEND CERES_LIBRARY_DEPENDENCIES gomp) ENDIF (NOT MSVC) -ENDIF (${OPENMP_FOUND}) +ENDIF (OPENMP_FOUND) -IF (${PROTOBUF_FOUND}) +IF (PROTOBUF_FOUND) LIST(APPEND CERES_LIBRARY_DEPENDENCIES ${PROTOBUF_LIBRARY}) -ENDIF (${PROTOBUF_FOUND}) +ENDIF (PROTOBUF_FOUND) SET(CERES_LIBRARY_SOURCE ${PROTO_SRCS} @@ -206,7 +206,7 @@ # Don't build a DLL on MSVC. Supporting Ceres as a DLL on Windows involves # nontrivial changes that we haven't made yet. -IF (NOT MSVC AND NOT ${BUILD_ANDROID}) +IF (NOT MSVC AND NOT BUILD_ANDROID) ADD_LIBRARY(ceres_shared SHARED ${CERES_LIBRARY_SOURCE}) TARGET_LINK_LIBRARIES(ceres_shared ${CERES_LIBRARY_DEPENDENCIES}) SET_TARGET_PROPERTIES(ceres_shared PROPERTIES @@ -219,9 +219,9 @@ LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) -ENDIF (NOT MSVC AND NOT ${BUILD_ANDROID}) +ENDIF (NOT MSVC AND NOT BUILD_ANDROID) -IF (${BUILD_TESTING} AND ${GFLAGS}) +IF (BUILD_TESTING AND GFLAGS) ADD_LIBRARY(gtest gmock_gtest_all.cc gmock_main.cc) ADD_LIBRARY(test_util evaluator_test_utils.cc @@ -287,9 +287,9 @@ # TODO(sameeragarwal): This test should ultimately be made # independent of SuiteSparse. - IF (${SUITESPARSE_FOUND}) + IF (SUITESPARSE_FOUND) CERES_TEST(compressed_col_sparse_matrix_utils) - ENDIF (${SUITESPARSE_FOUND}) + ENDIF (SUITESPARSE_FOUND) CERES_TEST(symmetric_linear_solver) CERES_TEST(triplet_sparse_matrix) @@ -300,4 +300,4 @@ # Put the large end to end test last. CERES_TEST(system) -ENDIF (${BUILD_TESTING} AND ${GFLAGS}) +ENDIF (BUILD_TESTING AND GFLAGS)