summaryrefslogtreecommitdiffstats
path: root/cmake/QtInterfaceFrameworkSetup.cmake
blob: 38d88c6575b4d4e6cd05ff1e0544f7d771dd4068 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function(qt_config_python3_package_test name)
    if(DEFINED "TEST_${name}")
        return()
    endif()

    cmake_parse_arguments(arg "" "LABEL;PACKAGE;CONDITION;VERSION"
        "" ${ARGN})

    if(NOT arg_CONDITION)
        set(arg_CONDITION VERSION_EQUAL)
    endif()

    message(STATUS "Performing Test ${arg_LABEL}")

    if (Python3_VERSION VERSION_LESS "3.8")
        execute_process(COMMAND ${Python3_EXECUTABLE} "-c" "import pkg_resources; print(pkg_resources.get_distribution(\"${arg_PACKAGE}\").version)"
                        RESULT_VARIABLE ${name}_RESULT
                        OUTPUT_VARIABLE ${name}_VERSION
                        ERROR_QUIET
                       )
    else()
        execute_process(COMMAND ${Python3_EXECUTABLE} "-c" "import importlib.metadata; print(importlib.metadata.version(\"${arg_PACKAGE}\"))"
                        RESULT_VARIABLE ${name}_RESULT
                        OUTPUT_VARIABLE ${name}_VERSION
                        ERROR_QUIET
                       )
    endif()

    set(HAVE_${name} FALSE)
    set(status_label "Failed")

    if(${${name}_RESULT} EQUAL 0)
        if(DEFINED arg_VERSION)
            message(STATUS "Checking for version:")
            message(STATUS "Expected: ${arg_VERSION}")
            message(STATUS "Condition: ${arg_CONDITION}")
            message(STATUS "Got: ${${name}_VERSION}")
            if("${${name}_VERSION}" ${arg_CONDITION} "${arg_VERSION}")
                set(HAVE_${name} TRUE)
                set(status_label "Success")
            endif()
        else()
            set(HAVE_${name} TRUE)
            set(status_label "Success")
        endif()
    endif()
    message(STATUS "Performing Test ${arg_LABEL} - ${status_label}")

    set(TEST_${name} "${HAVE_${name}}" CACHE INTERNAL "${arg_LABEL}")
endfunction()