summaryrefslogtreecommitdiff
path: root/Package.swift
diff options
context:
space:
mode:
authorSteven Prichard <spprichard20@gmail.com>2024-04-15 05:14:46 -0500
committerGitHub <noreply@github.com>2024-04-15 13:14:46 +0300
commit7fc16a2c32650d46e79b382ecc6720f58c82f31b (patch)
treec033635398eef09a5e5d53fa7f1ebfda1ca9a2eb /Package.swift
parent17e98d4c96a583d420f12046bc92102381dbd28e (diff)
swift : linux support (#6590)
- Package.swift now supports conditional compilation based on OS - Allows for package to be used by SPM on Non-Apple platforms Co-authored-by: Steven Prichard <steven.prichard@justeattakeaway.com>
Diffstat (limited to 'Package.swift')
-rw-r--r--Package.swift69
1 files changed, 42 insertions, 27 deletions
diff --git a/Package.swift b/Package.swift
index 8b719586..fbd0973b 100644
--- a/Package.swift
+++ b/Package.swift
@@ -2,6 +2,44 @@
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: [
@@ -28,34 +66,11 @@ let package = Package(
"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