aboutsummaryrefslogtreecommitdiff
path: root/modules/ECMFindQmlModule.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ECMFindQmlModule.cmake.in')
-rw-r--r--modules/ECMFindQmlModule.cmake.in43
1 files changed, 43 insertions, 0 deletions
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 <aleixpol@blue-systems.com>
+#
+# 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
+)
+
+