summaryrefslogtreecommitdiffstats
path: root/cmake/FindWrapHarfbuzz.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindWrapHarfbuzz.cmake')
-rw-r--r--cmake/FindWrapHarfbuzz.cmake56
1 files changed, 14 insertions, 42 deletions
diff --git a/cmake/FindWrapHarfbuzz.cmake b/cmake/FindWrapHarfbuzz.cmake
index f7845b28bd..eac95b669d 100644
--- a/cmake/FindWrapHarfbuzz.cmake
+++ b/cmake/FindWrapHarfbuzz.cmake
@@ -1,45 +1,17 @@
-# We can't create the same interface imported target multiple times, CMake will complain if we do
-# that. This can happen if the find_package call is done in multiple different subdirectories.
-if(TARGET WrapHarfbuzz::WrapHarfbuzz)
- set(WrapHarfbuzz_FOUND ON)
- return()
-endif()
-
-set(WrapHarfbuzz_FOUND OFF)
-
-find_package(harfbuzz)
+include(QtFindWrapHelper NO_POLICY_SCOPE)
-# Gentoo has some buggy version of a harfbuzz Config file. Check if include paths are valid.
-set(__harfbuzz_target_name "harfbuzz::harfbuzz")
-if(harfbuzz_FOUND AND TARGET "${__harfbuzz_target_name}")
- get_property(__harfbuzz_include_paths TARGET "${__harfbuzz_target_name}"
- PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
- foreach(__harfbuzz_include_dir ${__harfbuzz_include_paths})
- if(NOT EXISTS "${__harfbuzz_include_dir}")
- # Must be the broken Gentoo harfbuzzConfig.cmake file. Try to use pkg-config instead.
- set(__harfbuzz_broken_config_file TRUE)
- break()
- endif()
- endforeach()
+set(_qt_wrap_use_bundled FALSE)
+if(QT_FEATURE_harfbuzz AND NOT QT_FEATURE_system_harfbuzz)
+ set(_qt_wrap_use_bundled TRUE)
endif()
-if(__harfbuzz_broken_config_file)
- find_package(PkgConfig)
-
- pkg_check_modules(harfbuzz harfbuzz IMPORTED_TARGET)
- set(__harfbuzz_target_name "PkgConfig::harfbuzz")
-
- if (NOT TARGET "${__harfbuzz_target_name}")
- set(harfbuzz_FOUND 0)
- endif()
-endif()
-
-if(TARGET "${__harfbuzz_target_name}")
- set(WrapHarfbuzz_FOUND ON)
-
- add_library(WrapHarfbuzz::WrapHarfbuzz INTERFACE IMPORTED)
- target_link_libraries(WrapHarfbuzz::WrapHarfbuzz INTERFACE ${__harfbuzz_target_name})
-endif()
-unset(__harfbuzz_target_name)
-unset(__harfbuzz_include_dir)
-unset(__harfbuzz_broken_config_file)
+qt_find_package_system_or_bundled(wrap_harfbuzz
+ FRIENDLY_PACKAGE_NAME "Harfbuzz"
+ WRAP_PACKAGE_TARGET "WrapHarfbuzz::WrapHarfbuzz"
+ WRAP_PACKAGE_FOUND_VAR_NAME "WrapHarfbuzz_FOUND"
+ BUNDLED_PACKAGE_NAME "Qt6BundledHarfbuzz"
+ BUNDLED_PACKAGE_TARGET "Qt6::BundledHarfbuzz"
+ SYSTEM_PACKAGE_NAME "WrapSystemHarfbuzz"
+ SYSTEM_PACKAGE_TARGET "WrapSystemHarfbuzz::WrapSystemHarfbuzz"
+ USE_BUNDLED_PACKAGE "${_qt_wrap_use_bundled}"
+)