diff --git a/c++/orcConfig.cmake.in b/c++/orcConfig.cmake.in index c794822569..91d346d28f 100644 --- a/c++/orcConfig.cmake.in +++ b/c++/orcConfig.cmake.in @@ -35,24 +35,15 @@ set(ORC_SYSTEM_DEPENDENCIES "@ORC_SYSTEM_DEPENDENCIES@") -if(DEFINED CMAKE_MODULE_PATH) - set(ORC_CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH}) -else() - unset(ORC_CMAKE_MODULE_PATH_OLD) -endif() -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") - include(CMakeFindDependencyMacro) -foreach(dependency ${ORC_SYSTEM_DEPENDENCIES}) - find_dependency(${dependency}) -endforeach() - -if(DEFINED ORC_CMAKE_MODULE_PATH_OLD) - set(CMAKE_MODULE_PATH ${ORC_CMAKE_MODULE_PATH_OLD}) - unset(ORC_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 orc_FOUND orc_NOT_FOUND_MESSAGE) + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + foreach(dependency ${ORC_SYSTEM_DEPENDENCIES}) + find_dependency(${dependency}) + endforeach() +endblock() include("${CMAKE_CURRENT_LIST_DIR}/orcTargets.cmake")