summaryrefslogtreecommitdiff
path: root/src/assistant/qhelpgenerator/CMakeLists.txt
blob: e53106e0852c245ce2fffb6d379d34aa6e5d49ff (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
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause

#####################################################################
## qhelpgenerator Tool:
#####################################################################

qt_get_tool_target_name(target_name qhelpgenerator)
qt_internal_add_tool(${target_name}
    TARGET_DESCRIPTION "Qt Compressed Help File Generator"
    TOOLS_TARGET Tools
    INSTALL_DIR "${INSTALL_LIBEXECDIR}"
    SOURCES
        ../shared/collectionconfiguration.cpp ../shared/collectionconfiguration.h
        collectionconfigreader.cpp collectionconfigreader.h
        helpgenerator.cpp helpgenerator.h
        main.cpp
        qhelpdatainterface.cpp qhelpdatainterface_p.h
        qhelpprojectdata.cpp qhelpprojectdata_p.h
    LIBRARIES
        Qt::Gui
        Qt::HelpPrivate
        Qt::Network
)
qt_internal_return_unless_building_tools()

if(NOT QT_BUILD_SHARED_LIBS)
    set(needed_plugins
        QMinimalIntegrationPlugin
        QSQLiteDriverPlugin
    )
    list(TRANSFORM needed_plugins PREPEND Qt:: OUTPUT_VARIABLE needed_plugin_targets)
    if(QT_SUPERBUILD)
        # In a top-level build, qt_import_plugins() is a no-op because
        # __qt_internal_add_static_plugins_once() is not called.
        # So we need to initialize and link the plugin manually.
        set(out_file_path "${CMAKE_CURRENT_BINARY_DIR}/${target_name}_plugin_imports_custom.cpp")

        # Create a string with the necessary Q_IMPORT_PLUGIN(...) statements.
        list(TRANSFORM needed_plugins PREPEND "Q_IMPORT_PLUGIN(" OUTPUT_VARIABLE import_plugin_code)
        list(TRANSFORM import_plugin_code APPEND ")")
        list(JOIN import_plugin_code "\n" import_plugin_code)

        file(GENERATE OUTPUT "${out_file_path}" CONTENT
"// This file is auto-generated. Do not edit.
#include <QtPlugin>

${import_plugin_code}
")

        # CMake versions earlier than 3.18.0 can't find the generated file for some reason,
        # failing at generation phase.
        # Explicitly marking the file as GENERATED fixes the issue.
        set_source_files_properties("${out_file_path}" PROPERTIES GENERATED TRUE)

        target_sources(${target_name} PRIVATE "${out_file_path}")
        target_link_libraries(${target_name} PRIVATE ${needed_plugin_targets})
    else()
        qt_import_plugins(${target_name}
            INCLUDE ${needed_plugin_targets}
        )
    endif()
endif()