diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-05-12 14:57:23 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-05-15 11:47:09 +0200 |
commit | 0cdcbb40a1f7fe0288698898027717959f4fbee1 (patch) | |
tree | c8f69d9d90a30f388f70e08b44eac960ea4f5b25 /cmake | |
parent | d5cb44cd3a2169d7c479d1f53d69544b9109f003 (diff) |
CMake: Enable default usage of utf8 sources for Qt consumers
And enable the same default when building Qt itself (it's implicit).
Allow opting out on a target-by-target basis, by using the public
qt_disable_utf8_sources() API call.
Change-Id: Ifc19a744d57b96b1c74a6926a0c6628c2a820464
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBaseGlobalTargets.cmake | 3 | ||||
-rw-r--r-- | cmake/QtBuild.cmake | 16 | ||||
-rw-r--r-- | cmake/QtInternalTargets.cmake | 2 |
3 files changed, 20 insertions, 1 deletions
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index d00d536194..e5006f0e20 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -271,6 +271,9 @@ add_library(Qt::GlobalConfigPrivate ALIAS GlobalConfigPrivate) # are computed. qt_set_language_standards_interface_compile_features(Platform) +# By default enable utf8 sources for both Qt and Qt consumers. Can be opted out. +qt_enable_utf8_sources(Platform) + # defines PlatformCommonInternal PlatformModuleInternal PlatformPluginInternal PlatformToolInternal include(QtInternalTargets) diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 340ffc117b..4c37e1d4b1 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -4674,6 +4674,22 @@ function(qt_enable_msvc_cplusplus_define target visibility) endif() endfunction() +function(qt_enable_utf8_sources target) + set(utf8_flags "") + if(MSVC) + list(APPEND utf8_flags "-utf-8") + elseif(WIN32 AND ICC) + list(APPEND utf8_flags "-Qoption,cpp,--unicode_source_kind,UTF-8") + endif() + + if(utf8_flags) + # Allow opting out by specifying the QT_NO_UTF8_SOURCE target property. + set(genex_condition "$<NOT:$<BOOL:$<TARGET_PROPERTY:QT_NO_UTF8_SOURCE>>>") + set(utf8_flags "$<${genex_condition}:${utf8_flags}>") + target_compile_options("${target}" INTERFACE "${utf8_flags}") + endif() +endfunction() + # Equivalent of qmake's qtNomakeTools(directory1 directory2). # If QT_NO_MAKE_TOOLS is true, then targets within the given directories will be excluded from the # default 'all' target, as well as from install phase. diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index 6940a367ac..c570771202 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -147,7 +147,7 @@ if (MSVC) ) endif() - target_compile_options(PlatformCommonInternal INTERFACE -Zc:wchar_t -utf-8) + target_compile_options(PlatformCommonInternal INTERFACE -Zc:wchar_t) target_link_options(PlatformCommonInternal INTERFACE -DYNAMICBASE -NXCOMPAT |