Skip to content

Commit 7fc16a2

Browse files
spprichardSteven Prichard
andauthored
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 <[email protected]>
1 parent 17e98d4 commit 7fc16a2

File tree

1 file changed

+42
-27
lines changed

1 file changed

+42
-27
lines changed

Package.swift

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,44 @@
22

33
import PackageDescription
44

5+
var sources = [
6+
"ggml.c",
7+
"llama.cpp",
8+
"unicode.cpp",
9+
"unicode-data.cpp",
10+
"ggml-alloc.c",
11+
"ggml-backend.c",
12+
"ggml-quants.c",
13+
]
14+
15+
var resources: [Resource] = []
16+
var linkerSettings: [LinkerSetting] = []
17+
var cSettings: [CSetting] = [
18+
.unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]),
19+
.unsafeFlags(["-fno-objc-arc"]),
20+
// NOTE: NEW_LAPACK will required iOS version 16.4+
21+
// We should consider add this in the future when we drop support for iOS 14
22+
// (ref: ref: https://developer.apple.com/documentation/accelerate/1513264-cblas_sgemm?language=objc)
23+
// .define("ACCELERATE_NEW_LAPACK"),
24+
// .define("ACCELERATE_LAPACK_ILP64")
25+
]
26+
27+
#if canImport(Darwin)
28+
sources.append("ggml-metal.m")
29+
resources.append(.process("ggml-metal.metal"))
30+
linkerSettings.append(.linkedFramework("Accelerate"))
31+
cSettings.append(
32+
contentsOf: [
33+
.define("GGML_USE_ACCELERATE"),
34+
.define("GGML_USE_METAL")
35+
]
36+
)
37+
#endif
38+
39+
#if os(Linux)
40+
cSettings.append(.define("_GNU_SOURCE"))
41+
#endif
42+
543
let package = Package(
644
name: "llama",
745
platforms: [
@@ -28,34 +66,11 @@ let package = Package(
2866
"ggml-cuda.h",
2967
"Makefile"
3068
],
31-
sources: [
32-
"ggml.c",
33-
"llama.cpp",
34-
"unicode.cpp",
35-
"unicode-data.cpp",
36-
"ggml-alloc.c",
37-
"ggml-backend.c",
38-
"ggml-quants.c",
39-
"ggml-metal.m",
40-
],
41-
resources: [
42-
.process("ggml-metal.metal")
43-
],
69+
sources: sources,
70+
resources: resources,
4471
publicHeadersPath: "spm-headers",
45-
cSettings: [
46-
.unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]),
47-
.define("GGML_USE_ACCELERATE"),
48-
.unsafeFlags(["-fno-objc-arc"]),
49-
.define("GGML_USE_METAL"),
50-
// NOTE: NEW_LAPACK will required iOS version 16.4+
51-
// We should consider add this in the future when we drop support for iOS 14
52-
// (ref: ref: https://developer.apple.com/documentation/accelerate/1513264-cblas_sgemm?language=objc)
53-
// .define("ACCELERATE_NEW_LAPACK"),
54-
// .define("ACCELERATE_LAPACK_ILP64")
55-
],
56-
linkerSettings: [
57-
.linkedFramework("Accelerate")
58-
]
72+
cSettings: cSettings,
73+
linkerSettings: linkerSettings
5974
)
6075
],
6176
cxxLanguageStandard: .cxx11

0 commit comments

Comments
 (0)