Skip to content
Open
Show file tree
Hide file tree
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
4 changes: 4 additions & 0 deletions Sources/BuildScripts/XCFrameworkBuild/base.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1176,6 +1176,10 @@ enum PlatformType: String, CaseIterable {
if self == .tvos || self == .tvsimulator {
cflags.append("-DHAVE_FORK=0")
}
// Same UIKit search path as ldFlags: vo_avfoundation.m imports UIKit/UIKit.h
if self == .maccatalyst {
cflags += ["-iframework", "\(isysroot)/System/iOSSupport/System/Library/Frameworks"]
}
return cflags
}

Expand Down
97 changes: 40 additions & 57 deletions Sources/BuildScripts/create-combined-framework.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ get_arches() {
isimulator) echo "arm64 x86_64" ;;
tvos) echo "arm64 arm64e" ;;
tvsimulator) echo "arm64 x86_64" ;;
maccatalyst) echo "arm64 x86_64" ;;
esac
}

# XCFramework slice for a platform: "<LibraryIdentifier> <SupportedPlatform> [<Variant>]"
get_xcf_slice() {
case "$1" in
ios) echo "ios-arm64 ios" ;;
isimulator) echo "ios-arm64_x86_64-simulator ios simulator" ;;
tvos) echo "tvos-arm64_arm64e tvos" ;;
tvsimulator) echo "tvos-arm64_x86_64-simulator tvos simulator" ;;
maccatalyst) echo "ios-arm64_x86_64-maccatalyst ios maccatalyst" ;;
esac
}

Expand Down Expand Up @@ -74,7 +86,7 @@ echo ""

FRAMEWORK_ARGS=()

for platform in ios isimulator tvos tvsimulator; do
for platform in ios isimulator tvos tvsimulator maccatalyst; do
arches=$(get_arches "$platform")

echo "=== Platform: $platform ($arches) ==="
Expand Down Expand Up @@ -310,58 +322,40 @@ XCF_PATH="$XCF_DIR/MPVKit.xcframework"
rm -rf "$XCF_PATH"
mkdir -p "$XCF_PATH"

# Create Info.plist for xcframework
cat > "$XCF_PATH/Info.plist" << 'PLIST'
<?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>AvailableLibraries</key>
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>MPVKit.framework</string>
<key>SupportedArchitectures</key>
<array><string>arm64</string></array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>MPVKit.framework</string>
<key>SupportedArchitectures</key>
<array><string>arm64</string><string>x86_64</string></array>
<key>SupportedPlatform</key>
<string>ios</string>
# Copy each built platform into the xcframework and describe it in Info.plist
LIBRARIES=""
for platform in ios isimulator tvos tvsimulator maccatalyst; do
[ -d "$WORK_DIR/$platform/MPVKit.framework" ] || continue
read -r identifier supported variant <<< "$(get_xcf_slice "$platform")"
mkdir -p "$XCF_PATH/$identifier"
cp -R "$WORK_DIR/$platform/MPVKit.framework" "$XCF_PATH/$identifier/MPVKit.framework"

ARCH_XML=""
for arch in $(get_arches "$platform"); do ARCH_XML+="<string>$arch</string>"; done
VARIANT_XML=""
[ -n "$variant" ] && VARIANT_XML="
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>tvos-arm64_arm64e</string>
<key>LibraryPath</key>
<string>MPVKit.framework</string>
<key>SupportedArchitectures</key>
<array><string>arm64</string><string>arm64e</string></array>
<key>SupportedPlatform</key>
<string>tvos</string>
</dict>
<string>$variant</string>"
LIBRARIES+="
<dict>
<key>LibraryIdentifier</key>
<string>tvos-arm64_x86_64-simulator</string>
<string>$identifier</string>
<key>LibraryPath</key>
<string>MPVKit.framework</string>
<key>SupportedArchitectures</key>
<array><string>arm64</string><string>x86_64</string></array>
<array>$ARCH_XML</array>
<key>SupportedPlatform</key>
<string>tvos</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<string>$supported</string>$VARIANT_XML
</dict>"
done

cat > "$XCF_PATH/Info.plist" << PLIST
<?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>AvailableLibraries</key>
<array>$LIBRARIES
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
Expand All @@ -371,17 +365,6 @@ cat > "$XCF_PATH/Info.plist" << 'PLIST'
</plist>
PLIST

# Copy frameworks to xcframework structure
mkdir -p "$XCF_PATH/ios-arm64"
mkdir -p "$XCF_PATH/ios-arm64_x86_64-simulator"
mkdir -p "$XCF_PATH/tvos-arm64_arm64e"
mkdir -p "$XCF_PATH/tvos-arm64_x86_64-simulator"

cp -R "$WORK_DIR/ios/MPVKit.framework" "$XCF_PATH/ios-arm64/MPVKit.framework"
cp -R "$WORK_DIR/isimulator/MPVKit.framework" "$XCF_PATH/ios-arm64_x86_64-simulator/MPVKit.framework"
cp -R "$WORK_DIR/tvos/MPVKit.framework" "$XCF_PATH/tvos-arm64_arm64e/MPVKit.framework"
cp -R "$WORK_DIR/tvsimulator/MPVKit.framework" "$XCF_PATH/tvos-arm64_x86_64-simulator/MPVKit.framework"

echo " ✓ Created MPVKit.xcframework"

echo ""
Expand Down
6 changes: 3 additions & 3 deletions scripts/rebuild-libmpv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ OUTPUT_NAME="Libmpv${GPL_SUFFIX}"

echo "🔨 Rebuilding libmpv for all platforms (GPL build)..."

# Define all platforms (iOS and tvOS only, no macOS)
PLATFORMS="ios isimulator tvos tvsimulator"
# Define all platforms (iOS, tvOS and Mac Catalyst)
PLATFORMS="ios isimulator tvos tvsimulator maccatalyst"

# Get architectures for each platform (must match original build)
get_archs() {
case "$1" in
ios) echo "arm64" ;;
isimulator) echo "arm64 x86_64" ;;
tvos) echo "arm64 arm64e" ;;
tvsimulator) echo "arm64 x86_64" ;;
tvsimulator|maccatalyst) echo "arm64 x86_64" ;;
*) echo "arm64" ;;
esac
}
Expand Down