blob: b111c2df55f3b0916cca73285260aba3c87cf444 (
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# This function adds the current build configuration to the specified target
# as a YAML file named ":/build-config.yaml" via a Qt resource file.
function(qtam_internal_add_build_config target)
if(NOT TARGET "${target}")
message(FATAL_ERROR "Trying to extend non-existing target \"${target}\".")
endif()
# get the git version, if available
if(EXISTS "${PROJECT_SOURCE_DIR}/.tag")
file(READ ${PROJECT_SOURCE_DIR}/.tag GIT_VERSION)
STRING(REGEX REPLACE "\n" "" GIT_VERSION "${GIT_VERSION}")
if(GIT_VERSION STREQUAL "\$Format:%H\$")
set(GIT_VERSION "unknown")
if(EXISTS ${CMAKE_SOURCE_DIR}/.git)
execute_process(
COMMAND git describe --tags --always --dirty
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
endif()
else()
set(GIT_VERSION "")
endif()
# generate the necessary strings to be backward compatible with qmake
string(TIMESTAMP _DATE_ UTC)
set(SOURCE_DIR ${CMAKE_SOURCE_DIR})
set(BUILD_DIR ${CMAKE_BINARY_DIR})
set(MODULE_VERSION ${PROJECT_VERSION})
set(INSTALL_PREFIX ${QT6_INSTALL_PREFIX})
set(QT_ARCH ${CMAKE_SYSTEM_PROCESSOR})
set(QT_VERSION ${Qt6_VERSION})
get_target_property(DEFINES ${target} COMPILE_DEFINITIONS)
set(DEFINES_TYPE "array")
get_cmake_property(ALL_VARS VARIABLES)
foreach (VAR ${ALL_VARS})
if (VAR MATCHES "^QT_FEATURE_([a-z])")
list(APPEND QT_FEATURES "${VAR}")
endif()
endforeach()
set(QT_FEATURES_TYPE "dict")
set(build_config "${CMAKE_CURRENT_BINARY_DIR}/build-config.yaml")
file(WRITE "${build_config}" "---\n")
foreach(VAR _DATE_ MODULE_VERSION GIT_VERSION SOURCE_DIR BUILD_DIR INSTALL_PREFIX
QT_ARCH QT_VERSION QT_FEATURES DEFINES)
if(NOT VAR)
file(APPEND "${build_config}" "${VAR}: ~\n")
elseif("${${VAR}_TYPE}" STREQUAL "array")
file(APPEND "${build_config}" "${VAR}:\n")
foreach(VAL ${${VAR}})
file(APPEND "${build_config}" " - '${VAL}'\n")
endforeach()
elseif("${${VAR}_TYPE}" STREQUAL "dict")
file(APPEND "${build_config}" "${VAR}:\n")
foreach(SUBVAR ${${VAR}})
set(VAL ${${SUBVAR}})
if(VAL STREQUAL "ON")
set(VAL "yes")
elseif(VAL STREQUAL "OFF")
set(VAL "no")
else()
set(VAL "'${VAL}'")
endif()
file(APPEND "${build_config}" " ${SUBVAR}: ${VAL}\n")
endforeach()
else()
file(APPEND "${build_config}" "${VAR}: '${${VAR}}'\n")
endif()
endforeach()
qt_internal_add_resource(${target} "build-config"
PREFIX "/"
FILES "${build_config}"
BASE "${CMAKE_CURRENT_BINARY_DIR}"
)
endfunction()
|