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 )