#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")/.." echo "==> cargo build --release --workspace" cargo build --release --workspace echo "==> swift build -c release (mlx-embed-server)" (cd mlx-embed-server && swift build -c release) # Metallib workaround: MLX runtime expects mlx.metallib / default.metallib to # sit next to the EmbedServer binary. mlx-swift's build does not place them # there automatically, so we copy from the vendored mlx-embed-server/metal/ # directory (checked into this repo). SWIFT_BIN_DIR=mlx-embed-server/.build/arm64-apple-macosx/release if [ -d "$SWIFT_BIN_DIR" ]; then cp -f mlx-embed-server/metal/mlx.metallib "$SWIFT_BIN_DIR/" cp -f mlx-embed-server/metal/default.metallib "$SWIFT_BIN_DIR/" fi # The SwiftPM "release" symlink: if [ -e mlx-embed-server/.build/release ]; then cp -f mlx-embed-server/metal/mlx.metallib mlx-embed-server/.build/release/ 2>/dev/null || true cp -f mlx-embed-server/metal/default.metallib mlx-embed-server/.build/release/ 2>/dev/null || true fi echo "==> done" echo "orchestrator: target/release/embed-orchestrator" echo "llama-embed-server: target/release/llama-embed-server" echo "mlx-embed-server: mlx-embed-server/.build/release/EmbedServer"