Skip to content

Commit 814dbe0

Browse files
committed
Add library evolution support and tweak some env
1 parent 1dd8b16 commit 814dbe0

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

Package.swift

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,21 @@ func envEnable(_ key: String, default defaultValue: Bool = false) -> Bool {
2121
}
2222
}
2323

24+
#if os(macOS)
25+
// NOTE: #if os(macOS) check is not accurate if we are cross compiling for Linux platform. So we add an env key to specify it.
26+
let buildForDarwinPlatform = envEnable("OPENSWIFTUI_BUILD_FOR_DARWIN_PLATFORM", default: true)
27+
#else
28+
let buildForDarwinPlatform = envEnable("OPENSWIFTUI_BUILD_FOR_DARWIN_PLATFORM")
29+
#endif
30+
2431
var sharedCXXSettings: [CXXSetting] = []
2532
var sharedSwiftSettings: [SwiftSetting] = [
2633
.swiftLanguageMode(.v5),
2734
]
2835

2936
let development = envEnable("OPENOBSERVATION_DEVELOPMENT", default: false)
3037

31-
// MARK: [env] OPENGRAPH_SWIFT_TOOLCHAIN_PATH
38+
// MARK: [env] OPENSWIFTUI_SWIFT_TOOLCHAIN_PATH
3239

3340
// Modified from: https://github.com/swiftlang/swift/blob/main/SwiftCompilerSources/Package.swift
3441
//
@@ -43,7 +50,7 @@ let development = envEnable("OPENOBSERVATION_DEVELOPMENT", default: false)
4350
//
4451
// where <$OPENGRAPH_SWIFT_TOOLCHAIN_PATH> is the parent directory of the swift repository.
4552

46-
let swiftToolchainPath = Context.environment["OPENOBSERVATION_SWIFT_TOOLCHAIN_PATH"] ?? (development ? "/Volumes/BuildMachine/swift-project" : "")
53+
let swiftToolchainPath = Context.environment["OPENSWIFTUI_SWIFT_TOOLCHAIN_PATH"] ?? (development ? "/Volumes/BuildMachine/swift-project" : "")
4754
if !swiftToolchainPath.isEmpty {
4855
sharedCXXSettings.append(
4956
.unsafeFlags(
@@ -65,21 +72,31 @@ if !swiftToolchainPath.isEmpty {
6572
)
6673
}
6774

68-
// MARK: [env] OPENOBSERVATION_SWIFT_TOOLCHAIN_VERSION
75+
// MARK: [env] OPENSWIFTUI_SWIFT_TOOLCHAIN_VERSION
6976

70-
let swiftToolchainVersion = Context.environment["OPENOBSERVATION_SWIFT_TOOLCHAIN_VERSION"] ?? (development ? "6.0.2" : "")
77+
let swiftToolchainVersion = Context.environment["OPENSWIFTUI_SWIFT_TOOLCHAIN_VERSION"] ?? (development ? "6.0.2" : "")
7178
if !swiftToolchainVersion.isEmpty {
7279
sharedCXXSettings.append(
73-
.define("OPENOBSERVATION_SWIFT_TOOLCHAIN_VERSION", to: swiftToolchainVersion)
80+
.define("OPENSWIFTUI_SWIFT_TOOLCHAIN_VERSION", to: swiftToolchainVersion)
7481
)
7582
}
7683

77-
// MARK: - [env] OPENOBSERVATION_SWIFT_TOOLCHAIN_SUPPORTED
84+
// MARK: - [env] OPENSWIFTUI_SWIFT_TOOLCHAIN_SUPPORTED
7885

79-
let swiftToolchainSupported = envEnable("OPENOBSERVATION_SWIFT_TOOLCHAIN_SUPPORTED", default: !swiftToolchainVersion.isEmpty)
86+
let swiftToolchainSupported = envEnable("OPENSWIFTUI_SWIFT_TOOLCHAIN_SUPPORTED", default: !swiftToolchainVersion.isEmpty)
8087
if swiftToolchainSupported {
81-
sharedCXXSettings.append(.define("OPENOBSERVATION_SWIFT_TOOLCHAIN_SUPPORTED"))
82-
sharedSwiftSettings.append(.define("OPENOBSERVATION_SWIFT_TOOLCHAIN_SUPPORTED"))
88+
sharedCXXSettings.append(.define("OPENSWIFTUI_SWIFT_TOOLCHAIN_SUPPORTED"))
89+
sharedSwiftSettings.append(.define("OPENSWIFTUI_SWIFT_TOOLCHAIN_SUPPORTED"))
90+
}
91+
92+
// MARK: - [env] OPENSWIFTUI_LIBRARY_EVOLUTION
93+
94+
let libraryEvolutionCondition = envEnable("OPENSWIFTUI_LIBRARY_EVOLUTION", default: buildForDarwinPlatform)
95+
96+
if libraryEvolutionCondition {
97+
// NOTE: -enable-library-evolution will cause module verify failure for `swift build`.
98+
// Either set OPENATTRIBUTEGRAPH_LIBRARY_EVOLUTION=0 or add `-Xswiftc -no-verify-emitted-module-interface` after `swift build`
99+
sharedSwiftSettings.append(.unsafeFlags(["-enable-library-evolution", "-no-verify-emitted-module-interface"]))
83100
}
84101

85102
let package = Package(

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ withObservationTracking {
6767

6868
## Configuration
6969

70-
- `OPENOBSERVATION_SWIFT_TOOLCHAIN_SUPPORTED`: Enable Swift toolchain runtime implementation (auto-detected)
71-
- Config `OPENOBSERVATION_SWIFT_TOOLCHAIN_PATH` and `OPENOBSERVATION_SWIFT_TOOLCHAIN_VERSION`
70+
- `OPENSWIFTUI_SWIFT_TOOLCHAIN_SUPPORTED`: Enable Swift toolchain runtime implementation (auto-detected)
71+
- Config `OPENSWIFTUI_SWIFT_TOOLCHAIN_PATH` and `OPENSWIFTUI_SWIFT_TOOLCHAIN_VERSION`
7272
- `OPENOBSERVATION_DEVELOPMENT`: Development mode
7373

7474
## License

0 commit comments

Comments
 (0)