Warning, /frameworks/extra-cmake-modules/modules/ECMFindQmlModule.cmake.in is written in an unsupported language. File is not indexed.
0001 #=============================================================================
0002 # SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003 # SPDX-FileCopyrightText: 2023 Alexander Lohnau <alexander.lohnau@gmx.de>
0004 #
0005 # SPDX-License-Identifier: BSD-3-Clause
0006 #=============================================================================
0007
0008 include(FindPackageHandleStandardArgs)
0009 include("${ECM_MODULE_DIR}/QtVersionOption.cmake")
0010 include("${ECM_MODULE_DIR}/ECMQueryQt.cmake")
0011
0012 if (QT_MAJOR_VERSION EQUAL "6")
0013 include(${ECM_MODULE_DIR}/ECMQmlModule.cmake)
0014 # Get the qmldir file
0015 _ecm_qmlmodule_uri_to_path(MODULEDIR "@MODULE_NAME@" "@VERSION@")
0016 set(KDE_QMLDIR "${KDE_INSTALL_FULL_QMLDIR}/${MODULEDIR}")
0017 find_file(QMLDIR_FILE qmldir ${KDE_QMLDIR} NO_CACHE)
0018 if (NOT QMLDIR_FILE) # Check the install destination, the QT_PLUGIN_PATH might not be set up correctly at this point
0019 # Check the Qt installation
0020 ecm_query_qt(qt_qml_dir QT_INSTALL_QML)
0021 set(QMLDIR_FILE "${qt_qml_dir}/${MODULEDIR}/qmldir")
0022 if (NOT EXISTS "${QMLDIR_FILE}")
0023 message(WARNING "qmldir not found in ${KDE_QMLDIR} or ${QMLDIR_FILE}")
0024 set(MODULE_NOTFOUND TRUE)
0025 endif()
0026 endif()
0027
0028 if (NOT MODULE_NOTFOUND AND NOT "@VERSION@" STREQUAL "") # Check if we even need to check the version
0029 find_file(VERSION_FILE kde-qmlmodule.version ${KDE_QMLDIR} NO_CACHE)
0030 if (VERSION_FILE)
0031 file(READ "${VERSION_FILE}" FILE_CONTENTS)
0032 if ("${FILE_CONTENTS}" MATCHES "([0-9]+(\\.[0-9]+)*)")
0033 if ("${CMAKE_MATCH_1}" VERSION_GREATER_EQUAL "@VERSION@")
0034 set(@GENMODULE@_FOUND TRUE)
0035 endif()
0036 set(@GENMODULE@_VERSION "${CMAKE_MATCH_1}")
0037 endif()
0038 else()
0039 file(READ "${QMLDIR_FILE}" FILE_CONTENTS)
0040 if ("${FILE_CONTENTS}" MATCHES "# KDE-qmldir-Version: ([0-9]+(\\.[0-9]+)*)")
0041 if ("${CMAKE_MATCH_1}" VERSION_GREATER_EQUAL "@VERSION@")
0042 set(@GENMODULE@_FOUND TRUE)
0043 endif()
0044 set(@GENMODULE@_VERSION "${CMAKE_MATCH_1}")
0045 endif()
0046 endif()
0047 elseif(NOT MODULE_NOTFOUND) # if we don't have a specific version and the qmldir file was found, we are all set
0048 set(@GENMODULE@_FOUND TRUE)
0049 endif()
0050 endif()
0051
0052 # If we haven't checked the version above, use qmlplugindump
0053 if (NOT CMAKE_CROSSCOMPILING AND NOT MODULE_NOTFOUND AND NOT @GENMODULE@_FOUND)
0054 if (QT_MAJOR_VERSION EQUAL "6")
0055 find_package(Qt6 COMPONENTS QmlTools REQUIRED)
0056 get_target_property(QMLPLUGINDUMP_PROGRAM Qt6::qmlplugindump LOCATION)
0057 else()
0058 ecm_query_qt(qt_binaries_dir QT_HOST_BINS)
0059 find_program(QMLPLUGINDUMP_PROGRAM NAMES qmlplugindump HINTS ${qt_binaries_dir})
0060 endif()
0061
0062 set(ENV{QML2_IMPORT_PATH} ${KDE_INSTALL_FULL_QMLDIR})
0063 execute_process(COMMAND "${QMLPLUGINDUMP_PROGRAM}" "@MODULE_NAME@" "@VERSION@" ERROR_VARIABLE ERRORS_OUTPUT OUTPUT_VARIABLE DISREGARD_VARIABLE RESULT_VARIABLE ExitCode TIMEOUT 30)
0064 if(ExitCode EQUAL 0)
0065 set(@GENMODULE@_FOUND TRUE)
0066 else()
0067 message(STATUS "qmlplugindump failed for @MODULE_NAME@.")
0068 set(@GENMODULE@_FOUND FALSE)
0069 endif()
0070 endif()
0071
0072 set(@GENMODULE@_FOUND ${@GENMODULE@_FOUND} PARENT_SCOPE)
0073 set(@GENMODULE@_VERSION ${@GENMODULE@_VERSION} PARENT_SCOPE)
0074 find_package_handle_standard_args(@GENMODULE@
0075 VERSION_VAR @GENMODULE@_VERSION
0076 REQUIRED_VARS @GENMODULE@_FOUND
0077 HANDLE_COMPONENTS
0078 )