From 6d90d3641d1fc070d04c61c1f11e7f4fd65f942d Mon Sep 17 00:00:00 2001 From: Owen Voorhees Date: Thu, 22 May 2025 13:17:45 -0700 Subject: [PATCH] Document setting for allowing use of explicit modules with c++ interop --- Sources/SWBCore/Settings/BuiltinMacros.swift | 4 ++-- .../SWBCore/SpecImplementations/Tools/SwiftCompiler.swift | 2 +- Sources/SWBUniversalPlatform/Specs/Swift.xcspec | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Sources/SWBCore/Settings/BuiltinMacros.swift b/Sources/SWBCore/Settings/BuiltinMacros.swift index 5f18489a..1f850fec 100644 --- a/Sources/SWBCore/Settings/BuiltinMacros.swift +++ b/Sources/SWBCore/Settings/BuiltinMacros.swift @@ -1014,7 +1014,7 @@ public final class BuiltinMacros { public static let SWIFT_USE_INTEGRATED_DRIVER = BuiltinMacros.declareBooleanMacro("SWIFT_USE_INTEGRATED_DRIVER") public static let SWIFT_EAGER_MODULE_EMISSION_IN_WMO = BuiltinMacros.declareBooleanMacro("SWIFT_EAGER_MODULE_EMISSION_IN_WMO") public static let SWIFT_ENABLE_EXPLICIT_MODULES = BuiltinMacros.declareEnumMacro("SWIFT_ENABLE_EXPLICIT_MODULES") as EnumMacroDeclaration - public static let _SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP = BuiltinMacros.declareBooleanMacro("_SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP") + public static let SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP = BuiltinMacros.declareBooleanMacro("SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP") public static let _SWIFT_EXPLICIT_MODULES_ALLOW_BEFORE_SWIFT_5 = BuiltinMacros.declareBooleanMacro("_SWIFT_EXPLICIT_MODULES_ALLOW_BEFORE_SWIFT_5") public static let _EXPERIMENTAL_SWIFT_EXPLICIT_MODULES = BuiltinMacros.declareEnumMacro("_EXPERIMENTAL_SWIFT_EXPLICIT_MODULES") as EnumMacroDeclaration public static let SWIFT_ENABLE_TESTABILITY = BuiltinMacros.declareBooleanMacro("SWIFT_ENABLE_TESTABILITY") @@ -2172,7 +2172,7 @@ public final class BuiltinMacros { SWIFT_USE_INTEGRATED_DRIVER, SWIFT_EAGER_MODULE_EMISSION_IN_WMO, SWIFT_ENABLE_EXPLICIT_MODULES, - _SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP, + SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP, _SWIFT_EXPLICIT_MODULES_ALLOW_BEFORE_SWIFT_5, _EXPERIMENTAL_SWIFT_EXPLICIT_MODULES, SWIFT_ENABLE_BARE_SLASH_REGEX, diff --git a/Sources/SWBCore/SpecImplementations/Tools/SwiftCompiler.swift b/Sources/SWBCore/SpecImplementations/Tools/SwiftCompiler.swift index 44789631..7ed0f844 100644 --- a/Sources/SWBCore/SpecImplementations/Tools/SwiftCompiler.swift +++ b/Sources/SWBCore/SpecImplementations/Tools/SwiftCompiler.swift @@ -1377,7 +1377,7 @@ public final class SwiftCompilerSpec : CompilerSpec, SpecIdentifierType, SwiftDi // rdar://122829880 (Turn off Swift explicit modules when c++ interop is enabled) guard scope.evaluate(BuiltinMacros.SWIFT_OBJC_INTEROP_MODE) != "objcxx" && !scope.evaluate(BuiltinMacros.OTHER_SWIFT_FLAGS).contains("-cxx-interoperability-mode=default") else { - return scope.evaluate(BuiltinMacros._SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP) + return scope.evaluate(BuiltinMacros.SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP) } // Disable explicit modules in the pre-Swift-5 language modes to avoid versioned API notes confusion. diff --git a/Sources/SWBUniversalPlatform/Specs/Swift.xcspec b/Sources/SWBUniversalPlatform/Specs/Swift.xcspec index 7bdda1e0..ae0807b4 100644 --- a/Sources/SWBUniversalPlatform/Specs/Swift.xcspec +++ b/Sources/SWBUniversalPlatform/Specs/Swift.xcspec @@ -1021,6 +1021,13 @@ Category = "General"; Description = "Coordinates the build of the main module's modular dependencies via explicit tasks scheduled by the build system."; }, + { + Name = "SWIFT_EXPLICIT_MODULES_ALLOW_CXX_INTEROP"; + Type = Boolean; + DisplayName = "Use Explicitly Built Modules with C++ Interoperability"; + Category = "General"; + Description = "Enable use of explicitly built modules in Swift code which has adopted C++ interoperability."; + }, { Name = "SWIFT_ENABLE_COMPILE_CACHE"; Type = Boolean;