summaryrefslogtreecommitdiffstats
path: root/cmake/QtInterfaceFrameworkSetup.cmake
blob: 0a4e92713391b9a85a3a58bd01de46d327bdd850 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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}")

    execute_process(COMMAND ${Python3_EXECUTABLE} "-c" "import sys; sys.exit(\"${arg_PACKAGE}\" in sys.stdlib_module_names)"
                    RESULT_VARIABLE is_standard_module
                    ERROR_QUIET
                   )

    if(${is_standard_module} EQUAL 1)
            execute_process(COMMAND ${Python3_EXECUTABLE} "-c" "import ${arg_PACKAGE}"
                            RESULT_VARIABLE ${name}_RESULT
                            ERROR_QUIET
                           )
            if(${${name}_RESULT} EQUAL 0)
                set(${name}_VERSION ${Python3_VERSION})
            endif()
    else()
        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()
    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()