Swift: honour -swift-version in Ninja generator

Swift has supported `CMAKE_Swift_LANGUAGE_VERSION` and
`Swift_LANGUAGE_VERSION` but didn't apply that to Ninja generated
targets.  Consider the property when calculating the flags.
This commit is contained in:
Saleem Abdulrasool 2019-08-11 18:36:06 -07:00 committed by Brad King
parent 19612dffd2
commit 369c48ee43
4 changed files with 19 additions and 0 deletions

View File

@ -316,6 +316,7 @@ Properties on Targets
/prop_tgt/STATIC_LIBRARY_OPTIONS
/prop_tgt/SUFFIX
/prop_tgt/Swift_DEPENDENCIES_FILE
/prop_tgt/Swift_LANGUAGE_VERSION
/prop_tgt/Swift_MODULE_DIRECTORY
/prop_tgt/Swift_MODULE_NAME
/prop_tgt/TYPE

View File

@ -0,0 +1,6 @@
Swift_LANGUAGE_VERSION
----------------------
This property sets the language version for the Swift sources in the target. If
one is not specified, it will default to ``<CMAKE_Swift_LANGUAGE_VERSION>`` if
specified, otherwise it is the latest version supported by the compiler.

View File

@ -1566,6 +1566,17 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
this->AddConfigVariableFlags(flags, cmStrCat("CMAKE_", lang, "_FLAGS"),
config);
if (lang == "Swift") {
if (const char* v = target->GetProperty("Swift_LANGUAGE_VERSION")) {
if (cmSystemTools::VersionCompare(
cmSystemTools::OP_GREATER_EQUAL,
this->Makefile->GetDefinition("CMAKE_Swift_COMPILER_VERSION"),
"4.2")) {
this->AppendFlags(flags, "-swift-version " + std::string(v));
}
}
}
// Add MSVC runtime library flags. This is activated by the presence
// of a default selection whether or not it is overridden by a property.
const char* msvcRuntimeLibraryDefault =

View File

@ -347,6 +347,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
initProp("LINK_SEARCH_START_STATIC");
initProp("LINK_SEARCH_END_STATIC");
initProp("FOLDER");
initProp("Swift_LANGUAGE_VERSION");
initProp("Swift_MODULE_DIRECTORY");
initProp("VS_JUST_MY_CODE_DEBUGGING");
#ifdef __APPLE__