import PackageDescription
+var sources = [
+ "ggml.c",
+ "llama.cpp",
+ "unicode.cpp",
+ "unicode-data.cpp",
+ "ggml-alloc.c",
+ "ggml-backend.c",
+ "ggml-quants.c",
+]
+
+var resources: [Resource] = []
+var linkerSettings: [LinkerSetting] = []
+var cSettings: [CSetting] = [
+ .unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]),
+ .unsafeFlags(["-fno-objc-arc"]),
+ // NOTE: NEW_LAPACK will required iOS version 16.4+
+ // We should consider add this in the future when we drop support for iOS 14
+ // (ref: ref: https://developer.apple.com/documentation/accelerate/1513264-cblas_sgemm?language=objc)
+ // .define("ACCELERATE_NEW_LAPACK"),
+ // .define("ACCELERATE_LAPACK_ILP64")
+]
+
+#if canImport(Darwin)
+sources.append("ggml-metal.m")
+resources.append(.process("ggml-metal.metal"))
+linkerSettings.append(.linkedFramework("Accelerate"))
+cSettings.append(
+ contentsOf: [
+ .define("GGML_USE_ACCELERATE"),
+ .define("GGML_USE_METAL")
+ ]
+)
+#endif
+
+#if os(Linux)
+ cSettings.append(.define("_GNU_SOURCE"))
+#endif
+
let package = Package(
name: "llama",
platforms: [
"ggml-cuda.h",
"Makefile"
],
- sources: [
- "ggml.c",
- "llama.cpp",
- "unicode.cpp",
- "unicode-data.cpp",
- "ggml-alloc.c",
- "ggml-backend.c",
- "ggml-quants.c",
- "ggml-metal.m",
- ],
- resources: [
- .process("ggml-metal.metal")
- ],
+ sources: sources,
+ resources: resources,
publicHeadersPath: "spm-headers",
- cSettings: [
- .unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]),
- .define("GGML_USE_ACCELERATE"),
- .unsafeFlags(["-fno-objc-arc"]),
- .define("GGML_USE_METAL"),
- // NOTE: NEW_LAPACK will required iOS version 16.4+
- // We should consider add this in the future when we drop support for iOS 14
- // (ref: ref: https://developer.apple.com/documentation/accelerate/1513264-cblas_sgemm?language=objc)
- // .define("ACCELERATE_NEW_LAPACK"),
- // .define("ACCELERATE_LAPACK_ILP64")
- ],
- linkerSettings: [
- .linkedFramework("Accelerate")
- ]
+ cSettings: cSettings,
+ linkerSettings: linkerSettings
)
],
cxxLanguageStandard: .cxx11