Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 7 additions & 14 deletions Package.swift.template
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
*/

import PackageDescription
import Foundation

let version = "__VERSION__"
let url = "https://ossci-ios.s3.amazonaws.com/executorch/"
Expand Down Expand Up @@ -144,23 +143,17 @@ for (key, value) in products {
packageTargets.append(target)
}

// The MLX Metal kernel libraries, one per platform slice, shipped as a single
// resource bundle both MLX products share. Kept out of the generic loop above so
// there is one bundle (executorch_backend_mlx_resources.bundle) rather than a
// separate debug copy, and so the release and debug delegates resolve the same
// name. Each slice's MLX binary asks for its own mlx-<slice>.metallib. The files
// are committed to this branch by the release job and gitignored elsewhere, so
// each is included only when present.
// One resource bundle shared by both MLX products (release and debug) so they
// resolve the same bundle name, with a per-slice metallib since one slice's does
// not load on another. Kept out of the loop above to avoid a per-debug copy. The
// release job commits all three files beside the manifest, so copy them
// unconditionally.
let mlxMetallibSlices = ["mlx-ios", "mlx-ios-simulator", "mlx-macos"]
let mlxResourcesDir = ".Package.swift/backend_mlx_resources"
if products.keys.contains("backend_mlx") {
packageTargets.append(.target(
name: "backend_mlx_resources",
path: mlxResourcesDir,
resources: mlxMetallibSlices.compactMap { slice in
FileManager.default.fileExists(atPath: "\(mlxResourcesDir)/\(slice).metallib")
? .copy("\(slice).metallib") : nil
}
path: ".Package.swift/backend_mlx_resources",
resources: mlxMetallibSlices.map { .copy("\($0).metallib") }
))
for suffix in ["", debug_suffix] {
if let index = packageTargets.firstIndex(where: {
Expand Down
Loading