@@ -49,10 +49,56 @@ default:
4949 ]
5050}
5151
52+ // Source: https://github.com/swiftlang/swift/blob/main/SwiftCompilerSources/Package.swift
53+ // To successfully build, you'll need to create a couple of symlinks to an
54+ // existing Ninja build:
55+ //
56+ // cd $OPENGRAPH_SWIFT_TOOLCHAIN_PATH
57+ // mkdir -p build/Default
58+ // ln -s build/<Ninja-Build>/llvm-<os+arch> build/Default/llvm
59+ // ln -s build/<Ninja-Build>/swift-<os+arch> build/Default/swift
60+ //
61+ // where <project-root> is the parent directory of the swift repository.
62+ //
63+ // FIXME: We may want to consider generating Package.swift as a part of the
64+ // build.
65+
66+ let swiftToolchainVersion = Context . environment [ " OPENGRAPH_SWIFT_TOOLCHAIN_VERSION " ] ?? " 6.0.2 "
67+ let swiftToolchainPath = Context . environment [ " OPENGRAPH_SWIFT_TOOLCHAIN_PATH " ] ?? " /Volumes/BuildMachine/swift-project "
68+
69+ var sharedCXXSettings : [ CXXSetting ] = [ ]
70+
71+ if !swiftToolchainPath. isEmpty {
72+ sharedCXXSettings. append (
73+ . unsafeFlags(
74+ [
75+ " -static " ,
76+ " -DCOMPILED_WITH_SWIFT " ,
77+ " -DPURE_BRIDGING_MODE " ,
78+ " -UIBOutlet " , " -UIBAction " , " -UIBInspectable " ,
79+ " -I \( swiftToolchainPath) /swift/include " ,
80+ " -I \( swiftToolchainPath) /swift/stdlib/public/SwiftShims " ,
81+ " -I \( swiftToolchainPath) /llvm-project/llvm/include " ,
82+ " -I \( swiftToolchainPath) /llvm-project/clang/include " ,
83+ " -I \( swiftToolchainPath) /build/Default/swift/include " ,
84+ " -I \( swiftToolchainPath) /build/Default/llvm/include " ,
85+ " -I \( swiftToolchainPath) /build/Default/llvm/tools/clang/include " ,
86+ ]
87+ )
88+ )
89+ }
90+
91+ if !swiftToolchainVersion. isEmpty {
92+ sharedCXXSettings. append (
93+ . define( " OPENGRAPH_SWIFT_TOOLCHAIN_VERSION " , to: swiftToolchainVersion)
94+ )
95+ }
96+
5297var sharedSwiftSettings : [ SwiftSetting ] = [
5398 . enableUpcomingFeature( " InternalImportsByDefault " ) ,
5499 . define( " OPENGRAPH_RELEASE_ \( releaseVersion) " ) ,
55100 . swiftLanguageMode( . v5) ,
101+ . interoperabilityMode( . Cxx) ,
56102]
57103
58104if releaseVersion >= 2021 {
@@ -106,8 +152,9 @@ let package = Package(
106152 name: " OpenGraph " ,
107153 platforms: platforms,
108154 products: [
109- . library( name: " OpenGraphShims " , targets: [ " OpenGraphShims " ] ) ,
155+ . library( name: " OpenGraph_SPI " , targets: [ " OpenGraph_SPI " ] ) ,
110156 . library( name: " OpenGraph " , targets: [ " OpenGraph " ] ) ,
157+ . library( name: " OpenGraphShims " , targets: [ " OpenGraphShims " ] ) ,
111158 ] ,
112159 dependencies: [
113160 . package ( url: " https://github.com/apple/swift-numerics " , from: " 1.0.2 " ) ,
@@ -118,11 +165,7 @@ let package = Package(
118165 // The SwiftPM support for such usage is still in progress.
119166 . target(
120167 name: " OpenGraph_SPI " ,
121- cSettings: [
122- . unsafeFlags( [ " -I " , includePath] , . when( platforms: . nonDarwinPlatforms) ) ,
123- . define( " __COREFOUNDATION_FORSWIFTFOUNDATIONONLY__ " , to: " 1 " , . when( platforms: . nonDarwinPlatforms) ) ,
124- ] ,
125- cxxSettings: [
168+ cxxSettings: sharedCXXSettings + [
126169 . unsafeFlags( [ " -I " , includePath] , . when( platforms: . nonDarwinPlatforms) ) ,
127170 . define( " __COREFOUNDATION_FORSWIFTFOUNDATIONONLY__ " , to: " 1 " , . when( platforms: . nonDarwinPlatforms) ) ,
128171 ]
0 commit comments