Set CMP0057 policy for IN_LIST operator in FindSuiteSparse.cmake A recent change introduced some uses of `IN_LIST` in FindSuiteSparse.cmake, but this is only introduced in cmake 3.3 and breaks downstream projects that set cmake_minimum_required() to anything lower. This commit locally sets CMP0057, which enables the `IN_LIST` operator and fixes the build for these projects. Primarily motivated by colmap, which sets cmake_minimum_required(3.0) and is currently broken: https://github.com/colmap/colmap/issues/1451 Change-Id: I9580c86f56248611326a932b8650b9048fb0ff14
diff --git a/cmake/FindSuiteSparse.cmake b/cmake/FindSuiteSparse.cmake index b54cea4..08b3f17 100644 --- a/cmake/FindSuiteSparse.cmake +++ b/cmake/FindSuiteSparse.cmake
@@ -98,6 +98,11 @@ return () endif (SuiteSparse_FOUND) +# Push CMP0057 to enable support for IN_LIST, when cmake_minimum_required is +# set to <3.3. +cmake_policy (PUSH) +cmake_policy (SET CMP0057 NEW) + if (NOT SuiteSparse_FIND_COMPONENTS) set (SuiteSparse_FIND_COMPONENTS AMD @@ -111,17 +116,17 @@ include (CheckLibraryExists) -# CHOLMOD depends on AMD, CAMD, CCOLAMD, and COLAMD +# CHOLMOD depends on AMD, CAMD, CCOLAMD, and COLAMD. if (CHOLMOD IN_LIST SuiteSparse_FIND_COMPONENTS) list (APPEND SuiteSparse_FIND_COMPONENTS AMD CAMD CCOLAMD COLAMD) endif (CHOLMOD IN_LIST SuiteSparse_FIND_COMPONENTS) -# SPQR depends on CHOLMOD +# SPQR depends on CHOLMOD. if (SPQR IN_LIST SuiteSparse_FIND_COMPONENTS) list (APPEND SuiteSparse_FIND_COMPONENTS CHOLMOD) endif (SPQR IN_LIST SuiteSparse_FIND_COMPONENTS) -# Do note list components multiple times +# Do not list components multiple times. list (REMOVE_DUPLICATES SuiteSparse_FIND_COMPONENTS) # Reset CALLERS_CMAKE_FIND_LIBRARY_PREFIXES to its value when @@ -458,3 +463,6 @@ FAIL_MESSAGE "Failed to find some/all required components of SuiteSparse." HANDLE_COMPONENTS) endif (SuiteSparse_FOUND) + +# Pop CMP0057. +cmake_policy (POP)