Build libavif #34
This file contains 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 libavif | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: libavif tag to build | |
required: true | |
php: | |
description: PHP version to build for | |
required: true | |
aom: | |
description: aom version to build | |
required: true | |
defaults: | |
run: | |
shell: cmd | |
jobs: | |
build: | |
strategy: | |
matrix: | |
arch: [x64, x86] | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout winlib-builder | |
uses: actions/checkout@v4 | |
with: | |
path: winlib-builder | |
- name: Checkout libavif | |
uses: actions/checkout@v4 | |
with: | |
path: libavif | |
repository: winlibs/libavif | |
ref: ${{github.event.inputs.version}} | |
- name: Compute virtual inputs | |
id: virtuals | |
run: powershell winlib-builder/scripts/compute-virtuals -version ${{github.event.inputs.php}} -arch ${{matrix.arch}} | |
- name: Checkout aom | |
run: cd libavif\ext && git clone -b ${{github.event.inputs.aom}} --depth 1 https://aomedia.googlesource.com/aom | |
- name: Checkout libyuf | |
run: cd libavif\ext && git clone --single-branch https://chromium.googlesource.com/libyuv/libyuv && cd libyuv && git checkout a6a2ec65 | |
- name: Setup NASM | |
uses: ilammy/setup-nasm@v1 | |
- name: Generate top level include | |
run: cd libavif && echo cmake_policy^(SET CMP0141 NEW^)>winlibs.cmake | |
- name: Configure aom for x64 | |
if: matrix.arch == 'x64' | |
run: cd libavif\ext\aom && md build.libavif && cd build.libavif && cmake -G "Visual Studio 17 2022" -A ${{steps.virtuals.outputs.msarch}} -DCMAKE_SYSTEM_VERSION=${{steps.virtuals.outputs.winsdk}} -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DENABLE_NASM=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE4_1=1 -DENABLE_SSE4_2=1 -DENABLE_AVX=1 -DENABLE_AVX2=1 -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=%GITHUB_WORKSPACE%\libavif\winlibs.cmake .. | |
- name: Configure aom for x86 | |
if: matrix.arch == 'x86' | |
run: cd libavif\ext\aom && md build.libavif && cd build.libavif && cmake -G "Visual Studio 17 2022" -A ${{steps.virtuals.outputs.msarch}} -DCMAKE_SYSTEM_VERSION=${{steps.virtuals.outputs.winsdk}} -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 -DENABLE_NASM=1 -DENABLE_SSE2=0 -DENABLE_SSE3=0 -DENABLE_SSSE3=0 -DENABLE_SSE4_1=0 -DENABLE_SSE4_2=0 -DENABLE_AVX=0 -DENABLE_AVX2=0 -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=%GITHUB_WORKSPACE%\libavif\winlibs.cmake .. | |
- name: Build aom | |
run: cd libavif\ext\aom\build.libavif && cmake --build . --config RelWithDebInfo | |
- name: Install aom | |
run: | | |
cd libavif\ext\aom\build.libavif | |
xcopy RelWithDebInfo\*.lib . | |
xcopy RelWithDebInfo\aom.lib .\aom_a.lib* | |
xcopy .\aom_a.lib ..\..\..\..\install\lib\ | |
- name: Configure libyuv | |
run: cd libavif\ext\libyuv && md build && cd build && cmake -G "Visual Studio 17 2022" -A ${{steps.virtuals.outputs.msarch}} -DCMAKE_SYSTEM_VERSION=${{steps.virtuals.outputs.winsdk}} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=%GITHUB_WORKSPACE%\libavif\winlibs.cmake .. | |
- name: Build libyuf | |
run: cd libavif\ext\libyuv\build && cmake --build . --config RelWithDebInfo | |
- name: Install libyuf | |
run: | | |
cd libavif\ext\libyuv\build | |
xcopy RelWithDebInfo\*.lib . | |
xcopy RelWithDebInfo\yuv.lib .\yuv_a.lib* | |
xcopy .\yuv_a.lib ..\..\..\..\install\lib\ | |
- name: Configure libavif | |
run: cd libavif && cmake -G "Visual Studio 17 2022" -A ${{steps.virtuals.outputs.msarch}} -T ${{steps.virtuals.outputs.msts}} -DCMAKE_SYSTEM_VERSION=${{steps.virtuals.outputs.winsdk}} -DAVIF_LIBYUV=LOCAL -DAVIF_CODEC_AOM=LOCAL -DAVIF_ENABLE_WERROR=0 -DBUILD_SHARED_LIBS=0 -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=%GITHUB_WORKSPACE%\libavif\winlibs.cmake . | |
- name: Build libavif | |
run: cd libavif && cmake --build . --config RelWithDebInfo | |
- name: Install libavif | |
run: | | |
cd libavif | |
cmake --install . --config RelWithDebInfo --prefix ..\install | |
rmdir /s /q ..\install\lib\pkgconfig | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{github.event.inputs.version}}-${{steps.virtuals.outputs.vs}}-${{matrix.arch}} | |
path: install |