aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/ECMPackageConfigHelpers.cmake48
1 files changed, 26 insertions, 22 deletions
diff --git a/modules/ECMPackageConfigHelpers.cmake b/modules/ECMPackageConfigHelpers.cmake
index 78017393..ee6bfd6f 100644
--- a/modules/ECMPackageConfigHelpers.cmake
+++ b/modules/ECMPackageConfigHelpers.cmake
@@ -100,31 +100,35 @@ macro(set_and_check _var _file)
endif()
endmacro()
-macro(find_dependency dep version)
- if (NOT \${dep}_FOUND)
+include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _CMakeFindDependencyMacro_FOUND)
- set(exact_arg)
- if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT)
- set(exact_arg EXACT)
- endif()
- set(quiet_arg)
- if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
- set(quiet_arg QUIET)
- endif()
- set(required_arg)
- if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
- set(required_arg REQUIRED)
- endif()
-
- find_package(\${dep} \${version} \${exact_arg} \${quiet_arg} \${required_arg})
+if (NOT _CMakeFindDependencyMacro_FOUND)
+ macro(find_dependency dep version)
if (NOT \${dep}_FOUND)
- set(\${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE \"\${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency \${dep} could not be found.\")
+
+ set(exact_arg)
+ if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION_EXACT)
+ set(exact_arg EXACT)
+ endif()
+ set(quiet_arg)
+ if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
+ set(quiet_arg QUIET)
+ endif()
+ set(required_arg)
+ if(\${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
+ set(required_arg REQUIRED)
+ endif()
+
+ find_package(\${dep} \${version} \${exact_arg} \${quiet_arg} \${required_arg})
+ if (NOT \${dep}_FOUND)
+ set(\${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE \"\${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency \${dep} could not be found.\")
+ endif()
+ set(required_arg)
+ set(quiet_arg)
+ set(exact_arg)
endif()
- set(required_arg)
- set(quiet_arg)
- set(exact_arg)
- endif()
-endmacro()
+ endmacro()
+endif()
")
endif()