From 6fefacf8c4efe8b35aa543514892cbf38cf7b4d9 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Mon, 2 Aug 2021 14:56:56 +0200 Subject: Rename ECMQMLModules.cmake to ECMFindQmlModule.cmake To avoid ambiguity with ECMQmlModule.cmake. To preserve backward compatibility, we keep a version around of ECMQMLModules.cmake that warns a user of it being moved and includes the new file. --- modules/ECMFindQMLModule.cmake.in | 43 ------------------------------ modules/ECMFindQmlModule.cmake | 48 +++++++++++++++++++++++++++++++++ modules/ECMFindQmlModule.cmake.in | 43 ++++++++++++++++++++++++++++++ modules/ECMQMLModules.cmake | 50 +++++------------------------------ tests/CMakeLists.txt | 2 +- tests/ECMFindQmlModule/CMakeLists.txt | 12 +++++++++ tests/ECMFindQmlModule/main.c | 4 +++ tests/ECMQMLModules/CMakeLists.txt | 12 --------- tests/ECMQMLModules/main.c | 4 --- 9 files changed, 114 insertions(+), 104 deletions(-) delete mode 100644 modules/ECMFindQMLModule.cmake.in create mode 100644 modules/ECMFindQmlModule.cmake create mode 100644 modules/ECMFindQmlModule.cmake.in create mode 100644 tests/ECMFindQmlModule/CMakeLists.txt create mode 100644 tests/ECMFindQmlModule/main.c delete mode 100644 tests/ECMQMLModules/CMakeLists.txt delete mode 100644 tests/ECMQMLModules/main.c diff --git a/modules/ECMFindQMLModule.cmake.in b/modules/ECMFindQMLModule.cmake.in deleted file mode 100644 index 7cd737b2..00000000 --- a/modules/ECMFindQMLModule.cmake.in +++ /dev/null @@ -1,43 +0,0 @@ -#============================================================================= -# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez -# -# SPDX-License-Identifier: BSD-3-Clause -#============================================================================= - -include(FindPackageHandleStandardArgs) -include("${ECM_MODULE_DIR}/QtVersionOption.cmake") - -if (QT_MAJOR_VERSION EQUAL "5") - include("${ECM_MODULE_DIR}/ECMQueryQmake.cmake") - query_qmake(qt_binaries_dir QT_HOST_BINS) - find_program(QMLPLUGINDUMP_PROGRAM NAMES qmlplugindump HINTS ${qt_binaries_dir}) -elseif (QT_MAJOR_VERSION EQUAL "6") - find_package(Qt6QmlTools REQUIRED) - get_target_property(QMLPLUGINDUMP_PROGRAM Qt6::qmlplugindump LOCATION) -endif() - -if(NOT QMLPLUGINDUMP_PROGRAM) - message(WARNING "Could not find qmlplugindump. It is necessary to look up qml module dependencies.") -endif() - -execute_process(COMMAND "${QMLPLUGINDUMP_PROGRAM}" "@MODULE_NAME@" "@VERSION@" ERROR_VARIABLE ERRORS_OUTPUT OUTPUT_VARIABLE DISREGARD_VARIABLE RESULT_VARIABLE ExitCode TIMEOUT 30) - -if(ExitCode EQUAL 0) - set(@GENMODULE@_FOUND TRUE) - set(@GENMODULE@_VERSION "${PACKAGE_FIND_VERSION}") -else() - message(STATUS "qmlplugindump failed for @MODULE_NAME@.") - set(@GENMODULE@_FOUND FALSE) -endif() - -find_package_handle_standard_args(@GENMODULE@ - FOUND_VAR - @GENMODULE@_FOUND - REQUIRED_VARS - @GENMODULE@_FOUND - VERSION_VAR - @GENMODULE@_VERSION - HANDLE_COMPONENTS -) - - diff --git a/modules/ECMFindQmlModule.cmake b/modules/ECMFindQmlModule.cmake new file mode 100644 index 00000000..5d961af7 --- /dev/null +++ b/modules/ECMFindQmlModule.cmake @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez +# +# SPDX-License-Identifier: BSD-3-Clause + +#[=======================================================================[.rst: +ECMFindQmlModule +---------------- + +Find QML import modules through a find_qmlmodule() call. +It uses the qmlplugindump application to find the plugins and sets them up as +runtime dependencies. + +This is useful so that when we configure a project we are noified when some +QML imports are not present in the system, thus having the application compilable +but fail at runtime. + +:: + + ecm_find_qmlmodule( ...) + +Any further arguments passed will be forwarded into a find_package() call. See +find_package() documentation for more information. + +Usage example: + +.. code-block:: cmake + + ecm_find_qmlmodule(org.kde.kirigami 2.1) + +Since 5.38.0. +#]=======================================================================] + +set(MODULES_DIR ${CMAKE_CURRENT_LIST_DIR}) + +function(ecm_find_qmlmodule MODULE_NAME VERSION) + set(GENMODULE "${MODULE_NAME}-QMLModule") + + configure_file("${MODULES_DIR}/ECMFindQmlModule.cmake.in" "Find${GENMODULE}.cmake" @ONLY) + + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}" ${CMAKE_MODULE_PATH}) + find_package(${GENMODULE} ${ARGN}) + + if(COMMAND set_package_properties) + set_package_properties(${GENMODULE} PROPERTIES + DESCRIPTION "QML module '${MODULE_NAME}' is a runtime dependency." + TYPE RUNTIME) + endif() +endfunction() diff --git a/modules/ECMFindQmlModule.cmake.in b/modules/ECMFindQmlModule.cmake.in new file mode 100644 index 00000000..7cd737b2 --- /dev/null +++ b/modules/ECMFindQmlModule.cmake.in @@ -0,0 +1,43 @@ +#============================================================================= +# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez +# +# SPDX-License-Identifier: BSD-3-Clause +#============================================================================= + +include(FindPackageHandleStandardArgs) +include("${ECM_MODULE_DIR}/QtVersionOption.cmake") + +if (QT_MAJOR_VERSION EQUAL "5") + include("${ECM_MODULE_DIR}/ECMQueryQmake.cmake") + query_qmake(qt_binaries_dir QT_HOST_BINS) + find_program(QMLPLUGINDUMP_PROGRAM NAMES qmlplugindump HINTS ${qt_binaries_dir}) +elseif (QT_MAJOR_VERSION EQUAL "6") + find_package(Qt6QmlTools REQUIRED) + get_target_property(QMLPLUGINDUMP_PROGRAM Qt6::qmlplugindump LOCATION) +endif() + +if(NOT QMLPLUGINDUMP_PROGRAM) + message(WARNING "Could not find qmlplugindump. It is necessary to look up qml module dependencies.") +endif() + +execute_process(COMMAND "${QMLPLUGINDUMP_PROGRAM}" "@MODULE_NAME@" "@VERSION@" ERROR_VARIABLE ERRORS_OUTPUT OUTPUT_VARIABLE DISREGARD_VARIABLE RESULT_VARIABLE ExitCode TIMEOUT 30) + +if(ExitCode EQUAL 0) + set(@GENMODULE@_FOUND TRUE) + set(@GENMODULE@_VERSION "${PACKAGE_FIND_VERSION}") +else() + message(STATUS "qmlplugindump failed for @MODULE_NAME@.") + set(@GENMODULE@_FOUND FALSE) +endif() + +find_package_handle_standard_args(@GENMODULE@ + FOUND_VAR + @GENMODULE@_FOUND + REQUIRED_VARS + @GENMODULE@_FOUND + VERSION_VAR + @GENMODULE@_VERSION + HANDLE_COMPONENTS +) + + diff --git a/modules/ECMQMLModules.cmake b/modules/ECMQMLModules.cmake index 58dbde82..9065e5f0 100644 --- a/modules/ECMQMLModules.cmake +++ b/modules/ECMQMLModules.cmake @@ -1,48 +1,10 @@ -# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez +# +# SPDX-FileCopyrightText: 2021 Arjen Hiemstra # # SPDX-License-Identifier: BSD-3-Clause -#[=======================================================================[.rst: -ECMQMLModules -------------- - -Find QML import modules through a find_qmlmodule() call. -It uses the qmlplugindump application to find the plugins and sets them up as -runtime dependencies. - -This is useful so that when we configure a project we are noified when some -QML imports are not present in the system, thus having the application compilable -but fail at runtime. - -:: - - ecm_find_qmlmodule( ...) - -Any further arguments passed will be forwarded into a find_package() call. See -find_package() documentation for more information. - -Usage example: - -.. code-block:: cmake - - ecm_find_qmlmodule(org.kde.kirigami 2.1) - -Since 5.38.0. -#]=======================================================================] - -set(MODULES_DIR ${CMAKE_CURRENT_LIST_DIR}) - -function(ecm_find_qmlmodule MODULE_NAME VERSION) - set(GENMODULE "${MODULE_NAME}-QMLModule") - - configure_file("${MODULES_DIR}/ECMFindQMLModule.cmake.in" "Find${GENMODULE}.cmake" @ONLY) - - set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}" ${CMAKE_MODULE_PATH}) - find_package(${GENMODULE} ${ARGN}) +if (${ECM_GLOBAL_FIND_VERSION} VERSION_GREATER_EQUAL 5.88) + message(DEPRECATION "ECMQMLModules.cmake is deprecated since 5.88.0, please use ECMFindQmlModule.cmake instead") +endif() - if(COMMAND set_package_properties) - set_package_properties(${GENMODULE} PROPERTIES - DESCRIPTION "QML module '${MODULE_NAME}' is a runtime dependency." - TYPE RUNTIME) - endif() -endfunction() +include(ECMFindQmlModule) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7ffcfd03..24b4cd40 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -208,7 +208,7 @@ set_package_properties( PURPOSE "Required to run tests for the ECMQMLModules module." ) if (TARGET Qt5::Quick) - add_test_macro(ECMQMLModules dummy) + add_test_macro(ECMFindQmlModule dummy) set(ECMQmlModuleTest.static_full_EXTRA_OPTIONS --build-target install diff --git a/tests/ECMFindQmlModule/CMakeLists.txt b/tests/ECMFindQmlModule/CMakeLists.txt new file mode 100644 index 00000000..c91d0385 --- /dev/null +++ b/tests/ECMFindQmlModule/CMakeLists.txt @@ -0,0 +1,12 @@ +project(extra-cmake-modules) +cmake_minimum_required(VERSION 3.5) + +set(ECM_FIND_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../find-modules) +set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../modules) +set(CMAKE_MODULE_PATH "${ECM_FIND_MODULE_DIR}" "${ECM_MODULE_DIR}") + +include(ECMFindQmlModule) + +ecm_find_qmlmodule(QtQuick 2.1) + +add_executable(dummy main.c) diff --git a/tests/ECMFindQmlModule/main.c b/tests/ECMFindQmlModule/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/ECMFindQmlModule/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/tests/ECMQMLModules/CMakeLists.txt b/tests/ECMQMLModules/CMakeLists.txt deleted file mode 100644 index 240352e2..00000000 --- a/tests/ECMQMLModules/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -project(extra-cmake-modules) -cmake_minimum_required(VERSION 3.5) - -set(ECM_FIND_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../find-modules) -set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../modules) -set(CMAKE_MODULE_PATH "${ECM_FIND_MODULE_DIR}" "${ECM_MODULE_DIR}") - -include(ECMQMLModules) - -ecm_find_qmlmodule(QtQuick 2.1) - -add_executable(dummy main.c) diff --git a/tests/ECMQMLModules/main.c b/tests/ECMQMLModules/main.c deleted file mode 100644 index c13815ce..00000000 --- a/tests/ECMQMLModules/main.c +++ /dev/null @@ -1,4 +0,0 @@ -int main() -{ - return 0; -} -- cgit v1.2.1