diff --git a/Sources/BuildScripts/XCFrameworkBuild/base.swift b/Sources/BuildScripts/XCFrameworkBuild/base.swift index fb2d3205..6ea6ba3a 100644 --- a/Sources/BuildScripts/XCFrameworkBuild/base.swift +++ b/Sources/BuildScripts/XCFrameworkBuild/base.swift @@ -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 } diff --git a/Sources/BuildScripts/create-combined-framework.sh b/Sources/BuildScripts/create-combined-framework.sh index 71ad7ced..50d90b9d 100755 --- a/Sources/BuildScripts/create-combined-framework.sh +++ b/Sources/BuildScripts/create-combined-framework.sh @@ -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: " []" +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 } @@ -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) ===" @@ -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' - - - - - AvailableLibraries - - - LibraryIdentifier - ios-arm64 - LibraryPath - MPVKit.framework - SupportedArchitectures - arm64 - SupportedPlatform - ios - - - LibraryIdentifier - ios-arm64_x86_64-simulator - LibraryPath - MPVKit.framework - SupportedArchitectures - arm64x86_64 - SupportedPlatform - ios +# 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+="$arch"; done + VARIANT_XML="" + [ -n "$variant" ] && VARIANT_XML=" SupportedPlatformVariant - simulator - - - LibraryIdentifier - tvos-arm64_arm64e - LibraryPath - MPVKit.framework - SupportedArchitectures - arm64arm64e - SupportedPlatform - tvos - + $variant" + LIBRARIES+=" LibraryIdentifier - tvos-arm64_x86_64-simulator + $identifier LibraryPath MPVKit.framework SupportedArchitectures - arm64x86_64 + $ARCH_XML SupportedPlatform - tvos - SupportedPlatformVariant - simulator - + $supported$VARIANT_XML + " +done + +cat > "$XCF_PATH/Info.plist" << PLIST + + + + + AvailableLibraries + $LIBRARIES CFBundlePackageType XFWK @@ -371,17 +365,6 @@ cat > "$XCF_PATH/Info.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 "" diff --git a/scripts/rebuild-libmpv.sh b/scripts/rebuild-libmpv.sh index 51d208d9..c0761aaa 100755 --- a/scripts/rebuild-libmpv.sh +++ b/scripts/rebuild-libmpv.sh @@ -11,8 +11,8 @@ 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() { @@ -20,7 +20,7 @@ get_archs() { 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 }