// swift-tools-version:5.5 import PackageDescription var sources = [ "src/llama.cpp", "src/llama-vocab.cpp", "src/llama-grammar.cpp", "src/llama-sampling.cpp", "src/unicode.cpp", "src/unicode-data.cpp", "ggml/src/ggml.c", "ggml/src/ggml-alloc.c", "ggml/src/ggml-backend.cpp", "ggml/src/ggml-backend-reg.cpp", "ggml/src/ggml-cpu/ggml-cpu.c", "ggml/src/ggml-cpu/ggml-cpu.cpp", "ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp", "ggml/src/ggml-cpu/ggml-cpu-hbm.cpp", "ggml/src/ggml-cpu/ggml-cpu-quants.c", "ggml/src/ggml-cpu/ggml-cpu-traits.cpp", "ggml/src/ggml-threading.cpp", "ggml/src/ggml-quants.c", ] var resources: [Resource] = [] var linkerSettings: [LinkerSetting] = [] var cSettings: [CSetting] = [ .unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]), .unsafeFlags(["-fno-objc-arc"]), .headerSearchPath("ggml/src"), .headerSearchPath("ggml/src/ggml-cpu"), // 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") .define("GGML_USE_CPU"), ] #if canImport(Darwin) sources.append("ggml/src/ggml-common.h") sources.append("ggml/src/ggml-metal/ggml-metal.m") resources.append(.process("ggml/src/ggml-metal/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: [ .macOS(.v12), .iOS(.v14), .watchOS(.v4), .tvOS(.v14) ], products: [ .library(name: "llama", targets: ["llama"]), ], targets: [ .target( name: "llama", path: ".", exclude: [ "build", "cmake", "examples", "scripts", "models", "tests", "CMakeLists.txt", "Makefile", "ggml/src/ggml-metal-embed.metal" ], sources: sources, resources: resources, publicHeadersPath: "spm-headers", cSettings: cSettings, linkerSettings: linkerSettings ) ], cxxLanguageStandard: .cxx17 )