From 6874efb592392f36038f1df6f0e1fecdb92bf8de Mon Sep 17 00:00:00 2001 From: AJIOB Date: Wed, 24 Sep 2025 18:54:02 +0300 Subject: [PATCH] MSVC: Always define a character set When targeting the MSVC ABI, define `_MBCS` by default if the project does not define `_SBCS` or `_UNICODE`. Visual Studio has long defined one of the three character set macros automatically. For consistency, define it when compiling for the MSVC ABI with other generators. Add policy CMP0204 for compatibility. Fixes: #27275 --- Help/manual/cmake-policies.7.rst | 1 + Help/policy/CMP0204.rst | 29 ++++++ Help/release/dev/define-msvc-char-set.rst | 6 ++ Source/cmGeneratorTarget.h | 11 +++ Source/cmGeneratorTarget_Options.cxx | 94 +++++++++++++++++++ Source/cmLocalGenerator.cxx | 5 + Source/cmLocalGenerator.h | 1 + Source/cmPolicies.h | 8 +- Source/cmVisualStudioGeneratorOptions.cxx | 43 +++++++-- Source/cmVisualStudioGeneratorOptions.h | 5 + Tests/RunCMake/CMakeLists.txt | 9 ++ .../export-build-database-all-multi.json | 12 +++ .../expect/export-build-database-all.json | 6 ++ .../expect/export-build-database-config.json | 6 ++ .../export-build-database-cxx-config.json | 6 ++ .../export-build-database-cxx-multi.json | 12 +++ .../expect/export-build-database-cxx.json | 6 ++ ...ort-build-database-imported-all-multi.json | 12 +++ .../export-build-database-imported-all.json | 6 ++ ...export-build-database-imported-config.json | 6 ++ ...rt-build-database-imported-cxx-config.json | 6 ++ ...ort-build-database-imported-cxx-multi.json | 12 +++ .../export-build-database-imported-cxx.json | 6 ++ ...export-build-database-imported-target.json | 3 + .../expect/export-build-database-target.json | 6 ++ .../export-build-database-setup.cmake | 5 + .../export-build-database/CMakeLists.txt | 5 + Tests/RunCMake/FileAPI/codemodel-v2-check.py | 5 +- .../codemodel-v2-data/directories/object.json | 8 +- .../codemodel-v2-data/directories/top.json | 26 ++--- .../targets/c_alias_exe.json | 7 +- .../codemodel-v2-data/targets/c_exe.json | 13 ++- .../targets/c_headers_1.json | 23 ++++- .../targets/c_headers_2.json | 11 ++- .../codemodel-v2-data/targets/c_lib.json | 11 ++- .../targets/c_object_exe.json | 17 ++-- .../targets/c_object_lib.json | 11 ++- .../targets/c_shared_exe.json | 15 ++- .../targets/c_shared_lib.json | 14 ++- .../targets/c_static_exe.json | 13 ++- .../targets/c_static_lib.json | 11 ++- .../codemodel-v2-data/targets/c_subdir.json | 6 +- .../codemodel-v2-data/targets/custom_exe.json | 7 +- .../targets/cxx_alias_exe.json | 7 +- .../codemodel-v2-data/targets/cxx_exe.json | 9 +- .../targets/cxx_exe_cross_emulator.json | 11 ++- .../targets/cxx_exe_cross_emulator_args.json | 17 ++-- .../targets/cxx_exe_precompileheader.json | 14 ++- .../cxx_exe_precompileheader_2arch.json | 21 ++++- .../cxx_exe_precompileheader_multigen.json | 14 ++- .../targets/cxx_exe_test_launcher.json | 11 ++- ..._exe_test_launcher_and_cross_emulator.json | 13 ++- .../codemodel-v2-data/targets/cxx_lib.json | 7 +- .../targets/cxx_object_exe.json | 17 ++-- .../targets/cxx_object_lib.json | 11 ++- .../targets/cxx_shared_exe.json | 7 +- .../targets/cxx_shared_lib.json | 10 +- .../cxx_standard_compile_feature_exe.json | 12 ++- .../targets/cxx_standard_exe.json | 12 ++- .../targets/cxx_static_exe.json | 7 +- .../targets/cxx_static_lib.json | 7 +- .../targets/exe_framework.json | 7 +- .../targets/generated_exe.json | 12 ++- .../targets/interface_exe.json | 10 +- .../targets/interface_lib.json | 2 +- .../targets/link_imported_exe.json | 7 +- .../targets/link_imported_interface_exe.json | 7 +- .../link_imported_interface_symbolic_exe.json | 7 +- .../targets/link_imported_object_exe.json | 7 +- .../targets/link_imported_shared_exe.json | 7 +- .../targets/link_imported_static_exe.json | 7 +- .../targets/shared_framework.json | 4 + .../targets/static_framework.json | 7 +- Tests/RunCMake/FileAPI/codemodel-v2.cmake | 1 + Tests/RunCMake/FileAPI/object/CMakeLists.txt | 3 + Tests/RunCMake/MsvcCharsetDefines/C.cmake | 3 + .../MsvcCharsetDefines/CMakeLists.txt | 3 + Tests/RunCMake/MsvcCharsetDefines/CUDA.cmake | 3 + Tests/RunCMake/MsvcCharsetDefines/CXX.cmake | 3 + .../MsvcCharsetDefines/RunCMakeTest.cmake | 20 ++++ Tests/RunCMake/MsvcCharsetDefines/checker.c | 1 + Tests/RunCMake/MsvcCharsetDefines/checker.cu | 1 + Tests/RunCMake/MsvcCharsetDefines/checker.cxx | 1 + Tests/RunCMake/MsvcCharsetDefines/checker.h | 45 +++++++++ .../RunCMake/MsvcCharsetDefines/common.cmake | 55 +++++++++++ .../TargetPolicies/PolicyList-stderr.txt | 1 + 86 files changed, 819 insertions(+), 137 deletions(-) create mode 100644 Help/policy/CMP0204.rst create mode 100644 Help/release/dev/define-msvc-char-set.rst create mode 100644 Tests/RunCMake/MsvcCharsetDefines/C.cmake create mode 100644 Tests/RunCMake/MsvcCharsetDefines/CMakeLists.txt create mode 100644 Tests/RunCMake/MsvcCharsetDefines/CUDA.cmake create mode 100644 Tests/RunCMake/MsvcCharsetDefines/CXX.cmake create mode 100644 Tests/RunCMake/MsvcCharsetDefines/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/MsvcCharsetDefines/checker.c create mode 100644 Tests/RunCMake/MsvcCharsetDefines/checker.cu create mode 100644 Tests/RunCMake/MsvcCharsetDefines/checker.cxx create mode 100644 Tests/RunCMake/MsvcCharsetDefines/checker.h create mode 100644 Tests/RunCMake/MsvcCharsetDefines/common.cmake diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 6473aa7b9b..a477897afe 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -98,6 +98,7 @@ Policies Introduced by CMake 4.2 .. toctree:: :maxdepth: 1 + CMP0204: A character set is always defined when targeting the MSVC ABI. CMP0203: _WINDLL is defined for shared libraries targeting the MSVC ABI. CMP0202: PDB file names always include their target's per-config POSTFIX. CMP0201: Python::NumPy does not depend on Python::Development.Module. diff --git a/Help/policy/CMP0204.rst b/Help/policy/CMP0204.rst new file mode 100644 index 0000000000..d22263af8b --- /dev/null +++ b/Help/policy/CMP0204.rst @@ -0,0 +1,29 @@ +CMP0204 +------- + +.. versionadded:: 4.2 + +A character set is always defined when targeting the MSVC ABI. + +In CMake 4.1 and below, :ref:`Visual Studio Generators` compile sources in with +``_MBCS``, ``_UNICODE`` or ``_SBCS`` defined due to behavior of Visual Studio +itself. The preprocessor definition is not modeled by CMake and is therefore +not added by other generators, such as :generator:`Ninja`. + +CMake 4.2 and above, when targeting the MSVC ABI, prefer to compile sources +with ``_MBCS`` defined by all generators unless another charset preprocessor +definition is found (``_UNICODE`` or ``_SBCS``). +This policy provides compatibility with projects that have not been updated +to be aware of the definition. Its setting is recorded by each target as +it is created, and affects compilation of sources in that target. + +The ``OLD`` behavior for this policy does not model the ``_MBCS`` +preprocessor definition in CMake itself. The ``NEW`` behavior for this +policy adds the ``_MBCS`` preprocessor definition to sources +as a default encoding when targeting the MSVC ABI. + +.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.2 +.. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn +.. include:: include/STANDARD_ADVICE.rst + +.. include:: include/DEPRECATED.rst diff --git a/Help/release/dev/define-msvc-char-set.rst b/Help/release/dev/define-msvc-char-set.rst new file mode 100644 index 0000000000..4c213045f7 --- /dev/null +++ b/Help/release/dev/define-msvc-char-set.rst @@ -0,0 +1,6 @@ +define-msvc-char-set +-------------------- + +* For builds targeting the MSVC ABI, all generators now add the ``_MBCS`` + preprocessor definition when compiling sources unless ``_UNICODE`` or ``_SBCS`` + is found. See policy :policy:`CMP0204`. diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 628eda5297..a61a776bd0 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -1538,6 +1538,17 @@ public: std::string BuildDatabasePath(std::string const& lang, std::string const& config) const; + enum class MsvcCharSet + { + None, + Unicode, + MultiByte, + SingleByte, + }; + + // Detect if the current define selects any known charset entry or not + static MsvcCharSet GetMsvcCharSet(std::string const& singleDefine); + private: void BuildFileSetInfoCache(std::string const& config) const; struct InfoByConfig diff --git a/Source/cmGeneratorTarget_Options.cxx b/Source/cmGeneratorTarget_Options.cxx index e588967644..1674e49be4 100644 --- a/Source/cmGeneratorTarget_Options.cxx +++ b/Source/cmGeneratorTarget_Options.cxx @@ -38,6 +38,12 @@ enum class OptionsParse Shell }; +struct MsvcCharSetInfo +{ + cmGeneratorTarget::MsvcCharSet CharSet; + bool IsNeedToAddDefine; +}; + namespace { auto const DL_BEGIN = ""_s; auto const DL_END = ""_s; @@ -205,6 +211,45 @@ std::vector> wrapOptions( } return result; } + +cm::string_view const UNICODE_DEFINITION = "_UNICODE"_s; +cm::string_view const MBCS_DEFINITION = "_MBCS"_s; +cm::string_view const SBCS_DEFINITION = "_SBCS"_s; + +constexpr char UNICODE_DEFINITION_PREFIX[] = "_UNICODE="; +constexpr char MBCS_DEFINITION_PREFIX[] = "_MBCS="; +constexpr char SBCS_DEFINITION_PREFIX[] = "_SBCS="; + +MsvcCharSetInfo GetMsvcCharSetInfo( + cmGeneratorTarget const& tgt, std::string const& lang, + EvaluatedTargetPropertyEntries const& entries) +{ + using MsvcCharSet = cmGeneratorTarget::MsvcCharSet; + + if (tgt.Makefile->GetSafeDefinition( + cmStrCat("CMAKE_", lang, "_COMPILER_ID")) != "MSVC"_s && + tgt.Makefile->GetSafeDefinition( + cmStrCat("CMAKE_", lang, "_SIMULATE_ID")) != "MSVC"_s) { + + // Only MSVC ABI uses this feature + return { MsvcCharSet::None, false }; + } + + for (EvaluatedTargetPropertyEntry const& entry : entries.Entries) { + for (std::string const& value : entry.Values) { + MsvcCharSet charSet = cmGeneratorTarget::GetMsvcCharSet(value); + if (charSet != MsvcCharSet::None) { + return { charSet, false }; + } + } + } + + // Default to multi-byte, similar to the Visual Studio generator + // Define the default charset for Visual Studio too: + // it should filter it out if need + return { MsvcCharSet::MultiByte, true }; +} + } void cmGeneratorTarget::GetCompileOptions(std::vector& result, @@ -343,6 +388,34 @@ std::vector> cmGeneratorTarget::GetCompileDefinitions( AddInterfaceEntries(this, "INTERFACE_COMPILE_DEFINITIONS", context, &dagChecker, entries, IncludeRuntimeInterface::Yes); + // Add the character set definition + MsvcCharSetInfo charSetInfo = GetMsvcCharSetInfo(*this, language, entries); + if (charSetInfo.IsNeedToAddDefine && + this->GetPolicyStatusCMP0204() == cmPolicies::NEW) { + cm::string_view define; + switch (charSetInfo.CharSet) { + case MsvcCharSet::None: + // Nothing to set + break; + case MsvcCharSet::Unicode: + define = UNICODE_DEFINITION; + break; + case MsvcCharSet::MultiByte: + define = MBCS_DEFINITION; + break; + case MsvcCharSet::SingleByte: + define = SBCS_DEFINITION; + break; + } + if (!define.empty()) { + std::unique_ptr property = + TargetPropertyEntry::Create(*this->LocalGenerator->GetCMakeInstance(), + std::string{ define }); + entries.Entries.emplace_back( + EvaluateTargetPropertyEntry(this, context, &dagChecker, *property)); + } + } + processOptions(this, entries, list, uniqueOptions, debugDefines, "compile definitions", OptionsParse::None); @@ -677,3 +750,24 @@ std::vector> cmGeneratorTarget::GetLinkDepends( return result; } + +cmGeneratorTarget::MsvcCharSet cmGeneratorTarget::GetMsvcCharSet( + std::string const& singleDefine) +{ + if (singleDefine == UNICODE_DEFINITION || + cmHasLiteralPrefix(singleDefine, UNICODE_DEFINITION_PREFIX)) { + return MsvcCharSet::Unicode; + } + + if (singleDefine == MBCS_DEFINITION || + cmHasLiteralPrefix(singleDefine, MBCS_DEFINITION_PREFIX)) { + return MsvcCharSet::MultiByte; + } + + if (singleDefine == SBCS_DEFINITION || + cmHasLiteralPrefix(singleDefine, SBCS_DEFINITION_PREFIX)) { + return MsvcCharSet::SingleByte; + } + + return MsvcCharSet::None; +} diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 66a9dc5299..1246fe060c 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -4193,6 +4193,11 @@ bool cmLocalGenerator::IsNinjaMulti() const return this->GetState()->UseNinjaMulti(); } +bool cmLocalGenerator::IsWindowsVSIDE() const +{ + return this->GetState()->UseWindowsVSIDE(); +} + namespace { std::string relativeIfUnder(std::string const& top, std::string const& cur, std::string const& path) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 55491ddeb9..d9726fff61 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -544,6 +544,7 @@ public: bool IsMinGWMake() const; bool IsNMake() const; bool IsNinjaMulti() const; + bool IsWindowsVSIDE() const; void IssueMessage(MessageType t, std::string const& text) const; diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 425066120c..2f22aaad7e 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -609,7 +609,10 @@ class cmMakefile; 4, 2, 0, WARN) \ SELECT(POLICY, CMP0203, \ "_WINDLL is defined for shared libraries targeting the MSVC ABI.", \ - 4, 2, 0, WARN) + 4, 2, 0, WARN) \ + SELECT(POLICY, CMP0204, \ + "A character set is always defined when targeting the MSVC ABI.", 4, \ + 2, 0, WARN) #define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1) #define CM_FOR_EACH_POLICY_ID(POLICY) \ @@ -661,7 +664,8 @@ class cmMakefile; F(CMP0199) \ F(CMP0200) \ F(CMP0202) \ - F(CMP0203) + F(CMP0203) \ + F(CMP0204) #define CM_FOR_EACH_CUSTOM_COMMAND_POLICY(F) \ F(CMP0116) \ diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index c39ca5753f..ee66e747c8 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -134,21 +134,44 @@ bool cmVisualStudioGeneratorOptions::IsManaged() const return this->FlagMap.find("CompileAsManaged") != this->FlagMap.end(); } +void cmVisualStudioGeneratorOptions::CacheCharsetValue() const +{ + using MsvcCharSet = cmGeneratorTarget::MsvcCharSet; + + if (this->CachedCharset.has_value()) { + return; + } + + MsvcCharSet newValue = MsvcCharSet::None; + + // Look for a any charset definition. + // Real charset will be updated if something is found. + auto it = std::find_if(this->Defines.begin(), this->Defines.end(), + [&newValue](std::string const& define) { + newValue = + cmGeneratorTarget::GetMsvcCharSet(define); + return newValue != MsvcCharSet::None; + }); + + if (it == this->Defines.end()) { + // Default to multi-byte, as Visual Studio does + newValue = MsvcCharSet::MultiByte; + } + + this->CachedCharset = newValue; +} + bool cmVisualStudioGeneratorOptions::UsingUnicode() const { - // Look for a _UNICODE definition. - return std::any_of( - this->Defines.begin(), this->Defines.end(), [](std::string const& di) { - return di == "_UNICODE"_s || cmHasLiteralPrefix(di, "_UNICODE="); - }); + this->CacheCharsetValue(); + return this->CachedCharset.value() == + cmGeneratorTarget::MsvcCharSet::Unicode; } bool cmVisualStudioGeneratorOptions::UsingSBCS() const { - // Look for a _SBCS definition. - return std::any_of( - this->Defines.begin(), this->Defines.end(), [](std::string const& di) { - return di == "_SBCS"_s || cmHasLiteralPrefix(di, "_SBCS="); - }); + this->CacheCharsetValue(); + return this->CachedCharset.value() == + cmGeneratorTarget::MsvcCharSet::SingleByte; } void cmVisualStudioGeneratorOptions::FixCudaCodeGeneration() diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h index 935a77b7a0..76977061b6 100644 --- a/Source/cmVisualStudioGeneratorOptions.h +++ b/Source/cmVisualStudioGeneratorOptions.h @@ -9,6 +9,7 @@ #include +#include "cmGeneratorTarget.h" #include "cmGlobalVisualStudioGenerator.h" #include "cmIDEFlagTable.h" #include "cmIDEOptions.h" @@ -97,7 +98,11 @@ private: std::string UnknownFlagField; + mutable cm::optional CachedCharset; + void StoreUnknownFlag(std::string const& flag) override; FlagValue TakeFlag(std::string const& key); + + void CacheCharsetValue() const; }; diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 00b659176a..3354f76ed4 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -1446,3 +1446,12 @@ if (CMAKE_C_COMPILER_ID STREQUAL "MSVC" OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") ) set_property(TEST RunCMake.SharedLibraryDefines APPEND PROPERTY LABELS "CUDA") endif() + +if (CMAKE_C_COMPILER_ID STREQUAL "MSVC" OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC") + add_RunCMake_test(MsvcCharsetDefines + -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID} + -DCMAKE_C_SIMULATE_ID=${CMAKE_C_SIMULATE_ID} + -DCMake_TEST_CUDA=${CMake_TEST_CUDA} + ) + set_property(TEST RunCMake.MsvcCharsetDefines APPEND PROPERTY LABELS "CUDA") +endif() diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json index b7b9c03efb..ffb74cbb03 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -156,6 +162,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -178,6 +185,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -196,6 +204,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -223,6 +232,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -247,6 +257,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -265,6 +276,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json index e08ee35c01..4412d35b10 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json index df5308f77c..3815df5412 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json index df5308f77c..3815df5412 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json index 4a3a4397dc..5d2fa078f7 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -156,6 +162,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -178,6 +185,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -196,6 +204,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -223,6 +232,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -247,6 +257,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -265,6 +276,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json index df5308f77c..3815df5412 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json index a1817d4d8f..de16f8e2e6 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -77,6 +81,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -88,6 +93,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -115,6 +121,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -140,6 +147,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -160,6 +168,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -198,6 +207,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -223,6 +233,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -243,6 +254,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json index 42d934bd03..0e510b8094 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -87,6 +91,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -107,6 +112,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json index 42d934bd03..0e510b8094 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -87,6 +91,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -107,6 +112,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json index 42d934bd03..0e510b8094 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -87,6 +91,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -107,6 +112,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json index a1817d4d8f..de16f8e2e6 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -77,6 +81,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -88,6 +93,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -115,6 +121,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -140,6 +147,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -160,6 +168,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -198,6 +207,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -223,6 +233,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -243,6 +254,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json index 42d934bd03..0e510b8094 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -62,6 +65,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -87,6 +91,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", @@ -107,6 +112,7 @@ "-Dtarget_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_interface_define", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-target.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-target.json index d2d975262c..1435edc414 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-target.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-target.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -24,6 +25,7 @@ "PATH:/examples/import-modules/use.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", @@ -35,6 +37,7 @@ "-Dtarget_public_option" ], "local-arguments": [ + "-D_MBCS", "-Dtarget_interface_define", "-Dtarget_public_define", "PATH:-I/examples/export-build-database/target_interface_include", diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json index e08ee35c01..4412d35b10 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json @@ -9,6 +9,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -31,6 +32,7 @@ "PATH:/examples/export-build-database/lib.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -49,6 +51,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -76,6 +79,7 @@ { "arguments": [ "", + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -100,6 +104,7 @@ "PATH:/examples/export-build-database/importable.cxx" ], "baseline-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", @@ -118,6 +123,7 @@ "-Ddep_interface_option" ], "local-arguments": [ + "-D_MBCS", "-Ddep_interface_define", "-Dfrom_compile_definitions", "-Dtarget_private_define", diff --git a/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake b/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake index bbff95fb0b..abe7d3b917 100644 --- a/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake +++ b/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake @@ -1,5 +1,10 @@ set(CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE "73194a1d-c0b5-41b9-9190-a4512925e192") +# _MBCS default append for MSVC ABI workaround: see CMP0204 +# So, force add the default value for all platforms to be consistent. +cmake_policy(SET CMP0204 NEW) +add_compile_definitions(_MBCS) + get_property(is_multiconfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if (is_multiconfig) set(CMAKE_CONFIGURATION_TYPES "Debug" "Release") diff --git a/Tests/RunCMake/CXXModules/examples/export-build-database/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/export-build-database/CMakeLists.txt index 318f91cb51..0ce2072315 100644 --- a/Tests/RunCMake/CXXModules/examples/export-build-database/CMakeLists.txt +++ b/Tests/RunCMake/CXXModules/examples/export-build-database/CMakeLists.txt @@ -5,6 +5,11 @@ include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake") include("${CMAKE_SOURCE_DIR}/../export-build-database-setup.cmake") +# _MBCS default append for MSVC ABI workaround: see CMP0204 +# So, force add the default value for all platforms to be consistent. +cmake_policy(SET CMP0204 NEW) +add_compile_definitions(_MBCS) + add_compile_options(-Dfrom_compile_options) add_compile_definitions(-Dfrom_compile_definitions) include_directories(from_include_directories) diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-check.py b/Tests/RunCMake/FileAPI/codemodel-v2-check.py index a4f02ef926..71a2d9d29f 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-check.py +++ b/Tests/RunCMake/FileAPI/codemodel-v2-check.py @@ -956,7 +956,10 @@ def gen_check_build_system_targets(c, g, inSource): continue # _WINDLL is expected for compilers targeting the MSVC ABI, but not for others. - group["defines"] = [d for d in group["defines"] if d and d["define"] != "_WINDLL"] + # And _MBCS too + group["defines"] = [d for d in group["defines"] if d and d["define"] != "_WINDLL" and d["define"] != "_MBCS"] + if len(group["defines"]) == 0: + group["defines"] = None if os.path.exists(os.path.join(reply_dir, "..", "..", "..", "..", "cxx", "cxx_std_11.txt")): for e in expected: diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/object.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/object.json index 06f6dba6eb..ad0e991025 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/object.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/object.json @@ -36,7 +36,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, @@ -70,7 +70,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, @@ -102,7 +102,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, @@ -136,7 +136,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/top.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/top.json index 9947b535c0..453946c630 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/top.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/directories/top.json @@ -54,7 +54,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 50, + "line": 51, "command": "install", "hasParent": true }, @@ -99,7 +99,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -147,7 +147,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -192,7 +192,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -236,7 +236,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -280,7 +280,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 58, + "line": 59, "command": "install", "hasParent": true }, @@ -327,7 +327,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 60, + "line": 61, "command": "install", "hasParent": true }, @@ -372,7 +372,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 61, + "line": 62, "command": "install", "hasParent": true }, @@ -421,7 +421,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 62, + "line": 63, "command": "install", "hasParent": true }, @@ -473,7 +473,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 63, + "line": 64, "command": "install", "hasParent": true }, @@ -522,7 +522,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 64, + "line": 65, "command": "install", "hasParent": true }, @@ -564,7 +564,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 65, + "line": 66, "command": "install", "hasParent": true }, @@ -606,7 +606,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 66, + "line": 67, "command": "install", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_alias_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_alias_exe.json index 5d2d55a56d..52712aa0e5 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_alias_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_alias_exe.json @@ -48,7 +48,12 @@ "^empty\\.c$" ], "includes": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "frameworks": null, "compileCommandFragments": null } diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_exe.json index d9b6b01f4c..05d98ce222 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_exe.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 12, + "line": 13, "command": "add_executable", "hasParent": true }, @@ -60,7 +60,12 @@ "^empty\\.c$" ], "includes": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "frameworks": null, "compileCommandFragments": null } @@ -68,7 +73,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 12, + "line": 13, "command": "add_executable", "hasParent": true }, @@ -118,7 +123,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 13, + "line": 14, "command": "target_link_libraries", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json index 090d5662a4..5d028fbf1f 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json @@ -14,25 +14,33 @@ "name": "HEADERS", "type": "HEADERS", "visibility": "PUBLIC", - "baseDirectories": ["^fileset$"] + "baseDirectories": [ + "^fileset$" + ] }, { "name": "a", "type": "HEADERS", "visibility": "PRIVATE", - "baseDirectories": ["^fileset$"] + "baseDirectories": [ + "^fileset$" + ] }, { "name": "b", "type": "HEADERS", "visibility": "PUBLIC", - "baseDirectories": ["^fileset/dir$"] + "baseDirectories": [ + "^fileset/dir$" + ] }, { "name": "c", "type": "HEADERS", "visibility": "INTERFACE", - "baseDirectories": ["^fileset$"] + "baseDirectories": [ + "^fileset$" + ] } ], "sources": [ @@ -204,7 +212,12 @@ } ], "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json index 4ef2c9069e..dd88d61bef 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json @@ -14,7 +14,9 @@ "name": "HEADERS", "type": "HEADERS", "visibility": "INTERFACE", - "baseDirectories": ["^fileset$"] + "baseDirectories": [ + "^fileset$" + ] } ], "sources": [ @@ -56,7 +58,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_lib.json index fc307010f7..cc103f2502 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_lib.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 11, + "line": 12, "command": "add_library", "hasParent": true }, @@ -61,14 +61,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 11, + "line": 12, "command": "add_library", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_exe.json index 48052244f6..253bcd5948 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_exe.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 6, + "line": 9, "command": "add_executable", "hasParent": true }, @@ -41,7 +41,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 7, + "line": 10, "command": "target_link_libraries", "hasParent": true }, @@ -76,14 +76,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 6, + "line": 9, "command": "add_executable", "hasParent": true }, @@ -116,7 +121,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, @@ -142,7 +147,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 7, + "line": 10, "command": "target_link_libraries", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_lib.json index bed336ad86..96d0b32afc 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_object_lib.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 5, + "line": 8, "command": "add_library", "hasParent": true }, @@ -49,14 +49,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 5, + "line": 8, "command": "add_library", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_exe.json index aa29164d9e..e0225f2b82 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_exe.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 17, + "line": 18, "command": "add_executable", "hasParent": true }, @@ -61,14 +61,19 @@ ], "includes": null, "frameworks": null, - "defines": null, - "compileCommandFragments": null + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], + "compileCommandFragments": null } ], "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 17, + "line": 18, "command": "add_executable", "hasParent": true }, @@ -118,7 +123,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 18, + "line": 19, "command": "target_link_libraries", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_lib.json index 9c112f7bb5..97cb84894c 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_shared_lib.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 16, + "line": 17, "command": "add_library", "hasParent": true }, @@ -62,6 +62,10 @@ "includes": null, "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "_WINDLL", "backtrace": null @@ -77,7 +81,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 16, + "line": 17, "command": "add_library", "hasParent": true }, @@ -126,7 +130,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -156,7 +160,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -186,7 +190,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 58, + "line": 59, "command": "install", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_exe.json index 5193c012ec..83ffeb1578 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_exe.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 21, + "line": 22, "command": "add_executable", "hasParent": true }, @@ -61,14 +61,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 21, + "line": 22, "command": "add_executable", "hasParent": true }, @@ -118,7 +123,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 22, + "line": 23, "command": "target_link_libraries", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_lib.json index d744128c32..9d48063c48 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_static_lib.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 20, + "line": 21, "command": "add_library", "hasParent": true }, @@ -61,14 +61,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 20, + "line": 21, "command": "add_library", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_subdir.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_subdir.json index d2cf89df44..44201b8e5c 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_subdir.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_subdir.json @@ -69,6 +69,10 @@ ], "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "SUBDIR", "backtrace": [ @@ -93,7 +97,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 24, + "line": 25, "command": "add_library", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/custom_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/custom_exe.json index a17965bb12..324fbe36eb 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/custom_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/custom_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_alias_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_alias_exe.json index f00fb52dc4..740e3c0b11 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_alias_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_alias_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe.json index 99a826cdd8..763cc939fb 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", @@ -143,7 +148,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 50, + "line": 51, "command": "install", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json index 9ae2487f3f..909cdda8f0 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], @@ -82,10 +87,10 @@ "build": "^cxx/cross$", "source": "^cxx/cross$", "install": null, - "launchers" : [ + "launchers": [ { "command": "^no-such-emulator(\\.exe)?$", - "type" : "emulator" + "type": "emulator" } ], "link": { diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json index db4c80f241..52ab085d8b 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator_args.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], @@ -82,14 +87,14 @@ "build": "^cxx/cross$", "source": "^cxx/cross$", "install": null, - "launchers" : [ + "launchers": [ { - "arguments" : [ - "arg1", - "arg2 with space" + "arguments": [ + "arg1", + "arg2 with space" ], "command": "^no-such-emulator(\\.exe)?$", - "type" : "emulator" + "type": "emulator" } ], "link": { diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader.json index 86cfc8af01..5c315456ae 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader.json @@ -7,7 +7,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", @@ -54,7 +59,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_2arch.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_2arch.json index f459e08c16..bba827aa8b 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_2arch.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_2arch.json @@ -7,7 +7,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", @@ -54,7 +59,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", @@ -101,7 +111,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_multigen.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_multigen.json index f5e06bff14..584ea1e3fc 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_multigen.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_precompileheader_multigen.json @@ -7,7 +7,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", @@ -54,7 +59,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "precompileHeaders": [ { "header": ".*empty\\.h$", diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher.json index 6cf7acee4f..209c0057da 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], @@ -82,10 +87,10 @@ "build": "^cxx$", "source": "^cxx$", "install": null, - "launchers" : [ + "launchers": [ { "command": "^no-such-launcher(\\.exe)?$", - "type" : "test" + "type": "test" } ], "link": { diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher_and_cross_emulator.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher_and_cross_emulator.json index 24b0234ccf..5c439b24d5 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher_and_cross_emulator.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_test_launcher_and_cross_emulator.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], @@ -82,14 +87,14 @@ "build": "^cxx/cross$", "source": "^cxx/cross$", "install": null, - "launchers" : [ + "launchers": [ { "command": "^no-such-launcher(\\.exe)?$", - "type" : "test" + "type": "test" }, { "command": "^no-such-emulator(\\.exe)?$", - "type" : "emulator" + "type": "emulator" } ], "link": { diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_lib.json index 57acfa9200..e1fc0e808f 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_lib.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_exe.json index c946bd32b5..2d19e2dd83 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_exe.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 10, + "line": 13, "command": "add_executable", "hasParent": true }, @@ -41,7 +41,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 11, + "line": 14, "command": "target_link_libraries", "hasParent": true }, @@ -76,14 +76,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 10, + "line": 13, "command": "add_executable", "hasParent": true }, @@ -116,7 +121,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 13, + "line": 16, "command": "install", "hasParent": true }, @@ -142,7 +147,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 11, + "line": 14, "command": "target_link_libraries", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_lib.json index a69451547d..bf3fec54c7 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_object_lib.json @@ -20,7 +20,7 @@ "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 9, + "line": 12, "command": "add_library", "hasParent": true }, @@ -49,14 +49,19 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], "backtrace": [ { "file": "^object/CMakeLists\\.txt$", - "line": 9, + "line": 12, "command": "add_library", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_exe.json index 87b4194ba2..0d76ffc26e 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_lib.json index 816e42de68..080400c81f 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_shared_lib.json @@ -50,6 +50,10 @@ "includes": null, "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "_WINDLL", "backtrace": null @@ -102,7 +106,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -132,7 +136,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 53, + "line": 54, "command": "install", "hasParent": true }, @@ -162,7 +166,7 @@ "backtrace": [ { "file": "^codemodel-v2\\.cmake$", - "line": 58, + "line": 59, "command": "install", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe.json index 1156d6c5c5..e2a0dbba32 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe.json @@ -44,8 +44,7 @@ "compileGroups": [ { "language": "CXX", - "languageStandard" : - { + "languageStandard": { "backtraces": [ [ { @@ -62,14 +61,19 @@ } ] ], - "standard" : "98" + "standard": "98" }, "sourcePaths": [ "^empty\\.cxx$" ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_exe.json index 9896e69b16..c79c4be935 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_exe.json @@ -44,8 +44,7 @@ "compileGroups": [ { "language": "CXX", - "languageStandard" : - { + "languageStandard": { "backtraces": [ [ { @@ -62,14 +61,19 @@ } ] ], - "standard" : "17" + "standard": "17" }, "sourcePaths": [ "^empty\\.cxx$" ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_exe.json index 68b31df727..2178661341 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_lib.json index 0e9a2b8211..5e06843df1 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_static_lib.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/exe_framework.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/exe_framework.json index 9777815041..4657582df7 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/exe_framework.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/exe_framework.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/generated_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/generated_exe.json index 140c5109ef..ec065820cc 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/generated_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/generated_exe.json @@ -114,6 +114,10 @@ ], "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "EMPTY_C=1", "backtrace": [ @@ -185,7 +189,7 @@ ], "compileCommandFragments": [ { - "fragment" : "SRC_COMPILE_OPTIONS_DUMMY", + "fragment": "SRC_COMPILE_OPTIONS_DUMMY", "backtrace": [ { "file": "^.*/Tests/RunCMake/FileAPIExternalSource/CMakeLists\\.txt$", @@ -194,7 +198,7 @@ "hasParent": true }, { - "file" : "^.*/Tests/RunCMake/FileAPIExternalSource/CMakeLists\\.txt$", + "file": "^.*/Tests/RunCMake/FileAPIExternalSource/CMakeLists\\.txt$", "line": null, "command": null, "hasParent": false @@ -230,6 +234,10 @@ ], "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "GENERATED_EXE=1", "backtrace": [ diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_exe.json index afd6963ddf..046a8999cd 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_exe.json @@ -32,7 +32,7 @@ }, { "file": "^codemodel-v2\\.cmake$", - "line": 9, + "line": 10, "command": "include", "hasParent": true }, @@ -74,6 +74,10 @@ "includes": null, "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "interface_exe_EXPORTS", "backtrace": null @@ -95,7 +99,7 @@ }, { "file": "^codemodel-v2\\.cmake$", - "line": 9, + "line": 10, "command": "include", "hasParent": true }, @@ -138,7 +142,7 @@ }, { "file": "^codemodel-v2\\.cmake$", - "line": 9, + "line": 10, "command": "include", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_lib.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_lib.json index ad90fa3ee5..1b5e048de0 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_lib.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/interface_lib.json @@ -28,7 +28,7 @@ }, { "file": "^codemodel-v2\\.cmake$", - "line": 9, + "line": 10, "command": "include", "hasParent": true }, diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_exe.json index 5f1aefcf29..7b5acb575c 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_exe.json index 4b6b0f9293..d51cb90c3d 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_symbolic_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_symbolic_exe.json index dc6db591dd..7895e33ac0 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_symbolic_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_interface_symbolic_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_object_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_object_exe.json index cbf17f6164..44d1699c84 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_object_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_object_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_shared_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_shared_exe.json index 346399d8dc..b4d160f448 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_shared_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_shared_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_static_exe.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_static_exe.json index 47acf6aec1..a7077d77e2 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_static_exe.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/link_imported_static_exe.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/shared_framework.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/shared_framework.json index 32756a8837..8b858af945 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/shared_framework.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/shared_framework.json @@ -50,6 +50,10 @@ "includes": null, "frameworks": null, "defines": [ + { + "define": "_MBCS", + "backtrace": null + }, { "define": "_WINDLL", "backtrace": null diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/static_framework.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/static_framework.json index 7e45ad82fe..b01711866b 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/static_framework.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/static_framework.json @@ -49,7 +49,12 @@ ], "includes": null, "frameworks": null, - "defines": null, + "defines": [ + { + "define": "_MBCS", + "backtrace": null + } + ], "compileCommandFragments": null } ], diff --git a/Tests/RunCMake/FileAPI/codemodel-v2.cmake b/Tests/RunCMake/FileAPI/codemodel-v2.cmake index 1b5cafb82d..100a1af6ad 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2.cmake +++ b/Tests/RunCMake/FileAPI/codemodel-v2.cmake @@ -3,6 +3,7 @@ set(CMAKE_INTERMEDIATE_DIR_STRATEGY FULL CACHE STRING "" FORCE) enable_language(C) cmake_policy(SET CMP0203 NEW) +cmake_policy(SET CMP0204 NEW) set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 0) diff --git a/Tests/RunCMake/FileAPI/object/CMakeLists.txt b/Tests/RunCMake/FileAPI/object/CMakeLists.txt index 9773b81488..b31607ba49 100644 --- a/Tests/RunCMake/FileAPI/object/CMakeLists.txt +++ b/Tests/RunCMake/FileAPI/object/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.13) project(Object) enable_language(CXX) +cmake_policy(SET CMP0203 NEW) +cmake_policy(SET CMP0204 NEW) + add_library(c_object_lib OBJECT ../empty.c) add_executable(c_object_exe ../empty.c) target_link_libraries(c_object_exe PRIVATE c_object_lib) diff --git a/Tests/RunCMake/MsvcCharsetDefines/C.cmake b/Tests/RunCMake/MsvcCharsetDefines/C.cmake new file mode 100644 index 0000000000..efda9186c2 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/C.cmake @@ -0,0 +1,3 @@ +set(language C) +set(extension "c") +include(common.cmake) diff --git a/Tests/RunCMake/MsvcCharsetDefines/CMakeLists.txt b/Tests/RunCMake/MsvcCharsetDefines/CMakeLists.txt new file mode 100644 index 0000000000..955802cde9 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 4.0) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/MsvcCharsetDefines/CUDA.cmake b/Tests/RunCMake/MsvcCharsetDefines/CUDA.cmake new file mode 100644 index 0000000000..ecde725f8a --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/CUDA.cmake @@ -0,0 +1,3 @@ +set(language CUDA) +set(extension "cu") +include(common.cmake) diff --git a/Tests/RunCMake/MsvcCharsetDefines/CXX.cmake b/Tests/RunCMake/MsvcCharsetDefines/CXX.cmake new file mode 100644 index 0000000000..ce1f6cae0f --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/CXX.cmake @@ -0,0 +1,3 @@ +set(language CXX) +set(extension "cxx") +include(common.cmake) diff --git a/Tests/RunCMake/MsvcCharsetDefines/RunCMakeTest.cmake b/Tests/RunCMake/MsvcCharsetDefines/RunCMakeTest.cmake new file mode 100644 index 0000000000..ac82a9f346 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/RunCMakeTest.cmake @@ -0,0 +1,20 @@ +include(RunCMake) + +function(configure_and_build case) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build) + run_cmake(${case}) + set(RunCMake_TEST_NO_CLEAN 1) + if (RunCMake_GENERATOR_IS_MULTI_CONFIG) + run_cmake_command(${case}-build-Debug ${CMAKE_COMMAND} --build . --config Debug) + run_cmake_command(${case}-build-Release ${CMAKE_COMMAND} --build . --config Release) + else() + run_cmake_command(${case}-build ${CMAKE_COMMAND} --build .) + endif() +endfunction() + +configure_and_build(C) +configure_and_build(CXX) + +if(CMake_TEST_CUDA) + configure_and_build(CUDA) +endif() diff --git a/Tests/RunCMake/MsvcCharsetDefines/checker.c b/Tests/RunCMake/MsvcCharsetDefines/checker.c new file mode 100644 index 0000000000..af52d95418 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/checker.c @@ -0,0 +1 @@ +#include "checker.h" diff --git a/Tests/RunCMake/MsvcCharsetDefines/checker.cu b/Tests/RunCMake/MsvcCharsetDefines/checker.cu new file mode 100644 index 0000000000..af52d95418 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/checker.cu @@ -0,0 +1 @@ +#include "checker.h" diff --git a/Tests/RunCMake/MsvcCharsetDefines/checker.cxx b/Tests/RunCMake/MsvcCharsetDefines/checker.cxx new file mode 100644 index 0000000000..af52d95418 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/checker.cxx @@ -0,0 +1 @@ +#include "checker.h" diff --git a/Tests/RunCMake/MsvcCharsetDefines/checker.h b/Tests/RunCMake/MsvcCharsetDefines/checker.h new file mode 100644 index 0000000000..56baa2b065 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/checker.h @@ -0,0 +1,45 @@ +#pragma once + +#ifdef MUST_HAVE_DEFINE_MBCS +# ifndef _MBCS +# error "_MBCS is not defined, but it should be" +# endif +# if _MBCS != 1 +# error "_MBCS is not defined as 1, but it should be" +# endif +#else +# ifdef _MBCS +# error "_MBCS is defined, but it should not be" +# endif +#endif + +#ifdef MUST_HAVE_DEFINE_SBCS +# ifndef _SBCS +# error "_SBCS is not defined, but it should be" +# endif +# if _SBCS != 1 +# error "_SBCS is not defined as 1, but it should be" +# endif +#else +# ifdef _SBCS +# error "_SBCS is defined, but it should not be" +# endif +#endif + +#ifdef MUST_HAVE_DEFINE_UNICODE +# ifndef _UNICODE +# error "_UNICODE is not defined, but it should be" +# endif +# if _UNICODE != 1 +# error "_UNICODE is not defined as 1, but it should be" +# endif +#else +# ifdef _UNICODE +# error "_UNICODE is defined, but it should not be" +# endif +#endif + +int FUNCTION() +{ + return 0; +} diff --git a/Tests/RunCMake/MsvcCharsetDefines/common.cmake b/Tests/RunCMake/MsvcCharsetDefines/common.cmake new file mode 100644 index 0000000000..c7b8d005e3 --- /dev/null +++ b/Tests/RunCMake/MsvcCharsetDefines/common.cmake @@ -0,0 +1,55 @@ +enable_language(${language}) + +function(msvcCharsetDefs_addTests policy_value suffix expected_define passed_define) + block(SCOPE_FOR POLICIES) + if (NOT "${policy_value}" STREQUAL "WARN") + # WARN is the default value - no need to set it + cmake_policy(SET CMP0204 "${policy_value}") + endif() + + set(suffix "CMP0204-${policy_value}_${suffix}") + + add_executable(${language}-${suffix}_executable checker.${extension}) + target_compile_definitions(${language}-${suffix}_executable PRIVATE "FUNCTION=main") + + add_library(${language}-${suffix}_shared SHARED checker.${extension}) + target_compile_definitions(${language}-${suffix}_shared PRIVATE "FUNCTION=test") + + add_library(${language}-${suffix}_static STATIC checker.${extension}) + target_compile_definitions(${language}-${suffix}_static PRIVATE "FUNCTION=test") + + add_library(${language}-${suffix}_object OBJECT checker.${extension}) + target_compile_definitions(${language}-${suffix}_object PRIVATE "FUNCTION=test") + + foreach(target IN ITEMS ${language}-${suffix}_executable ${language}-${suffix}_shared ${language}-${suffix}_static ${language}-${suffix}_object) + target_compile_definitions(${target} PRIVATE + "MUST_HAVE_DEFINE_${expected_define}" + "${passed_define}" + ) + endforeach() + endblock() +endfunction() + +foreach(policy_value IN ITEMS OLD WARN NEW) + msvcCharsetDefs_addTests(${policy_value} MBCS_NO_VALUE MBCS _MBCS) + msvcCharsetDefs_addTests(${policy_value} SBCS_NO_VALUE SBCS _SBCS) + msvcCharsetDefs_addTests(${policy_value} UNICODE_NO_VALUE UNICODE _UNICODE) + msvcCharsetDefs_addTests(${policy_value} MBCS_WITH_VALUE MBCS _MBCS=1) + msvcCharsetDefs_addTests(${policy_value} SBCS_WITH_VALUE SBCS _SBCS=1) + msvcCharsetDefs_addTests(${policy_value} UNICODE_WITH_VALUE UNICODE _UNICODE=1) + msvcCharsetDefs_addTests(${policy_value} D_MBCS_NO_VALUE MBCS -D_MBCS) + msvcCharsetDefs_addTests(${policy_value} D_SBCS_NO_VALUE SBCS -D_SBCS) + msvcCharsetDefs_addTests(${policy_value} D_UNICODE_NO_VALUE UNICODE -D_UNICODE) + msvcCharsetDefs_addTests(${policy_value} D_MBCS_WITH_VALUE MBCS -D_MBCS=1) + msvcCharsetDefs_addTests(${policy_value} D_SBCS_WITH_VALUE SBCS -D_SBCS=1) + msvcCharsetDefs_addTests(${policy_value} D_UNICODE_WITH_VALUE UNICODE -D_UNICODE=1) + + set(expected_define "") + if (CMAKE_GENERATOR MATCHES "Visual Studio") + # Visual Studio always defines `_MBCS` by default + set(expected_define "MBCS") + elseif (policy_value STREQUAL "NEW") + set(expected_define "MBCS") + endif() + msvcCharsetDefs_addTests(${policy_value} Default "${expected_define}" "") +endforeach() diff --git a/Tests/RunCMake/TargetPolicies/PolicyList-stderr.txt b/Tests/RunCMake/TargetPolicies/PolicyList-stderr.txt index 4b452d4eb5..db0b5abf03 100644 --- a/Tests/RunCMake/TargetPolicies/PolicyList-stderr.txt +++ b/Tests/RunCMake/TargetPolicies/PolicyList-stderr.txt @@ -51,6 +51,7 @@ \* CMP0200 \* CMP0202 \* CMP0203 + \* CMP0204 Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\)