Xcode: Pass compile definitions to Swift

correct Xcode generator Swift definitions
original code was defining GCC_PREPROCESSOR_DEFINITIONS which is valid only for C languages
add definitions to SWIFT_ACTIVE_COMPILATION_CONDITIONS when Swift language is used in the target
add test in SwiftOnly
for old Xcode (<8.0), append defines to cflags so it ends up in OTHER_SWIFT_FLAGS

Fixes: #23637
This commit is contained in:
David Geldreich 2022-06-19 22:55:09 +02:00
parent 15f4ee89fe
commit 5cb625eb2f
3 changed files with 19 additions and 0 deletions

View File

@ -2423,6 +2423,18 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
this->AppendDefines(ppDefs, targetDefines);
buildSettings->AddAttribute("GCC_PREPROCESSOR_DEFINITIONS",
ppDefs.CreateList());
if (languages.count("Swift")) {
if (this->XcodeVersion < 80) {
std::string defineString;
std::set<std::string> defines(targetDefines.begin(),
targetDefines.end());
this->CurrentLocalGenerator->JoinDefines(defines, defineString, "Swift");
cflags["Swift"] += " " + defineString;
} else {
buildSettings->AddAttribute("SWIFT_ACTIVE_COMPILATION_CONDITIONS",
ppDefs.CreateList());
}
}
std::string extraLinkOptionsVar;
std::string extraLinkOptions;

View File

@ -25,6 +25,7 @@ endif()
set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift)
add_executable(SwiftOnly main.swift)
target_compile_definitions(SwiftOnly PRIVATE SWIFTONLY)
add_library(L L.swift)

View File

@ -1 +1,7 @@
dump("SwiftOnly")
#if SWIFTONLY
dump("SWIFTONLY defined")
#else
fatalError("SWIFTONLY NOT defined")
#endif