summaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
blob: 204d7f6797228e5dc4dc4ac087abb338226c3cb4 (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
add_subdirectory(3rdparty)

function(find_or_build_bootstrap_names)
    # Move these into their own folder and move this code in the CMakeLists.txt file there!
    set01(_build_tools "x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")

    function(find_or_build_bootstrap_tool name)
        if (_build_tools)
            add_subdirectory(tools/${name})
        else()
            message("Searching for ${name}.")
            find_program("_PROG_${name}" "${name}" PATHS "${HOST_QT_TOOLS_DIRECTORY}" NO_DEFAULT_PATH)
            if (_PROG_${name} STREQUAL "_PROG_${name}-NOTFOUND")
                message(FATAL_ERROR "The name \"${name}\" was not found in the "
                                    "HOST_QT_TOOLS_DIRECTORY (\"${HOST_QT_TOOLS_DIRECTORY}\").")
            else()
                message("${name} was found at ${_PROG_${name}}.")
                add_executable("${name}" IMPORTED GLOBAL)
                set_target_properties("${name}" PROPERTIES IMPORTED_LOCATION "${_PROG_${name}}")

                add_executable("Qt::${name}" ALIAS "${name}")
            endif()
        endif()
    endfunction()

    find_or_build_bootstrap_tool(qmocscanner)
    if (_build_tools)
        add_subdirectory(tools/bootstrap)  # bootstrap library
    endif()
    find_or_build_bootstrap_tool(moc)
    find_or_build_bootstrap_tool(rcc)
    find_or_build_bootstrap_tool(qfloat16-tables)
    find_or_build_bootstrap_tool(tracegen)

    # $<TARGET_FILE:Qt::qmocscanner> does not work during configure run, so export into a plain variable:
    get_target_property(_mocscanner "Qt::qmocscanner" IMPORTED_LOCATION)
    set(QT_MOCSCANNER "${_mocscanner}" CACHE INTERNAL "Qt moc scanner")

    if (_build_tools)
        install(EXPORT "Qt${PROJECT_VERSION_MAJOR}ToolsTargets" NAMESPACE "Qt::" DESTINATION "${INSTALL_LIBDIR}/cmake/Qt${PROJECT_VERSION_MAJOR}")
    endif()
endfunction()

find_or_build_bootstrap_names()

add_subdirectory(corelib)
add_subdirectory(tools)
add_subdirectory(network)
add_subdirectory(xml)
add_subdirectory(dbus)
if(QT_FEATURE_gui)
    add_subdirectory(gui)

    qt_pull_features_into_current_scope(PUBLIC_FEATURES Qt::Gui)
    if(QT_FEATURE_widgets)
        add_subdirectory(widgets)
        if(QT_FEATURE_opengl)
            add_subdirectory(opengl)
        endif()
    endif()
    add_subdirectory(platformsupport)
    add_subdirectory(platformheaders)
endif()
add_subdirectory(testlib)
add_subdirectory(plugins)