summaryrefslogtreecommitdiffstats
path: root/util/cmake/configurejson2cmake.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/cmake/configurejson2cmake.py')
-rwxr-xr-xutil/cmake/configurejson2cmake.py32
1 files changed, 30 insertions, 2 deletions
diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py
index cccfabb9e8..b0c4f61d55 100755
--- a/util/cmake/configurejson2cmake.py
+++ b/util/cmake/configurejson2cmake.py
@@ -914,7 +914,22 @@ def get_feature_mapping():
"condition": "NOT QT_FEATURE_icu AND QT_FEATURE_textcodec AND NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND WrapIconv_FOUND",
},
"incredibuild_xge": None,
- "ltcg": {"autoDetect": "1", "condition": "CMAKE_INTERPROCEDURAL_OPTIMIZATION"},
+ "ltcg": {
+ "autoDetect": "ON",
+ "cmakePrelude": """set(__qt_ltcg_detected FALSE)
+if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
+ set(__qt_ltcg_detected TRUE)
+else()
+ foreach(config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
+ if(CMAKE_INTERPROCEDURAL_OPTIMIZATION_${config})
+ set(__qt_ltcg_detected TRUE)
+ break()
+ endif()
+ endforeach()
+endif()""",
+ "condition": "__qt_ltcg_detected",
+ "cmakeEpilogue": "unset(__qt_ltcg_detected)"
+ },
"msvc_mp": None,
"simulator_and_device": {"condition": "UIKIT AND NOT QT_UIKIT_SDK"},
"pkg-config": {"condition": "PKG_CONFIG_FOUND"},
@@ -1001,6 +1016,8 @@ def parseFeature(ctx, feature, data, cm_fh):
enable = map_condition(mapping.get("enable", data.get("enable", "")))
disable = map_condition(mapping.get("disable", data.get("disable", "")))
emitIf = map_condition(mapping.get("emitIf", data.get("emitIf", "")))
+ cmakePrelude = mapping.get("cmakePrelude", None)
+ cmakeEpilogue = mapping.get("cmakeEpilogue", None)
for k in [k for k in data.keys() if k not in handled]:
print(f" XXXX UNHANDLED KEY {k} in feature description")
@@ -1070,10 +1087,16 @@ def parseFeature(ctx, feature, data, cm_fh):
labelAppend="",
superFeature=None,
autoDetect="",
+ cmakePrelude=None,
+ cmakeEpilogue=None,
):
if comment:
cm_fh.write(f"# {comment}\n")
+ if cmakePrelude is not None:
+ cm_fh.write(cmakePrelude)
+ cm_fh.write("\n")
+
cm_fh.write(f'qt_feature("{name}"')
if publicFeature:
cm_fh.write(" PUBLIC")
@@ -1096,11 +1119,16 @@ def parseFeature(ctx, feature, data, cm_fh):
cm_fh.write(lineify("EMIT_IF", emitIf, quote=False))
cm_fh.write(")\n")
+ if cmakeEpilogue is not None:
+ cm_fh.write(cmakeEpilogue)
+ cm_fh.write("\n")
+
# Write qt_feature() calls before any qt_feature_definition() calls
# Default internal feature case.
featureCalls = {}
- featureCalls[feature] = {"name": feature, "labelAppend": "", "autoDetect": autoDetect}
+ featureCalls[feature] = {"name": feature, "labelAppend": "", "autoDetect": autoDetect,
+ "cmakePrelude": cmakePrelude, "cmakeEpilogue": cmakeEpilogue}
# Go over all outputs to compute the number of features that have to be declared
for o in output: