Warning, /frameworks/extra-cmake-modules/find-modules/FindKF5.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
0002 # SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gmail.com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005
0006 #[=======================================================================[.rst:
0007 FindKF5
0008 -------
0009
0010 Find KDE Frameworks 5 with a single find_package() call.
0011
0012 This will use the package config files provided by the individual frameworks.
0013 For example, if you wish to find KArchive, which presents itself to CMake as
0014 KF5Archive (ie: you would do ``find_package(KF5Archive)`` to find it
0015 directly), you can do
0016
0017 .. code-block:: cmake
0018
0019 find_package(KF5 COMPONENTS Archive)
0020
0021 If all the required components (those given in the COMPONENTS argument, but
0022 not those given in the OPTIONAL_COMPONENTS argument) are found, ``KF5_FOUND``
0023 will be set to true. Otherwise, it will be set to false.
0024
0025 Since pre-1.0.0.
0026 #]=======================================================================]
0027
0028 include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
0029
0030 ecm_find_package_version_check(KF5)
0031
0032 if (NOT KF5_FIND_COMPONENTS)
0033 set(KF5_NOT_FOUND_MESSAGE "The KF5 package requires at least one component")
0034 set(KF5_FOUND False)
0035 return()
0036 endif()
0037
0038 set(_quiet_arg)
0039 if (KF5_FIND_QUIETLY)
0040 set(_quiet_arg QUIET)
0041 endif()
0042 set(_exact_arg)
0043 if (KF5_FIND_EXACT)
0044 set(_exact_arg EXACT)
0045 endif()
0046
0047 include(FindPackageHandleStandardArgs)
0048 include(FeatureSummary)
0049
0050 set(KF5_VERSION)
0051 foreach(_module ${KF5_FIND_COMPONENTS})
0052 find_package(KF5${_module} ${KF5_FIND_VERSION}
0053 ${_exact_arg} ${_quiet_arg}
0054 CONFIG
0055 )
0056 # CMake >= 3.17 wants to be explicitly told we are fine with name mismatch here
0057 set(_name_mismatched_arg)
0058 if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
0059 set(_name_mismatched_arg NAME_MISMATCHED)
0060 endif()
0061 find_package_handle_standard_args(KF5${_module} CONFIG_MODE ${_name_mismatched_arg})
0062 if (KF5_FIND_REQUIRED AND KF5_FIND_REQUIRED_${_module})
0063 # If the component was required, we tell FeatureSummary so that it
0064 # will be displayed in the correct list. We do not use the REQUIRED
0065 # argument of find_package() to allow all the missing frameworks
0066 # to be listed at once (fphsa will error out at the end of this file
0067 # anyway).
0068 set_package_properties(KF5${_module} PROPERTIES TYPE REQUIRED)
0069 endif()
0070
0071 # Component-based find modules are expected to set
0072 # <module>_<component>_FOUND and <module>_<component>_VERSION variables,
0073 # but the find_package calls above will have set KF5<component>_*
0074 # variables.
0075 set(KF5_${_module}_FOUND ${KF5${_module}_FOUND})
0076 if(KF5${_module}_FOUND)
0077 set(KF5_${_module}_VERSION ${KF5${_module}_VERSION})
0078
0079 # make KF5_VERSION the minimum found version
0080 if(NOT KF5_VERSION OR KF5_VERSION VERSION_GREATER KF5${_module}_VERSION)
0081 set(KF5_VERSION ${KF5${_module}_VERSION})
0082 endif()
0083 endif()
0084 endforeach()
0085
0086 # Annoyingly, find_package_handle_standard_args requires you to provide
0087 # REQUIRED_VARS even when using HANDLE_COMPONENTS, but all we actually
0088 # care about is whether the required components were found. So we provide
0089 # a dummy variable that is just set to something that will be printed
0090 # on success.
0091 set(_dummy_req_var "success")
0092
0093 find_package_handle_standard_args(KF5
0094 FOUND_VAR
0095 KF5_FOUND
0096 REQUIRED_VARS
0097 _dummy_req_var
0098 VERSION_VAR
0099 KF5_VERSION
0100 HANDLE_COMPONENTS
0101 )
0102