Commit 601fe84b authored by Brad King's avatar Brad King

Swift: Restore support for enabling with INTERFACE libraries

The check added in commit b06f4c8a (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
parent f43a7d76
Pipeline #142387 passed with stage
......@@ -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 "
......
......@@ -8,3 +8,6 @@ elseif(NOT XCODE_VERSION VERSION_LESS 8.0)
endif()
add_executable(SwiftOnly main.swift)
# Dummy to make sure generation works with such targets.
add_library(SwiftIface INTERFACE)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment