Skip to content

Build libavif

Build libavif #28

Workflow file for this run

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: Setup NASM
uses: ilammy/setup-nasm@v1
- name: Generate top level include
run: cd libavif\ext\aom && 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=..\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=..\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 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 .
- 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