CMake: Fix handling of negated feature config values
Consider a negated feature config value like the following: qt_feature_config("foo" QMAKE_PUBLIC_QT_CONFIG NEGATE) If this feature was disabled, it would turn up in both, enabled_features and disabled_features of module .pri files. Also, QT_CONFIG would contain foo. Expected however is that QT_CONFIG contains no-foo, and only disabled_features contains foo. Fix this by prepending a "no_" prefix to the value, similar to the "no-" prefix in the qmake build. The qt_correct_config function was adjusted to recognize "no_foo" and translate it to the qmakeish "no-foo" config value. Config values that start with "no_" but do not correspond to a feature are left untouched. You can still have values like "no_valley_too_deep" or "no_mountain_too_high". Change-Id: I23d8b18c84e04ea6dfa25cc6ccd8f7e86211b144 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
a54294369d
commit
8ef4edc09e
@ -696,12 +696,26 @@ endfunction()
|
|||||||
function(qt_correct_config out_var config)
|
function(qt_correct_config out_var config)
|
||||||
set(corrected_config "")
|
set(corrected_config "")
|
||||||
foreach(name ${config})
|
foreach(name ${config})
|
||||||
|
# Is the config value a known feature?
|
||||||
get_property(feature_original_name GLOBAL PROPERTY "QT_FEATURE_ORIGINAL_NAME_${name}")
|
get_property(feature_original_name GLOBAL PROPERTY "QT_FEATURE_ORIGINAL_NAME_${name}")
|
||||||
if(feature_original_name)
|
if(feature_original_name)
|
||||||
list(APPEND corrected_config "${feature_original_name}")
|
list(APPEND corrected_config "${feature_original_name}")
|
||||||
else()
|
continue()
|
||||||
list(APPEND corrected_config "${name}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Is the config value a negated known feature, e.g. no_foo?
|
||||||
|
# Then add the config value no-foo.
|
||||||
|
if(name MATCHES "^no_(.*)")
|
||||||
|
get_property(feature_original_name GLOBAL PROPERTY
|
||||||
|
"QT_FEATURE_ORIGINAL_NAME_${CMAKE_MATCH_1}")
|
||||||
|
if(feature_original_name)
|
||||||
|
list(APPEND corrected_config "no-${feature_original_name}")
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# The config value is no known feature. Add the value as is.
|
||||||
|
list(APPEND corrected_config "${name}")
|
||||||
endforeach()
|
endforeach()
|
||||||
set(${out_var} ${corrected_config} PARENT_SCOPE)
|
set(${out_var} ${corrected_config} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -312,16 +312,17 @@ function(qt_evaluate_qmake_config_values key)
|
|||||||
"FEATURE;NAME;CONFIG_VAR_NAME"
|
"FEATURE;NAME;CONFIG_VAR_NAME"
|
||||||
"" ${${key}})
|
"" ${${key}})
|
||||||
|
|
||||||
set(expected "NOT")
|
|
||||||
if (arg_NEGATE)
|
|
||||||
set(expected "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# If no custom name is specified, then the config value is the same as the feature name.
|
# If no custom name is specified, then the config value is the same as the feature name.
|
||||||
if(NOT arg_NAME)
|
if(NOT arg_NAME)
|
||||||
set(arg_NAME "${arg_FEATURE}")
|
set(arg_NAME "${arg_FEATURE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(expected "NOT")
|
||||||
|
if (arg_NEGATE)
|
||||||
|
set(expected "")
|
||||||
|
string(PREPEND arg_NAME "no_")
|
||||||
|
endif()
|
||||||
|
|
||||||
# The feature condition is false, there is no need to export any config values.
|
# The feature condition is false, there is no need to export any config values.
|
||||||
if(${expected} ${QT_FEATURE_${arg_FEATURE}})
|
if(${expected} ${QT_FEATURE_${arg_FEATURE}})
|
||||||
return()
|
return()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user