From b6dc81c85a57d0fbb758dce90f20f8c8841811c4 Mon Sep 17 00:00:00 2001 From: Egor Zhdan Date: Tue, 8 Aug 2023 20:18:14 +0100 Subject: [PATCH] [build] Add a Swift Package manifest This will allow using the project as a dependency of other Swift Packages. --- Package.swift | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Package.swift diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..7166f0d --- /dev/null +++ b/Package.swift @@ -0,0 +1,47 @@ +// swift-tools-version:5.9 +// WARNING: Swift Package Manager support is experimental, please consider using CMake to build this project. + +import PackageDescription +import class Foundation.ProcessInfo + +let env = ProcessInfo.processInfo.environment + +guard let llvmHeaderPath = env["SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_HEADERS"] else { + fatalError("please pass an environment variable to swift-package: " + + "SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_HEADERS " + + "(e.g. swift/llvm-project/llvm/include)") +} +let llvmModuleMapPath = "\(llvmHeaderPath)/llvm/module.modulemap" +guard let llvmGeneratedHeaderPath = env["SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_GENERATED_HEADERS"] else { + fatalError("please pass an environment variable to swift-package: " + + "SWIFT_LLVM_BINDINGS_PATH_TO_LLVM_GENERATED_HEADERS " + + "(e.g. swift/build/Ninja-DebugAssert/llvm-macosx-arm64/include)") +} + +let llvmSwiftSettings: [SwiftSetting] = [ + .interoperabilityMode(.Cxx), + .unsafeFlags([ + "-I\(llvmHeaderPath)", + "-Xcc", "-I\(llvmHeaderPath)", + "-I\(llvmGeneratedHeaderPath)", + "-Xcc", "-I\(llvmGeneratedHeaderPath)", + "-Xcc", "-fmodule-map-file=\(llvmModuleMapPath)", + ]), +] + +let package = Package( + name: "SwiftLLVMBindings", + products: [ + .library(name: "SwiftLLVM_Utils", targets: ["SwiftLLVM_Utils"]), + ], + targets: [ + .target( + name: "SwiftLLVM_Utils", + path: "Sources/LLVM", + exclude: ["CMakeLists.txt"], + sources: ["LLVM_Utils.swift"], + swiftSettings: llvmSwiftSettings + ), + ], + cxxLanguageStandard: .cxx17 +)