|
#!/bin/bash |
|
|
|
|
|
IOS_MIN_OS_VERSION=16.4 |
|
MACOS_MIN_OS_VERSION=13.3 |
|
VISIONOS_MIN_OS_VERSION=1.0 |
|
TVOS_MIN_OS_VERSION=16.4 |
|
|
|
BUILD_SHARED_LIBS=OFF |
|
LLAMA_BUILD_EXAMPLES=OFF |
|
LLAMA_BUILD_TESTS=OFF |
|
LLAMA_BUILD_SERVER=OFF |
|
GGML_METAL=ON |
|
GGML_METAL_EMBED_LIBRARY=ON |
|
GGML_BLAS_DEFAULT=ON |
|
GGML_METAL_USE_BF16=ON |
|
GGML_OPENMP=OFF |
|
|
|
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_CMAKE_ARGS=( |
|
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO |
|
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" |
|
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO |
|
-DCMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT="dwarf-with-dsym" |
|
-DCMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS=YES |
|
-DCMAKE_XCODE_ATTRIBUTE_COPY_PHASE_STRIP=NO |
|
-DCMAKE_XCODE_ATTRIBUTE_STRIP_INSTALLED_PRODUCT=NO |
|
-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml |
|
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} |
|
-DLLAMA_BUILD_EXAMPLES=${LLAMA_BUILD_EXAMPLES} |
|
-DLLAMA_BUILD_TESTS=${LLAMA_BUILD_TESTS} |
|
-DLLAMA_BUILD_SERVER=${LLAMA_BUILD_SERVER} |
|
-DGGML_METAL_EMBED_LIBRARY=${GGML_METAL_EMBED_LIBRARY} |
|
-DGGML_BLAS_DEFAULT=${GGML_BLAS_DEFAULT} |
|
-DGGML_METAL=${GGML_METAL} |
|
-DGGML_METAL_USE_BF16=${GGML_METAL_USE_BF16} |
|
-DGGML_NATIVE=OFF |
|
-DGGML_OPENMP=${GGML_OPENMP} |
|
) |
|
|
|
check_required_tool() { |
|
local tool=$1 |
|
local install_message=$2 |
|
|
|
if ! command -v $tool &> /dev/null; then |
|
echo "Error: $tool is required but not found." |
|
echo "$install_message" |
|
exit 1 |
|
fi |
|
} |
|
echo "Checking for required tools..." |
|
check_required_tool "cmake" "Please install CMake 3.28.0 or later (brew install cmake)" |
|
check_required_tool "xcodebuild" "Please install Xcode and Xcode Command Line Tools (xcode-select --install)" |
|
check_required_tool "libtool" "Please install libtool which should be available with Xcode Command Line Tools (CLT). Make sure Xcode CLT is installed (xcode-select --install)" |
|
check_required_tool "dsymutil" "Please install Xcode and Xcode Command Line Tools (xcode-select --install)" |
|
|
|
set -e |
|
|
|
|
|
rm -rf build-apple |
|
rm -rf build-ios-sim |
|
rm -rf build-ios-device |
|
rm -rf build-macos |
|
rm -rf build-visionos |
|
rm -rf build-visionos-sim |
|
rm -rf build-tvos-sim |
|
rm -rf build-tvos-device |
|
|
|
|
|
setup_framework_structure() { |
|
local build_dir=$1 |
|
local min_os_version=$2 |
|
local platform=$3 |
|
local framework_name="llama" |
|
|
|
echo "Creating ${platform}-style framework structure for ${build_dir}" |
|
|
|
if [[ "$platform" == "macos" ]]; then |
|
|
|
mkdir -p ${build_dir}/framework/${framework_name}.framework/Versions/A/Headers |
|
mkdir -p ${build_dir}/framework/${framework_name}.framework/Versions/A/Modules |
|
mkdir -p ${build_dir}/framework/${framework_name}.framework/Versions/A/Resources |
|
|
|
|
|
ln -sf A ${build_dir}/framework/${framework_name}.framework/Versions/Current |
|
ln -sf Versions/Current/Headers ${build_dir}/framework/${framework_name}.framework/Headers |
|
ln -sf Versions/Current/Modules ${build_dir}/framework/${framework_name}.framework/Modules |
|
ln -sf Versions/Current/Resources ${build_dir}/framework/${framework_name}.framework/Resources |
|
ln -sf Versions/Current/${framework_name} ${build_dir}/framework/${framework_name}.framework/${framework_name} |
|
|
|
|
|
local header_path=${build_dir}/framework/${framework_name}.framework/Versions/A/Headers/ |
|
local module_path=${build_dir}/framework/${framework_name}.framework/Versions/A/Modules/ |
|
else |
|
|
|
mkdir -p ${build_dir}/framework/${framework_name}.framework/Headers |
|
mkdir -p ${build_dir}/framework/${framework_name}.framework/Modules |
|
|
|
|
|
rm -rf ${build_dir}/framework/${framework_name}.framework/Versions |
|
|
|
|
|
local header_path=${build_dir}/framework/${framework_name}.framework/Headers/ |
|
local module_path=${build_dir}/framework/${framework_name}.framework/Modules/ |
|
fi |
|
|
|
|
|
cp include/llama.h ${header_path} |
|
cp ggml/include/ggml.h ${header_path} |
|
cp ggml/include/ggml-alloc.h ${header_path} |
|
cp ggml/include/ggml-backend.h ${header_path} |
|
cp ggml/include/ggml-metal.h ${header_path} |
|
cp ggml/include/ggml-cpu.h ${header_path} |
|
cp ggml/include/ggml-blas.h ${header_path} |
|
cp ggml/include/gguf.h ${header_path} |
|
|
|
|
|
cat > ${module_path}module.modulemap << EOF |
|
framework module llama { |
|
header "llama.h" |
|
header "ggml.h" |
|
header "ggml-alloc.h" |
|
header "ggml-backend.h" |
|
header "ggml-metal.h" |
|
header "ggml-cpu.h" |
|
header "ggml-blas.h" |
|
header "gguf.h" |
|
|
|
link "c++" |
|
link framework "Accelerate" |
|
link framework "Metal" |
|
link framework "Foundation" |
|
|
|
export * |
|
} |
|
EOF |
|
|
|
|
|
local platform_name="" |
|
local sdk_name="" |
|
local supported_platform="" |
|
|
|
case "$platform" in |
|
"ios") |
|
platform_name="iphoneos" |
|
sdk_name="iphoneos${min_os_version}" |
|
supported_platform="iPhoneOS" |
|
local plist_path="${build_dir}/framework/${framework_name}.framework/Info.plist" |
|
local device_family=' <key>UIDeviceFamily</key> |
|
<array> |
|
<integer>1</integer> |
|
<integer>2</integer> |
|
</array>' |
|
;; |
|
"macos") |
|
platform_name="macosx" |
|
sdk_name="macosx${min_os_version}" |
|
supported_platform="MacOSX" |
|
local plist_path="${build_dir}/framework/${framework_name}.framework/Versions/A/Resources/Info.plist" |
|
local device_family="" |
|
;; |
|
"visionos") |
|
platform_name="xros" |
|
sdk_name="xros${min_os_version}" |
|
supported_platform="XRPlatform" |
|
local plist_path="${build_dir}/framework/${framework_name}.framework/Info.plist" |
|
local device_family="" |
|
;; |
|
"tvos") |
|
platform_name="appletvos" |
|
sdk_name="appletvos${min_os_version}" |
|
supported_platform="AppleTVOS" |
|
local plist_path="${build_dir}/framework/${framework_name}.framework/Info.plist" |
|
local device_family=' <key>UIDeviceFamily</key> |
|
<array> |
|
<integer>3</integer> |
|
</array>' |
|
;; |
|
esac |
|
|
|
|
|
cat > ${plist_path} << EOF |
|
<?xml version="1.0" encoding="UTF-8"?> |
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
<plist version="1.0"> |
|
<dict> |
|
<key>CFBundleDevelopmentRegion</key> |
|
<string>en</string> |
|
<key>CFBundleExecutable</key> |
|
<string>llama</string> |
|
<key>CFBundleIdentifier</key> |
|
<string>org.ggml.llama</string> |
|
<key>CFBundleInfoDictionaryVersion</key> |
|
<string>6.0</string> |
|
<key>CFBundleName</key> |
|
<string>llama</string> |
|
<key>CFBundlePackageType</key> |
|
<string>FMWK</string> |
|
<key>CFBundleShortVersionString</key> |
|
<string>1.0</string> |
|
<key>CFBundleVersion</key> |
|
<string>1</string> |
|
<key>MinimumOSVersion</key> |
|
<string>${min_os_version}</string> |
|
<key>CFBundleSupportedPlatforms</key> |
|
<array> |
|
<string>${supported_platform}</string> |
|
</array>${device_family} |
|
<key>DTPlatformName</key> |
|
<string>${platform_name}</string> |
|
<key>DTSDKName</key> |
|
<string>${sdk_name}</string> |
|
</dict> |
|
</plist> |
|
EOF |
|
} |
|
|
|
|
|
combine_static_libraries() { |
|
local build_dir="$1" |
|
local release_dir="$2" |
|
local platform="$3" |
|
local is_simulator="$4" |
|
local base_dir="$(pwd)" |
|
local framework_name="llama" |
|
|
|
|
|
local output_lib="" |
|
if [[ "$platform" == "macos" ]]; then |
|
|
|
output_lib="${build_dir}/framework/${framework_name}.framework/Versions/A/${framework_name}" |
|
else |
|
|
|
output_lib="${build_dir}/framework/${framework_name}.framework/${framework_name}" |
|
fi |
|
|
|
local libs=( |
|
"${base_dir}/${build_dir}/src/${release_dir}/libllama.a" |
|
"${base_dir}/${build_dir}/ggml/src/${release_dir}/libggml.a" |
|
"${base_dir}/${build_dir}/ggml/src/${release_dir}/libggml-base.a" |
|
"${base_dir}/${build_dir}/ggml/src/${release_dir}/libggml-cpu.a" |
|
"${base_dir}/${build_dir}/ggml/src/ggml-metal/${release_dir}/libggml-metal.a" |
|
"${base_dir}/${build_dir}/ggml/src/ggml-blas/${release_dir}/libggml-blas.a" |
|
) |
|
|
|
|
|
local temp_dir="${base_dir}/${build_dir}/temp" |
|
mkdir -p "${temp_dir}" |
|
|
|
|
|
|
|
libtool -static -o "${temp_dir}/combined.a" "${libs[@]}" 2> /dev/null |
|
|
|
|
|
local sdk="" |
|
local archs="" |
|
local min_version_flag="" |
|
local install_name="" |
|
|
|
case "$platform" in |
|
"ios") |
|
if [[ "$is_simulator" == "true" ]]; then |
|
sdk="iphonesimulator" |
|
archs="arm64 x86_64" |
|
min_version_flag="-mios-simulator-version-min=${IOS_MIN_OS_VERSION}" |
|
else |
|
sdk="iphoneos" |
|
archs="arm64" |
|
min_version_flag="-mios-version-min=${IOS_MIN_OS_VERSION}" |
|
fi |
|
install_name="@rpath/llama.framework/llama" |
|
;; |
|
"macos") |
|
sdk="macosx" |
|
archs="arm64 x86_64" |
|
min_version_flag="-mmacosx-version-min=${MACOS_MIN_OS_VERSION}" |
|
install_name="@rpath/llama.framework/Versions/Current/llama" |
|
;; |
|
"visionos") |
|
if [[ "$is_simulator" == "true" ]]; then |
|
sdk="xrsimulator" |
|
archs="arm64 x86_64" |
|
min_version_flag="-mtargetos=xros${VISIONOS_MIN_OS_VERSION}-simulator" |
|
else |
|
sdk="xros" |
|
archs="arm64" |
|
min_version_flag="-mtargetos=xros${VISIONOS_MIN_OS_VERSION}" |
|
fi |
|
|
|
install_name="@rpath/llama.framework/llama" |
|
;; |
|
"tvos") |
|
if [[ "$is_simulator" == "true" ]]; then |
|
sdk="appletvsimulator" |
|
archs="arm64 x86_64" |
|
min_version_flag="-mtvos-simulator-version-min=${TVOS_MIN_OS_VERSION}" |
|
else |
|
sdk="appletvos" |
|
archs="arm64" |
|
min_version_flag="-mtvos-version-min=${TVOS_MIN_OS_VERSION}" |
|
fi |
|
install_name="@rpath/llama.framework/llama" |
|
;; |
|
esac |
|
|
|
|
|
local arch_flags="" |
|
for arch in $archs; do |
|
arch_flags+=" -arch $arch" |
|
done |
|
|
|
|
|
echo "Creating dynamic library for ${platform}." |
|
xcrun -sdk $sdk clang++ -dynamiclib \ |
|
-isysroot $(xcrun --sdk $sdk --show-sdk-path) \ |
|
$arch_flags \ |
|
$min_version_flag \ |
|
-Wl,-force_load,"${temp_dir}/combined.a" \ |
|
-framework Foundation -framework Metal -framework Accelerate \ |
|
-install_name "$install_name" \ |
|
-o "${base_dir}/${output_lib}" |
|
|
|
|
|
if [[ "$is_simulator" == "false" ]]; then |
|
if command -v vtool &>/dev/null; then |
|
case "$platform" in |
|
"ios") |
|
echo "Marking binary as a framework binary for iOS..." |
|
vtool -set-build-version ios ${IOS_MIN_OS_VERSION} ${IOS_MIN_OS_VERSION} -replace \ |
|
-output "${base_dir}/${output_lib}" "${base_dir}/${output_lib}" |
|
;; |
|
"visionos") |
|
echo "Marking binary as a framework binary for visionOS..." |
|
vtool -set-build-version xros ${VISIONOS_MIN_OS_VERSION} ${VISIONOS_MIN_OS_VERSION} -replace \ |
|
-output "${base_dir}/${output_lib}" "${base_dir}/${output_lib}" |
|
;; |
|
"tvos") |
|
echo "Marking binary as a framework binary for tvOS..." |
|
vtool -set-build-version tvos ${TVOS_MIN_OS_VERSION} ${TVOS_MIN_OS_VERSION} -replace \ |
|
-output "${base_dir}/${output_lib}" "${base_dir}/${output_lib}" |
|
;; |
|
esac |
|
else |
|
echo "Warning: vtool not found. Binary may not pass App Store validation." |
|
fi |
|
fi |
|
|
|
echo "Creating properly formatted dSYM..." |
|
|
|
mkdir -p "${base_dir}/${build_dir}/dSYMs" |
|
|
|
|
|
if [[ "$platform" == "ios" || "$platform" == "visionos" || "$platform" == "tvos" ]]; then |
|
|
|
xcrun dsymutil "${base_dir}/${output_lib}" -o "${base_dir}/${build_dir}/dSYMs/llama.dSYM" |
|
|
|
|
|
cp "${base_dir}/${output_lib}" "${temp_dir}/binary_to_strip" |
|
|
|
|
|
xcrun strip -S "${temp_dir}/binary_to_strip" -o "${temp_dir}/stripped_lib" |
|
|
|
|
|
mv "${temp_dir}/stripped_lib" "${base_dir}/${output_lib}" |
|
else |
|
|
|
|
|
xcrun strip -S "${base_dir}/${output_lib}" -o "${temp_dir}/stripped_lib" |
|
|
|
|
|
xcrun dsymutil "${base_dir}/${output_lib}" -o "${base_dir}/${build_dir}/dSYMs/llama.dSYM" |
|
|
|
|
|
mv "${temp_dir}/stripped_lib" "${base_dir}/${output_lib}" |
|
fi |
|
|
|
|
|
|
|
if [ -d "${base_dir}/${output_lib}.dSYM" ]; then |
|
echo "Removing generated dSYM file in framework structure: ${base_dir}/${output_lib}.dSYM" |
|
rm -rf "${base_dir}/${output_lib}.dSYM" |
|
fi |
|
|
|
|
|
rm -rf "${temp_dir}" |
|
} |
|
|
|
echo "Building for iOS simulator..." |
|
cmake -B build-ios-sim -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \ |
|
-DIOS=ON \ |
|
-DCMAKE_SYSTEM_NAME=iOS \ |
|
-DCMAKE_OSX_SYSROOT=iphonesimulator \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=iphonesimulator \ |
|
-DCMAKE_C_FLAGS="${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-ios-sim --config Release -- -quiet |
|
|
|
echo "Building for iOS devices..." |
|
cmake -B build-ios-device -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${IOS_MIN_OS_VERSION} \ |
|
-DCMAKE_OSX_SYSROOT=iphoneos \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64" \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=iphoneos \ |
|
-DCMAKE_C_FLAGS="${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-ios-device --config Release -- -quiet |
|
|
|
echo "Building for macOS..." |
|
cmake -B build-macos -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOS_MIN_OS_VERSION} \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ |
|
-DCMAKE_C_FLAGS="${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-macos --config Release -- -quiet |
|
|
|
echo "Building for visionOS..." |
|
cmake -B build-visionos -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64" \ |
|
-DCMAKE_SYSTEM_NAME=visionOS \ |
|
-DCMAKE_OSX_SYSROOT=xros \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=xros \ |
|
-DCMAKE_C_FLAGS="-D_XOPEN_SOURCE=700 -Du_int=unsigned\ int -Du_char=unsigned\ char -Du_short=unsigned\ short ${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="-D_XOPEN_SOURCE=700 -Du_int=unsigned\ int -Du_char=unsigned\ char -Du_short=unsigned\ short ${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-visionos --config Release -- -quiet |
|
|
|
echo "Building for visionOS simulator..." |
|
cmake -B build-visionos-sim -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${VISIONOS_MIN_OS_VERSION} \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ |
|
-DCMAKE_SYSTEM_NAME=visionOS \ |
|
-DCMAKE_OSX_SYSROOT=xrsimulator \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=xrsimulator \ |
|
-DCMAKE_C_FLAGS="-D_XOPEN_SOURCE=700 -Du_int=unsigned\ int -Du_char=unsigned\ char -Du_short=unsigned\ short ${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="-D_XOPEN_SOURCE=700 -Du_int=unsigned\ int -Du_char=unsigned\ char -Du_short=unsigned\ short ${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-visionos-sim --config Release -- -quiet |
|
|
|
|
|
echo "Building for tvOS simulator..." |
|
cmake -B build-tvos-sim -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \ |
|
-DCMAKE_SYSTEM_NAME=tvOS \ |
|
-DCMAKE_OSX_SYSROOT=appletvsimulator \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ |
|
-DGGML_METAL=ON \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=appletvsimulator \ |
|
-DCMAKE_C_FLAGS="${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-tvos-sim --config Release -- -quiet |
|
|
|
echo "Building for tvOS devices..." |
|
cmake -B build-tvos-device -G Xcode \ |
|
"${COMMON_CMAKE_ARGS[@]}" \ |
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=${TVOS_MIN_OS_VERSION} \ |
|
-DCMAKE_SYSTEM_NAME=tvOS \ |
|
-DCMAKE_OSX_SYSROOT=appletvos \ |
|
-DCMAKE_OSX_ARCHITECTURES="arm64" \ |
|
-DGGML_METAL=ON \ |
|
-DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS=appletvos \ |
|
-DCMAKE_C_FLAGS="${COMMON_C_FLAGS}" \ |
|
-DCMAKE_CXX_FLAGS="${COMMON_CXX_FLAGS}" \ |
|
-S . |
|
cmake --build build-tvos-device --config Release -- -quiet |
|
|
|
|
|
echo "Setting up framework structures..." |
|
setup_framework_structure "build-ios-sim" ${IOS_MIN_OS_VERSION} "ios" |
|
setup_framework_structure "build-ios-device" ${IOS_MIN_OS_VERSION} "ios" |
|
setup_framework_structure "build-macos" ${MACOS_MIN_OS_VERSION} "macos" |
|
setup_framework_structure "build-visionos" ${VISIONOS_MIN_OS_VERSION} "visionos" |
|
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" |
|
|
|
|
|
echo "Creating dynamic libraries from static libraries..." |
|
combine_static_libraries "build-ios-sim" "Release-iphonesimulator" "ios" "true" |
|
combine_static_libraries "build-ios-device" "Release-iphoneos" "ios" "false" |
|
combine_static_libraries "build-macos" "Release" "macos" "false" |
|
combine_static_libraries "build-visionos" "Release-xros" "visionos" "false" |
|
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" |
|
|
|
|
|
echo "Creating XCFramework..." |
|
xcodebuild -create-xcframework \ |
|
-framework $(pwd)/build-ios-sim/framework/llama.framework \ |
|
-debug-symbols $(pwd)/build-ios-sim/dSYMs/llama.dSYM \ |
|
-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 |
|
|