diff options
author | Brad King <brad.king@kitware.com> | 2019-07-29 19:06:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-07-29 19:24:29 (GMT) |
commit | 601fe84bd175507b164d9a4a5ad938ed8ec3f7ec (patch) | |
tree | dcdb20b675adc1d0cf34296399f616cc9dcae220 /Source/cmGlobalGenerator.cxx | |
parent | f43a7d76c737c5bb9b903a2b1be5186c081ec21e (diff) | |
download | CMake-601fe84bd175507b164d9a4a5ad938ed8ec3f7ec.zip CMake-601fe84bd175507b164d9a4a5ad938ed8ec3f7ec.tar.gz CMake-601fe84bd175507b164d9a4a5ad938ed8ec3f7ec.tar.bz2 |
Swift: Restore support for enabling with INTERFACE libraries
The check added in commit b06f4c8a74 (Swift: disallow WIN32_EXECUTABLE
properties, 2019-05-31, v3.15.0-rc1~9^2) makes sense only for
executables because the `WIN32_EXECUTABLE` property is defined only for
them. Running the check on other target types, particularly those that
do not link such as INTERFACE libraries, violates internal assumptions.
In particular, `GetLinkerLanguage` should not be called on such targets.
Fixes: #19528
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 4eba4ff..9afc15a 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -339,15 +339,16 @@ bool cmGlobalGenerator::CheckTargetsForType() const bool failed = false; for (cmLocalGenerator* generator : this->LocalGenerators) { for (cmGeneratorTarget* target : generator->GetGeneratorTargets()) { - std::vector<std::string> configs; - target->Makefile->GetConfigurations(configs); - if (configs.empty()) { - configs.emplace_back(); - } + if (target->GetType() == cmStateEnums::EXECUTABLE && + target->GetPropertyAsBool("WIN32_EXECUTABLE")) { + std::vector<std::string> configs; + target->Makefile->GetConfigurations(configs); + if (configs.empty()) { + configs.emplace_back(); + } - for (std::string const& config : configs) { - if (target->GetLinkerLanguage(config) == "Swift") { - if (target->GetPropertyAsBool("WIN32_EXECUTABLE")) { + for (std::string const& config : configs) { + if (target->GetLinkerLanguage(config) == "Swift") { this->GetCMakeInstance()->IssueMessage( MessageType::FATAL_ERROR, "WIN32_EXECUTABLE property is not supported on Swift " |