aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/QtDeclarativeSetup.cmake
blob: 116b6013a04bfaa8de14610402cde3e00ba395c1 (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
# Generates a header file with a hash.
function(qt_declarative_write_tag_header target_name)
    set(tag_file "${CMAKE_CURRENT_SOURCE_DIR}/../../.tag")
    set(tag_contents "")
    if(EXISTS "${tag_file}")
        file(READ "${tag_file}" tag_contents)
    endif()
    if(NOT tag_file STREQUAL "$Format:%H$")
        set(QML_COMPILE_HASH "${tag_contents}")
        string(STRIP "${QML_COMPILE_HASH}" QML_COMPILE_HASH)
    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../.git")
        execute_process(
            COMMAND git rev-parse HEAD
            OUTPUT_VARIABLE QML_COMPILE_HASH
            OUTPUT_STRIP_TRAILING_WHITESPACE)
    endif()
    string(LENGTH "${QML_COMPILE_HASH}" QML_COMPILE_HASH_LENGTH)
    set(compile_hash_contents "// Generated file, DO NOT EDIT
        #define QML_COMPILE_HASH \"${QML_COMPILE_HASH}\"
        #define QML_COMPILE_HASH_LENGTH ${QML_COMPILE_HASH_LENGTH}"
        )
    set(compile_hash_output_path "${CMAKE_CURRENT_BINARY_DIR}/qml_compile_hash_p.h")
    file(GENERATE OUTPUT "${compile_hash_output_path}"
         CONTENT "${compile_hash_contents}")
endfunction()

find_package(PythonInterp REQUIRED)

# Generate a header file containing a regular expression jit table.
function(qt_declarative_generate_reg_exp_jit_tables consuming_target)
    set(generate_dir "${CMAKE_CURRENT_BINARY_DIR}/.generated")
    if(CMAKE_BUILD_TYPE STREQUAL "Debug")
        string(APPEND generate_dir "/debug")
    elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
        string(APPEND generate_dir "/release")
    endif()

    set(output_file "${generate_dir}/RegExpJitTables.h")
    set(retgen_script_file "${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/masm/yarr/create_regex_tables")

    add_custom_command(
        OUTPUT "${output_file}"
        COMMAND "${PYTHON_EXECUTABLE}" ${retgen_script_file} ${output_file}
        MAIN_DEPENDENCY ${retgen_script_file}
    )
    target_sources(${consuming_target} PRIVATE ${output_file})
    target_include_directories(${consuming_target} PRIVATE $<BUILD_INTERFACE:${generate_dir}>)
endfunction()

# special case to set the qmltype resolve dependencies script at build time
set(QT_QMTYPES_RESOLVE_DEPENDENCIES_SCRIPT
    "${CMAKE_CURRENT_SOURCE_DIR}/src/qml/Qt6QmlResolveMetatypesDependencies.cmake"
)

# install QmlResolveDependency script
qt_copy_or_install(FILES "src/qml/Qt6QmlResolveMetatypesDependencies.cmake"
    DESTINATION "${QT_CONFIG_INSTALL_DIR}/${INSTALL_CMAKE_NAMESPACE}Qml"
)