ci : reduce builds in build-xcframework.sh (#27252)
* ci : parallelize platform builds in build-xcframework.sh The ios-xcode release job builds 7 platform/simulator configurations sequentially, each with -j $(nproc). Run them with at most 3 concurrent builds (the release runner has 3 cores), splitting the cores between the builds (-j 1 each on the runner), so total CPU pressure is unchanged while the build phase runs about 2.3x faster. - convert the 7 build blocks into functions (flags unchanged) - add a run_builds_parallel pool: 3-slot sliding window, per-build logs, dumps the failing log and aborts on error (background job failures do not trigger set -e) - queue the 2-arch builds first so the slower builds occupy the slots early Assisted-by: pi:llama.cpp/Qwen3.8-27B * pi : add guideline for comments * cont : disable 5/7 builds * ci : make build-xcframework.sh builds configurable via CLI args The script now takes an optional list of builds to run (ios-sim ios-device macos visionos visionos-sim tvos-sim tvos-device); with no arguments it builds all of them, as before. The per-build lists for the build pool, framework setup, static library combining and xcframework creation are now driven by a single build_spec lookup instead of four hardcoded (partially commented-out) lists. release.yml builds only macos and ios-device to cut the build time. Assisted-by: pi:llama.cpp/Qwen3.8-27B
This commit is contained in:
@@ -1439,7 +1439,9 @@ jobs:
|
|||||||
- name: xcodebuild for swift package
|
- name: xcodebuild for swift package
|
||||||
id: xcodebuild
|
id: xcodebuild
|
||||||
run: |
|
run: |
|
||||||
./build-xcframework.sh
|
# note: only macos and ios-device due to long build time
|
||||||
|
# ref: https://github.com/ggml-org/llama.cpp/pull/27252
|
||||||
|
./build-xcframework.sh macos ios-device
|
||||||
|
|
||||||
- name: Build Xcode project
|
- name: Build Xcode project
|
||||||
run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build
|
run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ You are a coding agent. Here are some very important rules that you must follow:
|
|||||||
|
|
||||||
General:
|
General:
|
||||||
- Be very precise and concise when writing code, comments, explanations, etc.
|
- Be very precise and concise when writing code, comments, explanations, etc.
|
||||||
|
- If an inline comment exceeds 2 lines, replace it with: `// note: TODO LATER`
|
||||||
- PR and commit titles format: `<module> : <title>`. Lookup recents for examples
|
- PR and commit titles format: `<module> : <title>`. Lookup recents for examples
|
||||||
- Don't try to build or run the code unless you are explicitly asked to do so
|
- Don't try to build or run the code unless you are explicitly asked to do so
|
||||||
- Use the `gh` CLI tool when querying PRs, issues, or other GitHub resources
|
- Use the `gh` CLI tool when querying PRs, issues, or other GitHub resources
|
||||||
|
|||||||
+131
-50
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
|
# usage: ./build-xcframework.sh [BUILD ...] (default: all builds)
|
||||||
|
# builds: ios-sim ios-device macos visionos visionos-sim tvos-sim tvos-device
|
||||||
|
#
|
||||||
# Options
|
# Options
|
||||||
IOS_MIN_OS_VERSION=16.4
|
IOS_MIN_OS_VERSION=16.4
|
||||||
MACOS_MIN_OS_VERSION=13.3
|
MACOS_MIN_OS_VERSION=13.3
|
||||||
@@ -19,6 +22,43 @@ GGML_METAL_EMBED_LIBRARY=ON
|
|||||||
GGML_BLAS_DEFAULT=ON
|
GGML_BLAS_DEFAULT=ON
|
||||||
GGML_OPENMP=OFF
|
GGML_OPENMP=OFF
|
||||||
|
|
||||||
|
# Max number of concurrent platform builds
|
||||||
|
MAX_PARALLEL_BUILDS=1
|
||||||
|
|
||||||
|
# Split the available cores between the concurrent builds (min 1)
|
||||||
|
JOBS_PER_BUILD=$(( $(sysctl -n hw.logicalcpu) / MAX_PARALLEL_BUILDS ))
|
||||||
|
if [[ "$JOBS_PER_BUILD" -lt 1 ]]; then
|
||||||
|
JOBS_PER_BUILD=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# echo "build_fn build_dir release_dir platform is_simulator min_os" for a build name
|
||||||
|
build_spec() {
|
||||||
|
case "$1" in
|
||||||
|
ios-sim) echo "build_ios_sim build-ios-sim Release-iphonesimulator ios true ${IOS_MIN_OS_VERSION}" ;;
|
||||||
|
ios-device) echo "build_ios_device build-ios-device Release-iphoneos ios false ${IOS_MIN_OS_VERSION}" ;;
|
||||||
|
macos) echo "build_macos build-macos Release macos false ${MACOS_MIN_OS_VERSION}" ;;
|
||||||
|
visionos) echo "build_visionos build-visionos Release-xros visionos false ${VISIONOS_MIN_OS_VERSION}" ;;
|
||||||
|
visionos-sim) echo "build_visionos_sim build-visionos-sim Release-xrsimulator visionos true ${VISIONOS_MIN_OS_VERSION}" ;;
|
||||||
|
tvos-sim) echo "build_tvos_sim build-tvos-sim Release-appletvsimulator tvos true ${TVOS_MIN_OS_VERSION}" ;;
|
||||||
|
tvos-device) echo "build_tvos_device build-tvos-device Release-appletvos tvos false ${TVOS_MIN_OS_VERSION}" ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Default: build everything
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
BUILDS=(ios-sim ios-device macos visionos visionos-sim tvos-sim tvos-device)
|
||||||
|
else
|
||||||
|
BUILDS=("$@")
|
||||||
|
fi
|
||||||
|
for b in "${BUILDS[@]}"; do
|
||||||
|
if ! build_spec "$b" >/dev/null; then
|
||||||
|
echo "Error: unknown build '$b'" >&2
|
||||||
|
echo "Valid builds: ios-sim ios-device macos visionos visionos-sim tvos-sim tvos-device" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
COMMON_C_FLAGS="-Wno-macro-redefined -Wno-shorten-64-to-32 -Wno-unused-command-line-argument -g"
|
COMMON_C_FLAGS="-Wno-macro-redefined -Wno-shorten-64-to-32 -Wno-unused-command-line-argument -g"
|
||||||
COMMON_CXX_FLAGS="-Wno-macro-redefined -Wno-shorten-64-to-32 -Wno-unused-command-line-argument -g"
|
COMMON_CXX_FLAGS="-Wno-macro-redefined -Wno-shorten-64-to-32 -Wno-unused-command-line-argument -g"
|
||||||
|
|
||||||
@@ -401,8 +441,9 @@ combine_static_libraries() {
|
|||||||
rm -rf "${temp_dir}"
|
rm -rf "${temp_dir}"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "Building for iOS simulator..."
|
build_ios_sim() {
|
||||||
cmake -B build-ios-sim -G Xcode \
|
echo "Building for iOS simulator..."
|
||||||
|
cmake -B build-ios-sim -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \
|
||||||
-DIOS=ON \
|
-DIOS=ON \
|
||||||
@@ -415,10 +456,12 @@ cmake -B build-ios-sim -G Xcode \
|
|||||||
-DLLAMA_OPENSSL=OFF \
|
-DLLAMA_OPENSSL=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-ios-sim --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-ios-sim --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
echo "Building for iOS devices..."
|
build_ios_device() {
|
||||||
cmake -B build-ios-device -G Xcode \
|
echo "Building for iOS devices..."
|
||||||
|
cmake -B build-ios-device -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_SYSTEM_NAME=iOS \
|
-DCMAKE_SYSTEM_NAME=iOS \
|
||||||
@@ -430,10 +473,12 @@ cmake -B build-ios-device -G Xcode \
|
|||||||
-DLLAMA_OPENSSL=OFF \
|
-DLLAMA_OPENSSL=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-ios-device --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-ios-device --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
echo "Building for macOS..."
|
build_macos() {
|
||||||
cmake -B build-macos -G Xcode \
|
echo "Building for macOS..."
|
||||||
|
cmake -B build-macos -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
||||||
@@ -441,10 +486,12 @@ cmake -B build-macos -G Xcode \
|
|||||||
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \
|
||||||
-DLLAMA_OPENSSL=OFF \
|
-DLLAMA_OPENSSL=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-macos --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-macos --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
echo "Building for visionOS..."
|
build_visionos() {
|
||||||
cmake -B build-visionos -G Xcode \
|
echo "Building for visionOS..."
|
||||||
|
cmake -B build-visionos -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_OSX_ARCHITECTURES="arm64" \
|
-DCMAKE_OSX_ARCHITECTURES="arm64" \
|
||||||
@@ -457,10 +504,12 @@ cmake -B build-visionos -G Xcode \
|
|||||||
-DLLAMA_BUILD_SERVER=OFF \
|
-DLLAMA_BUILD_SERVER=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-visionos --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-visionos --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
echo "Building for visionOS simulator..."
|
build_visionos_sim() {
|
||||||
cmake -B build-visionos-sim -G Xcode \
|
echo "Building for visionOS simulator..."
|
||||||
|
cmake -B build-visionos-sim -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
||||||
@@ -473,11 +522,13 @@ cmake -B build-visionos-sim -G Xcode \
|
|||||||
-DLLAMA_BUILD_SERVER=OFF \
|
-DLLAMA_BUILD_SERVER=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-visionos-sim --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-visionos-sim --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
# Add tvOS builds (might need the same u_int definitions as watchOS and visionOS)
|
# Add tvOS builds (might need the same u_int definitions as watchOS and visionOS)
|
||||||
echo "Building for tvOS simulator..."
|
build_tvos_sim() {
|
||||||
cmake -B build-tvos-sim -G Xcode \
|
echo "Building for tvOS simulator..."
|
||||||
|
cmake -B build-tvos-sim -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_SYSTEM_NAME=tvOS \
|
-DCMAKE_SYSTEM_NAME=tvOS \
|
||||||
@@ -490,10 +541,12 @@ cmake -B build-tvos-sim -G Xcode \
|
|||||||
-DLLAMA_OPENSSL=OFF \
|
-DLLAMA_OPENSSL=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-tvos-sim --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-tvos-sim --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
echo "Building for tvOS devices..."
|
build_tvos_device() {
|
||||||
cmake -B build-tvos-device -G Xcode \
|
echo "Building for tvOS devices..."
|
||||||
|
cmake -B build-tvos-device -G Xcode \
|
||||||
"${COMMON_CMAKE_ARGS[@]}" \
|
"${COMMON_CMAKE_ARGS[@]}" \
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \
|
||||||
-DCMAKE_SYSTEM_NAME=tvOS \
|
-DCMAKE_SYSTEM_NAME=tvOS \
|
||||||
@@ -506,43 +559,71 @@ cmake -B build-tvos-device -G Xcode \
|
|||||||
-DLLAMA_OPENSSL=OFF \
|
-DLLAMA_OPENSSL=OFF \
|
||||||
-DMTMD_VIDEO=OFF \
|
-DMTMD_VIDEO=OFF \
|
||||||
-S .
|
-S .
|
||||||
cmake --build build-tvos-device --config Release -j $(sysctl -n hw.logicalcpu) -- -quiet
|
cmake --build build-tvos-device --config Release -j "${JOBS_PER_BUILD}" -- -quiet
|
||||||
|
}
|
||||||
|
|
||||||
|
run_builds_parallel() {
|
||||||
|
local -a pids=()
|
||||||
|
local -a names=()
|
||||||
|
local name i
|
||||||
|
for name in "$@"; do
|
||||||
|
# Wait for the oldest running build to free a slot
|
||||||
|
if [[ "${#pids[@]}" -ge "$MAX_PARALLEL_BUILDS" ]]; then
|
||||||
|
if ! wait "${pids[0]}"; then
|
||||||
|
echo "ERROR: build '${names[0]}' failed, log follows (${names[0]}.log):" >&2
|
||||||
|
kill "${pids[@]}" 2>/dev/null || true
|
||||||
|
cat "${names[0]}.log" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
pids=("${pids[@]:1}")
|
||||||
|
names=("${names[@]:1}")
|
||||||
|
fi
|
||||||
|
echo "Starting build: $name (log: ${name}.log, -j ${JOBS_PER_BUILD})"
|
||||||
|
"$name" > "${name}.log" 2>&1 &
|
||||||
|
pids+=("$!")
|
||||||
|
names+=("$name")
|
||||||
|
done
|
||||||
|
# Wait for the remaining builds
|
||||||
|
for i in "${!pids[@]}"; do
|
||||||
|
if ! wait "${pids[$i]}"; then
|
||||||
|
echo "ERROR: build '${names[$i]}' failed, log follows (${names[$i]}.log):" >&2
|
||||||
|
kill "${pids[@]}" 2>/dev/null || true
|
||||||
|
cat "${names[$i]}.log" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
BUILD_FNS=()
|
||||||
|
for b in "${BUILDS[@]}"; do
|
||||||
|
read -r fn _ < <(build_spec "$b")
|
||||||
|
BUILD_FNS+=("$fn")
|
||||||
|
done
|
||||||
|
echo "Building: ${BUILDS[*]} (max ${MAX_PARALLEL_BUILDS} at a time, -j ${JOBS_PER_BUILD} each)..."
|
||||||
|
run_builds_parallel "${BUILD_FNS[@]}"
|
||||||
|
|
||||||
# Setup frameworks and copy binaries and headers
|
# Setup frameworks and copy binaries and headers
|
||||||
echo "Setting up framework structures..."
|
echo "Setting up framework structures..."
|
||||||
setup_framework_structure "build-ios-sim" ${IOS_MIN_OS_VERSION} "ios"
|
for b in "${BUILDS[@]}"; do
|
||||||
setup_framework_structure "build-ios-device" ${IOS_MIN_OS_VERSION} "ios"
|
read -r _ bdir _ platform _ min_os < <(build_spec "$b")
|
||||||
setup_framework_structure "build-macos" ${MACOS_MIN_OS_VERSION} "macos"
|
setup_framework_structure "$bdir" "$min_os" "$platform"
|
||||||
setup_framework_structure "build-visionos" ${VISIONOS_MIN_OS_VERSION} "visionos"
|
done
|
||||||
setup_framework_structure "build-visionos-sim" ${VISIONOS_MIN_OS_VERSION} "visionos"
|
|
||||||
setup_framework_structure "build-tvos-sim" ${TVOS_MIN_OS_VERSION} "tvos"
|
|
||||||
setup_framework_structure "build-tvos-device" ${TVOS_MIN_OS_VERSION} "tvos"
|
|
||||||
|
|
||||||
# Create dynamic libraries from static libraries
|
# Create dynamic libraries from static libraries
|
||||||
echo "Creating dynamic libraries from static libraries..."
|
echo "Creating dynamic libraries from static libraries..."
|
||||||
combine_static_libraries "build-ios-sim" "Release-iphonesimulator" "ios" "true"
|
for b in "${BUILDS[@]}"; do
|
||||||
combine_static_libraries "build-ios-device" "Release-iphoneos" "ios" "false"
|
read -r _ bdir rdir platform is_sim _ < <(build_spec "$b")
|
||||||
combine_static_libraries "build-macos" "Release" "macos" "false"
|
combine_static_libraries "$bdir" "$rdir" "$platform" "$is_sim"
|
||||||
combine_static_libraries "build-visionos" "Release-xros" "visionos" "false"
|
done
|
||||||
combine_static_libraries "build-visionos-sim" "Release-xrsimulator" "visionos" "true"
|
|
||||||
combine_static_libraries "build-tvos-sim" "Release-appletvsimulator" "tvos" "true"
|
|
||||||
combine_static_libraries "build-tvos-device" "Release-appletvos" "tvos" "false"
|
|
||||||
|
|
||||||
# Create XCFramework with correct debug symbols paths
|
# Create XCFramework with correct debug symbols paths
|
||||||
echo "Creating XCFramework..."
|
echo "Creating XCFramework..."
|
||||||
|
XCFW_ARGS=()
|
||||||
|
for b in "${BUILDS[@]}"; do
|
||||||
|
read -r _ bdir _ _ _ _ < <(build_spec "$b")
|
||||||
|
XCFW_ARGS+=(-framework "$(pwd)/${bdir}/framework/llama.framework")
|
||||||
|
XCFW_ARGS+=(-debug-symbols "$(pwd)/${bdir}/dSYMs/llama.dSYM")
|
||||||
|
done
|
||||||
xcrun xcodebuild -create-xcframework \
|
xcrun xcodebuild -create-xcframework \
|
||||||
-framework $(pwd)/build-ios-sim/framework/llama.framework \
|
"${XCFW_ARGS[@]}" \
|
||||||
-debug-symbols $(pwd)/build-ios-sim/dSYMs/llama.dSYM \
|
-output "$(pwd)/build-apple/llama.xcframework"
|
||||||
-framework $(pwd)/build-ios-device/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-ios-device/dSYMs/llama.dSYM \
|
|
||||||
-framework $(pwd)/build-macos/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-macos/dSYMs/llama.dSYM \
|
|
||||||
-framework $(pwd)/build-visionos/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-visionos/dSYMs/llama.dSYM \
|
|
||||||
-framework $(pwd)/build-visionos-sim/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-visionos-sim/dSYMs/llama.dSYM \
|
|
||||||
-framework $(pwd)/build-tvos-device/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-tvos-device/dSYMs/llama.dSYM \
|
|
||||||
-framework $(pwd)/build-tvos-sim/framework/llama.framework \
|
|
||||||
-debug-symbols $(pwd)/build-tvos-sim/dSYMs/llama.dSYM \
|
|
||||||
-output $(pwd)/build-apple/llama.xcframework
|
|
||||||
|
|||||||
Reference in New Issue
Block a user