Repository navigation
[b6c3f493] prores raw metadata parser #2328
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| # TODO: nuget, vcpkg on macOS, $(brew --prefix llvm)/bin/clang (llvm11), llvm12 is default | |
| # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry | |
| on: | |
| push: | |
| schedule: | |
| - cron: '0 12 * * 0' | |
| repository_dispatch: | |
| env: | |
| FF_VER: ${{ vars.FF_VER }} | |
| LLVM_VER: ${{ vars.LLVM_VER }} | |
| VC_LTL_VER: ${{ vars.VC_LTL_VER }} | |
| NINJA_STATUS: '[%f/%t %e %r]' | |
| SF_PW: ${{ secrets.SF_PW }} | |
| SF_USER: ${{ secrets.SF_USER }} | |
| SF_UPLOAD: ${{ github.event_name != 'repository_dispatch' || github.event.client_payload.ref == 'master' }} | |
| NVJP2K_SDK_PW: ${{ secrets.NVJP2K_SDK_PW }} | |
| CUDA_SDK_PW: ${{ secrets.CUDA_SDK_PW }} | |
| CUDA_SDK_DIR: ${{ github.workspace }}/cuda | |
| NVJPEG2K_PATH: ${{ github.workspace }}/nvjpeg2000 | |
| R3DSDK: ${{ github.workspace }}/mdk/external/R3DSDK | |
| LINUX_SYSROOT: ${{ github.workspace }}/mdk/sysroot | |
| XZ_OPT: "-9e -T0" | |
| jobs: | |
| macOS: | |
| # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix | |
| runs-on: macos-26 # 15. 1 xcode per image | |
| env: | |
| TARGET_OS: 'macOS' | |
| TARGET_ARCH: ${{ matrix.arch }} | |
| LTO_SUFFIX: -lto # lto on master branch crashes in avio_open2, incorrect `close()` is used in `tcp_close()`, e.g. `close()` in avp and ffv1 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [MinSizeRel] | |
| arch: [x86_64, arm64] # different minos | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} # https://docs.github.com/en/webhooks/webhook-events-and-payloads#repository_dispatch | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: Setup Xcode | |
| run: sudo xcode-select -s /Applications/Xcode_${{ vars.XCODE }}.app | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ./mdk/external | |
| !./mdk/external/lib/macOS/libvulkan.tbd | |
| !./mdk/external/lib/libdav1d.tbd | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| # why may failed to cache/restore /usr/local/bin/sshpass? | |
| # no build cache because build dir content changes but key should not, then no cache save. | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - name: Configure CMake | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk | |
| - name: Build | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk*.tar.xz ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.tar.xz | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch}}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch}}.tar.xz | |
| - name: Upload to SourceForge | |
| if: ${{ matrix.config == 'RelWithDebInfo' && matrix.arch == 'x86_64' && env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: | | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}-${{ matrix.arch }}.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| iOS: | |
| runs-on: macos-26 | |
| env: | |
| TARGET_OS: ${{ matrix.os }}${{ matrix.simulator }} | |
| LTO_SUFFIX: -lto # lto on master branch crashes in avio_open2 if open | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [iOS, tvOS, visionOS, macCatalyst] | |
| config: [MinSizeRel] | |
| simulator: ['', Simulator] | |
| exclude: | |
| - os: macCatalyst | |
| simulator: Simulator | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: Setup Xcode | |
| run: sudo xcode-select -s /Applications/Xcode_${{ vars.XCODE }}.app | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ./mdk/external | |
| !./mdk/external/lib/macOS/libvulkan.tbd | |
| !./mdk/external/lib/libdav1d.tbd | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| # why may failed to cache/restore /usr/local/bin/sshpass? | |
| # no build cache because build dir content changes but key should not, then no cache save. | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - name: Configure CMake | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| preset="${{ matrix.os }}" | |
| if [ "${{ matrix.simulator }}" = "Simulator" ]; then | |
| preset="${{ matrix.os }}-${{ matrix.simulator }}" | |
| fi | |
| cmake --preset=$preset -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk | |
| - name: Build | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| preset="${{ matrix.os }}" | |
| if [ "${{ matrix.simulator }}" = "Simulator" ]; then | |
| preset="${{ matrix.os }}-${{ matrix.simulator }}" | |
| fi | |
| cmake --build --preset=$preset --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk*.tar.xz .. | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}.tar.xz | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' && matrix.os == 'macCatalyst' }} | |
| shell: bash | |
| run: sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| Apple: | |
| runs-on: macos-26 | |
| needs: [macOS, iOS] | |
| steps: | |
| - name: Setup Xcode | |
| run: sudo xcode-select -s /Applications/Xcode_${{ vars.XCODE }}.app | |
| - uses: actions/checkout@v6 | |
| - name: Download macOS x64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-macOS-x86_64-MinSizeRel | |
| - name: Download macOS arm64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-macOS-arm64-MinSizeRel | |
| - name: Download iOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-iOS-MinSizeRel | |
| - name: Download iOSSimulator sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-iOSSimulator-MinSizeRel | |
| - name: Download tvOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-tvOS-MinSizeRel | |
| - name: Download tvOSSimulator sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-tvOSSimulator-MinSizeRel | |
| - name: Download visionOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-visionOS-MinSizeRel | |
| - name: Download visionOSSimulator sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-visionOSSimulator-MinSizeRel | |
| - name: Download macCatalyst sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-macCatalyst-MinSizeRel | |
| - name: Install tools | |
| shell: bash | |
| run: brew install sshpass | |
| - name: make XCFramework and SDK | |
| shell: bash | |
| run: | | |
| mkdir -p macOS mdk-sdk/{Frameworks,include,lib} | |
| for os in macOS-x86_64 macOS-arm64 iOS iOSSimulator tvOS tvOSSimulator visionOS visionOSSimulator macCatalyst; do | |
| mkdir -p ${os} | |
| tar Jxf mdk-sdk-${os}.tar.xz -C ${os} | |
| done | |
| find . | |
| cp -af macOS-$(uname -m)/mdk-sdk macOS/ # libffmpeg is already fat | |
| lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework/mdk -output macOS/mdk-sdk/lib/mdk.framework/Versions/Current/mdk | |
| lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework.dSYM/Contents/Resources/DWARF/mdk -output macOS/mdk-sdk/lib/mdk.framework.dSYM/Contents/Resources/DWARF/mdk | |
| if [ -f macOS-arm64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-braw.dylib -a -f macOS-x86_64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-braw.dylib ]; then | |
| lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-braw.dylib -output macOS/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-braw.dylib | |
| fi | |
| if [ -f macOS-arm64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-r3d.dylib -a -f macOS-x86_64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-r3d.dylib ]; then | |
| lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-r3d.dylib -output macOS/mdk-sdk/lib/mdk.framework/Versions/Current/libmdk-r3d.dylib | |
| fi | |
| for b in `ls macOS-arm64/mdk-sdk/bin`; do # exes exist in both archs | |
| if [ -f macOS-x86_64/mdk-sdk/bin/$b ]; then | |
| lipo -create macOS-{arm,x86_}64/mdk-sdk/bin/$b -output macOS/mdk-sdk/bin/$b | |
| fi | |
| done | |
| codesign --force --sign - --deep --timestamp macOS/mdk-sdk/lib/mdk.framework | |
| libffmpeg=$(find macCatalyst/mdk-sdk/lib/mdk.framework -name "libffmpeg*.dylib") | |
| # xcrun bitcode_strip -r $libffmpeg -o $libffmpeg | |
| # xcrun bitcode_strip -r macCatalyst/mdk-sdk/lib/mdk.framework/mdk -o macCatalyst/mdk-sdk/lib/mdk.framework/Versions/Current/mdk | |
| cp -af macOS/mdk-sdk/{bin,doc,*.sh} mdk-sdk | |
| cp -af macOS/mdk-sdk/README.md mdk-sdk/README-macOS.md | |
| 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 tvOS/mdk-sdk/lib/mdk.framework -framework tvOSSimulator/mdk-sdk/lib/mdk.framework -framework visionOS/mdk-sdk/lib/mdk.framework -framework visionOSSimulator/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 | |
| ln -sf ../Frameworks/mdk.framework/Headers mdk-sdk/include/mdk | |
| codesign --force --sign - --deep --timestamp mdk-sdk/lib/mdk.xcframework | |
| # pod requires a file in tarball | |
| gtar Jcvf mdk-sdk-apple.tar.xz mdk-sdk README.md | |
| gtar Jcvf mdk-sdk-macOS.tar.xz -C macOS . | |
| 7z a mdk-sdk-apple.zip mdk-sdk | |
| for OS in iOS tvOS visionOS; do | |
| rm -rf mdk-sdk/{bin,Frameworks,include} mdk-sdk/lib/mdk.* | |
| xcodebuild -create-xcframework -framework ${OS}/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/${OS}/mdk-sdk/lib/mdk.framework.dSYM -framework ${OS}Simulator/mdk-sdk/lib/mdk.framework -debug-symbols $PWD/${OS}Simulator/mdk-sdk/lib/mdk.framework.dSYM -output mdk-sdk/lib/mdk.xcframework | |
| gtar Jcvf mdk-sdk-${OS}.tar.xz mdk-sdk | |
| done | |
| swift package compute-checksum mdk-sdk-apple.zip | |
| - name: Archive XCFramework SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-apple | |
| path: mdk-sdk-apple.tar.xz | |
| - name: Archive XCFramework SDK zip | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-apple-zip | |
| path: mdk-sdk-apple.zip | |
| - name: Archive macOS SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-macOS | |
| path: mdk-sdk-macOS.tar.xz | |
| - name: Archive iOS SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-iOS | |
| path: mdk-sdk-iOS.tar.xz | |
| - name: Archive tvOS SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-tvOS | |
| path: mdk-sdk-tvOS.tar.xz | |
| - name: Archive visionOS SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-visionOS | |
| path: mdk-sdk-visionOS.tar.xz | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: | | |
| make -f upload.mk | |
| Windows: | |
| runs-on: windows-2025-vs2026 | |
| env: | |
| TARGET_OS: windows | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [RelWithDebInfo] | |
| arch: [x86, x64, arm64] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| SYSROOT_CACHE_HIT: true | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - uses: seanmiddleditch/gha-setup-ninja@master | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch != 'x64' }} | |
| with: | |
| arch: amd64_${{ matrix.arch }} | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch == 'x64' }} | |
| with: | |
| arch: amd64 | |
| - name: Get nvJPEG2000 SDK | |
| if: ${{ matrix.arch == 'x64' }} | |
| shell: bash | |
| run: | | |
| curl -kL -o nvjpeg2000.zip https://github.com/user-attachments/files/17663661/nvjpeg2000.zip | |
| 7z x -y -p${{ env.NVJP2K_SDK_PW }} nvjpeg2000.zip | |
| curl -kL -o cuda.zip https://github.com/user-attachments/files/17663668/cuda.zip | |
| 7z x -y -p${{ env.CUDA_SDK_PW }} cuda.zip | |
| - name: Configure | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk-*.7z ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026.7z | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026.7z | |
| # - name: Upload to SourceForge | |
| # if: ${{ matrix.config == 'MinSizeRel' && env.SF_UPLOAD == 'true' }} | |
| # uses: garygrossgarten/github-action-scp@release | |
| # with: | |
| # host: 'frs.sourceforge.net' | |
| # username: ${{ secrets.SF_USER }} | |
| # password: ${{ secrets.SF_PW }} | |
| # local: mdk-sdk-${{ env.TARGET_OS }}-vs2026.7z | |
| # remote: '/home/frs/project/mdk-sdk/nightly/' | |
| Windows_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [Windows] | |
| env: | |
| TARGET_OS: windows | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download x86 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-x86-vs2026-RelWithDebInfo | |
| - name: Download x64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-x64-vs2026-RelWithDebInfo | |
| - name: Download arm64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-arm64-vs2026-RelWithDebInfo | |
| - name: Merge SDKs | |
| shell: bash | |
| run: | | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x86-vs2026.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x64-vs2026.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-arm64-vs2026.7z | |
| 7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}-vs2026.7z mdk-sdk | |
| md5sum mdk-sdk-${TARGET_OS}-vs2026.7z | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}-vs2026.7z.md5 | |
| md5sum mdk-sdk-${TARGET_OS}-x64-vs2026.7z | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}-x64-vs2026.7z.md5 | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-windows-vs2026-RelWithDebInfo | |
| path: | | |
| mdk-sdk-${{ env.TARGET_OS }}-vs2026.7z | |
| mdk-sdk-${{ env.TARGET_OS }}-x64-vs2026.7z | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: make -f upload.mk | |
| Windows_LTL: | |
| runs-on: windows-2025-vs2026 | |
| env: | |
| TARGET_OS: windows | |
| CRT_EXTRA: LTL | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [RelWithDebInfo] | |
| arch: [x86, x64] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-${{ env.CRT_EXTRA }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: 'Restore VC-LTL cache' | |
| id: ltl-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/cmake/VC-LTL | |
| key: ltl-${{ vars.VC_LTL_VER }} | |
| - if: ${{ steps.ltl-cache.outputs.cache-hit != 'true' }} | |
| name: Get VC-LTL | |
| shell: bash | |
| working-directory: mdk/cmake | |
| run: | | |
| curl -kL -o ltl.7z https://github.com/Chuyu-Team/VC-LTL5/releases/download/v${VC_LTL_VER}/VC-LTL-Binary.7z | |
| 7z x ltl.7z -oVC-LTL | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| SYSROOT_CACHE_HIT: true | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - uses: seanmiddleditch/gha-setup-ninja@master | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch != 'x64' }} | |
| with: | |
| arch: amd64_${{ matrix.arch }} | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch == 'x64' }} | |
| with: | |
| arch: amd64 | |
| - name: Configure | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }}-ltl -DCMAKE_INSTALL_PREFIX=mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }}-ltl --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk-*.7z ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026-ltl.7z | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026-ltl-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-vs2026-ltl.7z | |
| Windows_LTL_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [Windows_LTL] | |
| env: | |
| TARGET_OS: windows | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download x86 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-x86-vs2026-ltl-RelWithDebInfo | |
| - name: Download x64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-x64-vs2026-ltl-RelWithDebInfo | |
| - name: Merge SDKs | |
| shell: bash | |
| run: | | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x86-vs2026-ltl.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x64-vs2026-ltl.7z | |
| 7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}-vs2026-ltl.7z mdk-sdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-windows-vs2026-ltl-RelWithDebInfo | |
| path: mdk-sdk-${{ env.TARGET_OS }}-vs2026-ltl.7z | |
| UWP: | |
| runs-on: windows-2025-vs2026 | |
| env: | |
| TARGET_OS: uwp | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [RelWithDebInfo] | |
| arch: [x64, arm64] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| SYSROOT_CACHE_HIT: true | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - uses: seanmiddleditch/gha-setup-ninja@master | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch != 'x64' }} | |
| with: | |
| arch: amd64_${{ matrix.arch }} | |
| uwp: true | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| if: ${{ matrix.arch == 'x64' }} | |
| with: | |
| arch: x64 | |
| uwp: true | |
| - name: Configure | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk-*.7z ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.7z | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.7z | |
| UWP_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [UWP] | |
| env: | |
| TARGET_OS: uwp | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download x64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-uwp-x64-RelWithDebInfo | |
| - name: Download arm64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-uwp-arm64-RelWithDebInfo | |
| - name: Merge SDKs | |
| shell: bash | |
| run: | | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x64.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-arm64.7z | |
| 7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}.7z mdk-sdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-uwp-RelWithDebInfo | |
| path: mdk-sdk-${{ env.TARGET_OS }}.7z | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: make -f upload.mk | |
| ClangCL: | |
| runs-on: ubuntu-latest | |
| env: | |
| TARGET_OS: ${{ matrix.os }} | |
| VCDIR: '/tmp/winsysroot/msvcrt-dev' | |
| WINDOWSSDKDIR: '/tmp/winsysroot/winsdk' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows] | |
| config: [MinSizeRel] | |
| arch: [x86, x64, arm64] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: 'Restore sysroot cache' | |
| id: sysroot-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: /tmp/winsysroot | |
| key: sysroot-${{ env.TARGET_OS }}${{ vars.WINSDKVER }}-vc${{ vars.VCVER }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }} | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - name: Configure | |
| working-directory: mdk | |
| run: | | |
| export WindowsSdkDir=${WINDOWSSDKDIR} | |
| export WindowsSDKVersion=$(cat ${WINDOWSSDKDIR}/.version) | |
| cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }}-clang -DCMAKE_INSTALL_PREFIX=mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| working-directory: mdk | |
| run: cmake --build --preset=${TARGET_OS}-${{ matrix.arch }}-clang --parallel | |
| - name: Make SDK | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| if [ -f $VCDIR/bin/x64/vcruntime140_1.dll ]; then | |
| mkdir -p mdk-sdk/bin/x64 | |
| cp $VCDIR/bin/x64/vcruntime140_1.dll mdk-sdk/bin/x64 | |
| 7z a mdk-sdk-*.7z mdk-sdk/bin/x64/vcruntime140_1.dll | |
| fi | |
| mv mdk-sdk-*.7z ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-clang.7z | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-clang-${{ env.TARGET_OS }}-${{ matrix.arch }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-clang.7z | |
| ClangCL_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [ClangCL] | |
| env: | |
| TARGET_OS: windows | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download x86 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-clang-windows-x86-MinSizeRel | |
| - name: Download x64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-clang-windows-x64-MinSizeRel | |
| - name: Download arm64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-clang-windows-arm64-MinSizeRel | |
| - run: sudo apt install -y sshpass p7zip-full | |
| - name: Merge SDK | |
| shell: bash | |
| run: | | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x86-clang.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x64-clang.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-arm64-clang.7z | |
| 7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}-clang.7z mdk-sdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-clang-windows-MinSizeRel | |
| path: mdk-sdk-${{ env.TARGET_OS }}-clang.7z | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| run: sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}-clang.7z ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| NuGet: | |
| runs-on: macos-latest | |
| needs: [Windows_SDK, UWP_SDK] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download windows vs2026 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-vs2026-RelWithDebInfo | |
| - name: Download uwp sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-uwp-RelWithDebInfo | |
| - name: update build version | |
| shell: bash | |
| run: sed -i .bak "s,\(.*\.\)[0-9]*\(</version>\),\1${GITHUB_RUN_NUMBER}\2," nuget/mdk.nuspec | |
| - name: install tools | |
| run: brew install sshpass nuget 7zip md5sha1sum | |
| - name: Make nupkg (vs2026) | |
| run: | | |
| rm -rf mdk-sdk uwp | |
| 7z x mdk-sdk-windows-vs2026.7z | |
| 7z x mdk-sdk-uwp.7z -o"uwp" | |
| mkdir mdk-sdk/bin/UAP | |
| cp -af uwp/mdk-sdk/bin/* mdk-sdk/bin/UAP | |
| cp nuget/mdk.nuspec mdk-sdk | |
| cp -avf nuget/README.md mdk-sdk | |
| cd mdk-sdk | |
| nuget pack mdk.nuspec | |
| mv *.nupkg ../mdk-vs2026.nupkg | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-nuget | |
| path: 'mdk*.nupkg' | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: make -f upload.mk | |
| Linux: | |
| runs-on: ubuntu-latest | |
| env: | |
| TARGET_OS: linux | |
| LTO_SUFFIX: -lto | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [MinSizeRel] | |
| arch: [amd64, arm64, armhf] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: 'Restore sysroot cache' | |
| id: sysroot-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/sysroot | |
| key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }} | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: | | |
| sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm | |
| ../ci-before-build.sh | |
| - name: Configure | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk*.tar.xz ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.tar.xz | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}*.tar.xz | |
| Linux_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [Linux] | |
| env: | |
| TARGET_OS: linux | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download amd64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-linux-amd64-MinSizeRel | |
| - name: Download arm64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-linux-arm64-MinSizeRel | |
| - name: Download armhf sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-linux-armhf-MinSizeRel | |
| - run: sudo apt install -y sshpass | |
| - name: Merge SDKs | |
| shell: bash | |
| run: | | |
| tar Jxvf mdk-sdk-${TARGET_OS}-amd64.tar.xz | |
| tar Jxvf mdk-sdk-${TARGET_OS}-arm64.tar.xz | |
| tar Jxvf mdk-sdk-${TARGET_OS}-armhf.tar.xz | |
| tar Jcvf mdk-sdk-${TARGET_OS}.tar.xz mdk-sdk | |
| rm -rf mdk-sdk/{bin,lib}/arm* | |
| tar Jcvf mdk-sdk-${TARGET_OS}-x64.tar.xz mdk-sdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-linux-MinSizeRel | |
| path: | | |
| mdk-sdk-${{ env.TARGET_OS }}.tar.xz | |
| mdk-sdk-${{ env.TARGET_OS }}-x64.tar.xz | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: | | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}-x64.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| md5sum mdk-sdk-${TARGET_OS}.tar.xz | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}.tar.xz.md5 | |
| md5sum mdk-sdk-${TARGET_OS}-x64.tar.xz | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}-x64.tar.xz.md5 | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-*.md5 ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| Android: | |
| runs-on: ubuntu-latest # ndk 25 removed | |
| env: | |
| #FF_VER: 6.1 # 7.0 and master is very slow in avformat_find_stream_info | |
| TARGET_OS: android | |
| LTO_SUFFIX: -lto | |
| MIN_API: 21 | |
| NDK_32: r25c | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [MinSizeRel] # https://github.com/android/ndk/issues/721 | |
| arch: [arm64-v8a, x86_64, armeabi-v7a, x86] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| # SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }} | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - name: Install sshpass | |
| if: ${{ matrix.arch == 'arm64-v8a' }} | |
| run: sudo apt install -y sshpass | |
| - name: Configure | |
| working-directory: mdk | |
| run: cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| # - uses: nttld/setup-ndk@v1 | |
| # id: setup-ndk | |
| # with: | |
| # ndk-version: ${{ env.NDK_32 }} | |
| # local-cache: false | |
| # - name: 'Restore ndk cache' # setup-ndk not fully cached | |
| # id: ndk-cache | |
| # uses: actions/cache@v5 | |
| # with: | |
| # path: ${{ runner.tool_cache }}/ndk/${{ env.NDK_32 }} # /opt/hostedtoolcache | |
| # key: ndk-cache-${{ runner.os }}-${{ env.NDK_32 }} | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| ../ci-after-build.sh | |
| mv mdk-sdk-*.7z ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.7z | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.7z | |
| - name: Upload mediacodec library to SourceForge | |
| if: ${{ matrix.config == 'MinSizeRel' && matrix.arch == 'arm64-v8a' && env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no build/android-arm64-v8a/video/libqtav-mediacodec.so ${SF_USER}@frs.sourceforge.net:/home/frs/project/qtav/depends/mediacodec/arm64-v8a | |
| Android_SDK: | |
| runs-on: ubuntu-latest | |
| needs: [Android] | |
| env: | |
| TARGET_OS: android | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download arm64-v8a sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-android-arm64-v8a-MinSizeRel | |
| - name: Download x86_64 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-android-x86_64-MinSizeRel | |
| - name: Download armeabi-v7a sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-android-armeabi-v7a-MinSizeRel | |
| - name: Download x86 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-android-x86-MinSizeRel | |
| - run: sudo apt install -y sshpass p7zip-full | |
| - name: Merge SDKs | |
| shell: bash | |
| run: | | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x86_64.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-armeabi-v7a.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-x86.7z | |
| 7z x -aoa mdk-sdk-${TARGET_OS}-arm64-v8a.7z | |
| 7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}.7z mdk-sdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-android-MinSizeRel | |
| path: mdk-sdk-${{ env.TARGET_OS }}.7z | |
| - name: Upload to SourceForge | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: | | |
| 7z d -ssc -m0=lzma2 -mx=9 -ms=on -mf=off mdk-sdk-${TARGET_OS}.7z mdk-sdk/lib/{x86,x86_64}/libmdk.so.dsym | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.7z ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| md5sum mdk-sdk-${TARGET_OS}.7z | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}.7z.md5 | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-*.md5 ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| ohos: | |
| runs-on: macos-latest | |
| env: | |
| TARGET_OS: ohos | |
| LTO_SUFFIX: -lto | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [MinSizeRel] | |
| arch: [arm64-v8a] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| submodules: 'recursive' | |
| - name: Setup OpenHarmony SDK | |
| id: setup-ohos-sdk | |
| uses: openharmony-rs/setup-ohos-sdk@v1.0.0 | |
| with: | |
| version: ${{ vars.OH_SDK_VERSION }} | |
| cache: true | |
| - run: | | |
| echo "api-version: ${{ steps.setup-ohos-sdk.outputs.api-version }}" | |
| echo "ohos_sdk_native: ${{ steps.setup-ohos-sdk.outputs.ohos_sdk_native }}" | |
| - name: 'Restore External Dep cache' | |
| id: external-dep-cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./mdk/external | |
| key: external-dep-${{ env.TARGET_OS }}-ffmpeg-${{ env.FF_VER }}-${{ vars.FF_SDK_ID }} | |
| - name: Create Build Environment | |
| shell: bash | |
| env: | |
| # SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }} | |
| EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }} | |
| working-directory: mdk | |
| run: ../ci-before-build.sh | |
| - name: Configure | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| export OHOS_NDK=$OHOS_SDK_NATIVE | |
| cmake --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk-${{ matrix.arch }} | |
| - name: Build | |
| shell: bash | |
| working-directory: mdk | |
| run: cmake --build --preset=${{ env.TARGET_OS }}-${{ matrix.arch }} --parallel | |
| - name: Make SDK | |
| shell: bash | |
| working-directory: mdk | |
| run: | | |
| export OHOS_NDK=$OHOS_SDK_NATIVE | |
| ../ci-after-build.sh | |
| mv mdk-sdk-*.7z .. | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.config }} | |
| path: mdk-sdk-${{ env.TARGET_OS }}.7z | |
| - name: Upload to SourceForge | |
| if: ${{ matrix.config == 'MinSizeRel' && env.SF_UPLOAD == 'true' }} | |
| shell: bash | |
| run: | | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.7z ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| md5sum mdk-sdk-${TARGET_OS}.7z | cut -d ' ' -f1 > mdk-sdk-${TARGET_OS}.7z.md5 | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-*.md5 ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| abi: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Checkout source | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: ${{ github.repository_owner }}/mdk | |
| path: mdk | |
| ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || 'master' }} | |
| fetch-depth: 1 | |
| token: ${{ secrets.CLONE_PAT }} | |
| - name: Make SDK | |
| shell: bash | |
| run: | | |
| mkdir -p mdk-sdk/include/abi/mdk | |
| cp -avf mdk/include/mdk/{AudioFormat,AudioFrame,Buffer,ColorSpace,FrameReader,global,MediaInfo,Property,VideoBuffer,VideoFormat,VideoFrame,VideoDecoder,Packet,MediaIO}.h mdk-sdk/include/abi/mdk | |
| - name: Archive SDK | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: mdk-abi-sdk | |
| path: mdk-sdk/ | |
| - run: sudo apt install -y sshpass p7zip-full | |
| - name: Upload to SourceForge | |
| shell: bash | |
| run: | | |
| 7z a mdk-abi-sdk.7z mdk-sdk | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-abi-sdk.7z ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| cd mdk && git describe --always >.version | |
| sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no .version ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/ | |
| - name: test | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| run: echo bye | |
| # https://github.com/orgs/community/discussions/26323#discussioncomment-3251451 | |
| # https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow | |
| # https://github.blog/changelog/2022-09-08-github-actions-use-github_token-with-workflow_dispatch-and-repository_dispatch/ | |
| Dispatch: | |
| runs-on: ubuntu-latest | |
| permissions: write-all | |
| needs: [abi, NuGet, Apple, Linux_SDK, Android_SDK] | |
| steps: | |
| # - name: 'Trigger Workflow' | |
| # uses: actions/github-script@v7 | |
| # with: | |
| # script: | | |
| # await github.rest.actions.createWorkflowDispatch({ | |
| # owner: '${{ github.repository_owner }}', | |
| # repo: 'mdk-examples', | |
| # workflow_id: 'workflows/main.yaml', | |
| # ref: 'master', | |
| # inputs: { | |
| # run_id: ${{ github.run_id }} | |
| # } | |
| # }); | |
| - name: Dispatch | |
| if: ${{ env.SF_UPLOAD == 'true' }} | |
| run: | | |
| gh workflow run main.yml --repo ${{ github.repository_owner }}/mdk-examples # -f run_id=${{ github.run_id }} | |
| gh workflow run build.yml --repo ${{ github.repository_owner }}/SPV # -f run_id=${{ github.run_id }} | |
| gh workflow run main.yml --repo ${{ github.repository_owner }}/mdk-braw -f run_id=${{ github.run_id }} | |
| gh workflow run main.yml --repo ${{ github.repository_owner }}/mdk-nvjp2k -f run_id=${{ github.run_id }} | |
| env: | |
| GH_TOKEN: ${{ secrets.ACTION_PAT }} # GITHUB_TOKEN? | |
| Pod: | |
| runs-on: macos-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: [Apple] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Deploy to Cocoapods | |
| run: | | |
| set -eo pipefail | |
| pod trunk push mdk.podspec --allow-warnings --verbose | |
| env: | |
| COCOAPODS_TRUNK_TOKEN: ${{ secrets.POD_TRUNK_TOKEN }} | |
| Release: | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: [Apple, NuGet, Linux_SDK, Android_SDK, ClangCL_SDK] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Download iOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-iOS | |
| - name: Download tvOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-tvOS | |
| - name: Download visionOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-visionOS | |
| - name: Download macCatalyst sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-macCatalyst-MinSizeRel | |
| - name: Download macOS sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-macOS | |
| - name: Download Apple sdk txz | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-apple | |
| - name: Download Apple sdk zip | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-apple-zip | |
| - name: Download win32 vs2026 sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-vs2026-RelWithDebInfo | |
| - name: Download win32 vs2026 ltl sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-windows-vs2026-ltl-RelWithDebInfo | |
| - name: Download uwp sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-uwp-RelWithDebInfo | |
| - name: Download clang-cl sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-clang-windows-MinSizeRel | |
| - name: Download linux sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-linux-MinSizeRel | |
| - name: Download android sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-android-MinSizeRel | |
| - name: Download ohos sdk | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: mdk-sdk-ohos-MinSizeRel | |
| - run: ls -lh | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: true | |
| body: "Changelog.md" | |
| #body_path: Changelog.md | |
| files: | | |
| *.7z | |
| *.xz | |
| mdk-sdk-apple.zip |