From 08ffb6c42eb53562e608adee77781e78f0467d7c Mon Sep 17 00:00:00 2001
From: wang-bin <wbsecg1@gmail.com>
Date: Mon, 1 Jan 2024 21:59:29 +0800
Subject: [PATCH] tvos

---
 .github/workflows/build.yml | 31 ++++++++++++++++++++++++-------
 ci-before-build.sh          |  7 +++++--
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b31d7da..b9e5e54 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -78,7 +78,7 @@ jobs:
     - name: Build
       shell: bash
       working-directory: mdk
-      run: cmake --build build/${TARGET_OS}
+      run: cmake --build build/${TARGET_OS} --parallel
     - name: Make SDK
       shell: bash
       working-directory: mdk
@@ -167,11 +167,12 @@ jobs:
   iOS:
     runs-on: macos-13
     env:
-      TARGET_OS: iOS
+      TARGET_OS: ${{ matrix.os }}
       LTO_SUFFIX: -lto
     strategy:
       fail-fast: false
       matrix:
+        os: [iOS, tvOS]
         config: [MinSizeRel]
     steps:
     - uses: actions/checkout@v4
@@ -205,7 +206,7 @@ jobs:
     - name: Configure CMake
       shell: bash
       working-directory: mdk
-      run: cmake -GNinja -DMIN_SIZE=1 -DUSE_LTO=1 -DWITH_DEB_INFO=1 -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/tools/ios.cmake -DIOS_DEPLOYMENT_TARGET=8.0 -DIOS_ARCH="arm64" -DIOS_BITCODE=0  -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1 -DFFMPEG_EMBED=1 # FFMPEG_EMBED=0 to copy libffmpeg.5.dylib
+      run: cmake -GNinja -DMIN_SIZE=1 -DUSE_LTO=1 -DWITH_DEB_INFO=1 -DCMAKE_SYSTEM_NAME=${{ matrix.os }} -DIOS_DEPLOYMENT_TARGET=8.0 -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_IOS_INSTALL_COMBINED=YES  -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1 -DFFMPEG_EMBED=1 # FFMPEG_EMBED=0 to copy libffmpeg.5.dylib
     - name: Build
       shell: bash
       working-directory: mdk
@@ -238,11 +239,12 @@ jobs:
   iOSSimulator:
     runs-on: macos-13
     env:
-      TARGET_OS: iOSSimulator
+      TARGET_OS: ${{ matrix.os }}Simulator
       LTO_SUFFIX: -lto
     strategy:
       fail-fast: false
       matrix:
+        os: [iOS, tvOS]
         config: [MinSizeRel]
     steps:
     - uses: actions/checkout@v4
@@ -276,7 +278,11 @@ jobs:
     - name: Configure CMake
       shell: bash
       working-directory: mdk
-      run: cmake -GNinja -DMIN_SIZE=1 -DUSE_LTO=1 -DWITH_DEB_INFO=1 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=8.0 -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO -DCMAKE_IOS_INSTALL_COMBINED=YES -DCMAKE_OSX_SYSROOT=iphonesimulator  -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1 -DFFMPEG_EMBED=1 # FFMPEG_EMBED=0 to copy libffmpeg.5.dylib
+      run: |
+        sdk=$TARGET_OS
+        sdk=${sdk/iOSS/iphones}
+        sdk=${sdk/tvOSS/appletvs}
+        cmake -GNinja -DMIN_SIZE=1 -DUSE_LTO=1 -DWITH_DEB_INFO=1 -DCMAKE_SYSTEM_NAME=${{ matrix.os }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=8.0 -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO -DCMAKE_IOS_INSTALL_COMBINED=YES -DCMAKE_OSX_SYSROOT=${sdk}  -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1 -DFFMPEG_EMBED=1 # FFMPEG_EMBED=0 to copy libffmpeg.5.dylib
     - name: Build
       shell: bash
       working-directory: mdk
@@ -324,6 +330,14 @@ jobs:
       uses: actions/download-artifact@v3
       with:
         name: mdk-sdk-iOSSimulator-MinSizeRel
+    - name: Download tvOS sdk
+      uses: actions/download-artifact@v3
+      with:
+        name: mdk-sdk-tvOS-MinSizeRel
+    - name: Download tvOSSimulator sdk
+      uses: actions/download-artifact@v3
+      with:
+        name: mdk-sdk-tvOSSimulator-MinSizeRel
     - name: Download macCatalyst sdk
       uses: actions/download-artifact@v3
       with:
@@ -335,11 +349,13 @@ jobs:
       shell: bash
       run: |
         export XZ_OPT="-9e -T0"
-        mkdir -p macOS iOS iOSSimulator macCatalyst mdk-sdk/{Frameworks,include,lib} macOS-arm64 macOS-x86_64
+        mkdir -p macOS iOS iOSSimulator tvOS tvOSSimulator macCatalyst mdk-sdk/{Frameworks,include,lib} macOS-arm64 macOS-x86_64
         tar Jxf mdk-sdk-macOS-x86_64.tar.xz -C macOS-x86_64
         tar Jxf mdk-sdk-macOS-arm64.tar.xz -C macOS-arm64
         tar Jxf mdk-sdk-iOS.tar.xz -C iOS
         tar Jxf mdk-sdk-iOSSimulator.tar.xz -C iOSSimulator
+        tar Jxf mdk-sdk-tvOS.tar.xz -C tvOS
+        tar Jxf mdk-sdk-tvOSSimulator.tar.xz -C tvOSSimulator
         tar Jxf mdk-sdk-macCatalyst.tar.xz -C macCatalyst
         find .
         cp -af macOS-x86_64/mdk-sdk macOS/ # libffmpeg is already fat
@@ -365,7 +381,7 @@ jobs:
         cp -af macOS/mdk-sdk/lib/cmake mdk-sdk/lib/
         cp -af iOS/mdk-sdk/README.md mdk-sdk/README-iOS.md
         # https://developer.apple.com/forums/thread/655768 (error: the path does not point to a valid debug symbols file: macOS/mdk-sdk/lib/mdk.framework.dSYM)
-        xcodebuild -create-xcframework -framework macOS/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/macOS/mdk-sdk/lib/mdk.framework.dSYM -framework iOS/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/iOS/mdk-sdk/lib/mdk.framework.dSYM -framework iOSSimulator/mdk-sdk/lib/mdk.framework -framework macCatalyst/mdk-sdk/lib/mdk.framework -output mdk-sdk/lib/mdk.xcframework
+        xcodebuild -create-xcframework -framework macOS/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/macOS/mdk-sdk/lib/mdk.framework.dSYM -framework iOS/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/iOS/mdk-sdk/lib/mdk.framework.dSYM -framework iOSSimulator/mdk-sdk/lib/mdk.framework  -framework tvOS/mdk-sdk/lib/mdk.framework -framework tvOSSimulator/mdk-sdk/lib/mdk.framework -framework macCatalyst/mdk-sdk/lib/mdk.framework -output mdk-sdk/lib/mdk.xcframework
         mdkfw=`find mdk-sdk/lib/mdk.xcframework -name "macos-*" -depth 1`
         # ensure bin/* can Find mdk and ffmpeg
         ln -sf ${mdkfw/mdk-sdk/..}/mdk.framework mdk-sdk/Frameworks
@@ -553,6 +569,7 @@ jobs:
 
 
   Win64_SRC:
+    if: false
     runs-on: windows-latest
     env:
       TARGET_OS: windows-desktop
diff --git a/ci-before-build.sh b/ci-before-build.sh
index cee69ac..8163af4 100755
--- a/ci-before-build.sh
+++ b/ci-before-build.sh
@@ -13,7 +13,7 @@ tolower(){
 
 crt_extra=$(tolower ${CRT_EXTRA})
 
-if [[ "$TARGET_OS" == mac* || "$TARGET_OS" == iOS* || "$TARGET_OS" == android ]]; then
+if [[ "$TARGET_OS" == mac* || "$TARGET_OS" == iOS* || "$TARGET_OS" == tvOS* || "$TARGET_OS" == android ]]; then
     FF_EXTRA=
 fi
 if [[ "$TARGET_OS" == "win"* || "$TARGET_OS" == "uwp"* ]]; then
@@ -56,7 +56,7 @@ OS=${TARGET_OS/r*pi/rpi}
 OS=${OS/*store/WinRT}
 OS=${OS/*uwp*/WinRT}
 OS=${OS%%-*}
-OS=${OS/Simulator/}
+#OS=${OS/Simulator/} #
 [ "$TARGET_OS" == "linux" ] && OS=Linux
 mkdir -p external/{bin,lib}/$OS
 
@@ -74,6 +74,9 @@ if [[ "$EXTERNAL_DEP_CACHE_HIT" != "true" ]]; then
   cp -af ${FFPKG}/include external/
   cp -af ${FFPKG}/bin/* external/bin/$OS # ffmpeg dll
 
+  echo "OS: $OS"
+  find external
+
   if [ "$TARGET_OS" == "sunxi" ]; then
       mkdir -p external/lib/sunxi/armv7
       cp -af ${FFPKG}/lib/* external/lib/sunxi/armv7 #single arch package