Package.swift 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // swift-tools-version:5.5
  2. import PackageDescription
  3. var sources = [
  4. "src/llama.cpp",
  5. "src/unicode.cpp",
  6. "src/unicode-data.cpp",
  7. "ggml/src/ggml.c",
  8. "ggml/src/ggml-alloc.c",
  9. "ggml/src/ggml-backend.c",
  10. "ggml/src/ggml-quants.c",
  11. ]
  12. var resources: [Resource] = []
  13. var linkerSettings: [LinkerSetting] = []
  14. var cSettings: [CSetting] = [
  15. .unsafeFlags(["-Wno-shorten-64-to-32", "-O3", "-DNDEBUG"]),
  16. .unsafeFlags(["-fno-objc-arc"]),
  17. // NOTE: NEW_LAPACK will required iOS version 16.4+
  18. // We should consider add this in the future when we drop support for iOS 14
  19. // (ref: ref: https://developer.apple.com/documentation/accelerate/1513264-cblas_sgemm?language=objc)
  20. // .define("ACCELERATE_NEW_LAPACK"),
  21. // .define("ACCELERATE_LAPACK_ILP64")
  22. ]
  23. #if canImport(Darwin)
  24. sources.append("ggml/src/ggml-metal.m")
  25. resources.append(.process("ggml/src/ggml-metal.metal"))
  26. linkerSettings.append(.linkedFramework("Accelerate"))
  27. cSettings.append(
  28. contentsOf: [
  29. .define("GGML_USE_ACCELERATE"),
  30. .define("GGML_USE_METAL")
  31. ]
  32. )
  33. #endif
  34. #if os(Linux)
  35. cSettings.append(.define("_GNU_SOURCE"))
  36. #endif
  37. let package = Package(
  38. name: "llama",
  39. platforms: [
  40. .macOS(.v12),
  41. .iOS(.v14),
  42. .watchOS(.v4),
  43. .tvOS(.v14)
  44. ],
  45. products: [
  46. .library(name: "llama", targets: ["llama"]),
  47. ],
  48. targets: [
  49. .target(
  50. name: "llama",
  51. path: ".",
  52. exclude: [
  53. "cmake",
  54. "examples",
  55. "scripts",
  56. "models",
  57. "tests",
  58. "CMakeLists.txt",
  59. "Makefile"
  60. ],
  61. sources: sources,
  62. resources: resources,
  63. publicHeadersPath: "spm-headers",
  64. cSettings: cSettings,
  65. linkerSettings: linkerSettings
  66. )
  67. ],
  68. cxxLanguageStandard: .cxx11
  69. )