Compile libaom and libyuv with clang-cl
The libaom change is temporary, until the Visual Studio 2022 bug is
fixed.
The libyuv change is permanent.
Fix https://github.com/AOMediaCodec/libavif/issues/2033.
diff --git a/.github/workflows/ci-windows-artifacts.yml b/.github/workflows/ci-windows-artifacts.yml
index 46f6e87..441b44d 100644
--- a/.github/workflows/ci-windows-artifacts.yml
+++ b/.github/workflows/ci-windows-artifacts.yml
@@ -26,7 +26,7 @@
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
with:
path: ext
- key: ${{ runner.os }}-${{ hashFiles('ext/*.cmd') }}-releasedeps
+ key: ${{ runner.os }}-${{ hashFiles('ext/*.cmd') }}-releasedeps-v2
- name: Print cmake version
run: cmake --version
- uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
@@ -38,6 +38,12 @@
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
run: ./aom.cmd
+ # Visual Studio 2022 has an issue starting at 17.8.0 which might cause
+ # AVX-512 instructions to be emitted in non-AVX-512 code. See
+ # https://github.com/AOMediaCodec/libavif/issues/2033#issuecomment-1960062751.
+ env:
+ CC: clang-cl
+ CXX: clang-cl
- name: Build dav1d
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
@@ -45,19 +51,12 @@
- name: Build libyuv
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
+ run: ./libyuv.cmd
# Use clang-cl to build libyuv. The assembly code in libyuv is written in the
# GCC inline assembly format. Visual C++ doesn't support GCC inline assembly.
- # This is PowerShell syntax.
- run: >
- $Env:CC = 'clang-cl'
-
- $Env:CXX = 'clang-cl'
-
- ./libyuv.cmd
-
- $Env:CC = ''
-
- $Env:CXX = ''
+ env:
+ CC: clang-cl
+ CXX: clang-cl
- name: Build libsharpyuv
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml
index 5acce19..78fffca 100644
--- a/.github/workflows/ci-windows.yml
+++ b/.github/workflows/ci-windows.yml
@@ -48,7 +48,7 @@
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
with:
path: ext
- key: ${{ runner.os }}-${{ hashFiles('ext/*.cmd') }}-alldeps
+ key: ${{ runner.os }}-${{ hashFiles('ext/*.cmd') }}-alldeps-v2
- name: Print cmake version
run: cmake --version
- uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
@@ -62,6 +62,12 @@
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
run: ./aom.cmd
+ # Visual Studio 2022 has an issue starting at 17.8.0 which might cause
+ # AVX-512 instructions to be emitted in non-AVX-512 code. See
+ # https://github.com/AOMediaCodec/libavif/issues/2033#issuecomment-1960062751.
+ env:
+ CC: clang-cl
+ CXX: clang-cl
- name: Build dav1d
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
@@ -82,6 +88,11 @@
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext
run: ./libyuv.cmd
+ # Use clang-cl to build libyuv. The assembly code in libyuv is written in the
+ # GCC inline assembly format. Visual C++ doesn't support GCC inline assembly.
+ env:
+ CC: clang-cl
+ CXX: clang-cl
- name: Build libjpeg
if: steps.cache-ext.outputs.cache-hit != 'true'
working-directory: ./ext