Skip to content

Commit b6dc81c

Browse files
committed
[build] Add a Swift Package manifest
This will allow using the project as a dependency of other Swift Packages.
1 parent 5b128eb commit b6dc81c

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

Package.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// swift-tools-version:5.9
2+
// WARNING: Swift Package Manager support is experimental, please consider using CMake to build this project.
3+
4+
import PackageDescription
5+
import class Foundation.ProcessInfo
6+
7+
let env = ProcessInfo.processInfo.environment
8+
9+
guard let llvmHeaderPath = env["SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_HEADERS"] else {
10+
fatalError("please pass an environment variable to swift-package: " +
11+
"SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_HEADERS " +
12+
"(e.g. swift/llvm-project/llvm/include)")
13+
}
14+
let llvmModuleMapPath = "\(llvmHeaderPath)/llvm/module.modulemap"
15+
guard let llvmGeneratedHeaderPath = env["SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_GENERATED_HEADERS"] else {
16+
fatalError("please pass an environment variable to swift-package: " +
17+
"SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_GENERATED_HEADERS " +
18+
"(e.g. swift/build/Ninja-DebugAssert/llvm-macosx-arm64/include)")
19+
}
20+
21+
let llvmSwiftSettings: [SwiftSetting] = [
22+
.interoperabilityMode(.Cxx),
23+
.unsafeFlags([
24+
"-I\(llvmHeaderPath)",
25+
"-Xcc", "-I\(llvmHeaderPath)",
26+
"-I\(llvmGeneratedHeaderPath)",
27+
"-Xcc", "-I\(llvmGeneratedHeaderPath)",
28+
"-Xcc", "-fmodule-map-file=\(llvmModuleMapPath)",
29+
]),
30+
]
31+
32+
let package = Package(
33+
name: "SwiftLLVMBindings",
34+
products: [
35+
.library(name: "SwiftLLVM_Utils", targets: ["SwiftLLVM_Utils"]),
36+
],
37+
targets: [
38+
.target(
39+
name: "SwiftLLVM_Utils",
40+
path: "Sources/LLVM",
41+
exclude: ["CMakeLists.txt"],
42+
sources: ["LLVM_Utils.swift"],
43+
swiftSettings: llvmSwiftSettings
44+
),
45+
],
46+
cxxLanguageStandard: .cxx17
47+
)

0 commit comments

Comments
 (0)