diff --git a/src/iceberg/iceberg-config.cmake.in b/src/iceberg/iceberg-config.cmake.in index 4f440362e..3587f5012 100644 --- a/src/iceberg/iceberg-config.cmake.in +++ b/src/iceberg/iceberg-config.cmake.in @@ -47,23 +47,14 @@ set(ICEBERG_FIND_EXTRA_ARGS_AWSSDK "@ICEBERG_FIND_EXTRA_ARGS_AWSSDK@") include(CMakeFindDependencyMacro) macro(iceberg_find_dependencies dependencies) - if(DEFINED CMAKE_MODULE_PATH) - set(ICEBERG_CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH}) - else() - unset(ICEBERG_CMAKE_MODULE_PATH_OLD) - endif() - set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") - - foreach(dependency ${dependencies}) - find_dependency(${dependency} ${ICEBERG_FIND_EXTRA_ARGS_${dependency}}) - endforeach() - - if(DEFINED ICEBERG_CMAKE_MODULE_PATH_OLD) - set(CMAKE_MODULE_PATH ${ICEBERG_CMAKE_MODULE_PATH_OLD}) - unset(ICEBERG_CMAKE_MODULE_PATH_OLD) - else() - unset(CMAKE_MODULE_PATH) - endif() + # find_dependency() returns from this file when a dependency is not found. + # Keep changes to CMAKE_MODULE_PATH local even on that early return. + block(SCOPE_FOR VARIABLES PROPAGATE iceberg_FOUND iceberg_NOT_FOUND_MESSAGE) + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + foreach(dependency ${dependencies}) + find_dependency(${dependency} ${ICEBERG_FIND_EXTRA_ARGS_${dependency}}) + endforeach() + endblock() endmacro() macro(iceberg_find_components components)