Cherrypick libaom nasm fix (#3104)
diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml
index 43b76f7..8be728b 100644
--- a/.github/workflows/ci-windows.yml
+++ b/.github/workflows/ci-windows.yml
@@ -99,3 +99,5 @@
/out:avifenc.exe
.\avifenc.exe --help
+ - name: Verify longPathAware
+ run: .\avifenc.exe tests\data\abc.png .\verylongpath_000000010_000000020_000000030_000000040_000000050_000000060_000000070_000000080_000000090_000000100_000000110_000000120_000000130_000000140_000000150_000000160_000000170_000000180_000000190_000000200_000000210_000000220_000000230_000000240_000000250_000000260.avif
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b0bbc46..f2a4beb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@
* Fix build with CMake 3.22
* Update libxml2.cmd/LocalLibXml2.cmake: v2.15.2
* Update libyuv.cmd/LocalLibyuv.cmake: 6067afde5 (1922)
+* Fix libaom v3.13.1 build with nasm
### Removed since 1.4.0
diff --git a/cmake/Modules/LocalAom.cmake b/cmake/Modules/LocalAom.cmake
index ab8382c..c05e432 100644
--- a/cmake/Modules/LocalAom.cmake
+++ b/cmake/Modules/LocalAom.cmake
@@ -72,6 +72,15 @@
EXCLUDE_FROM_ALL
URL "https://aomedia.googlesource.com/aom/+archive/${AVIF_AOM_GIT_TAG}.tar.gz"
UPDATE_COMMAND ""
+ # Avoid the following error:
+ # CMake Error at build/_deps/libaom-src/build/cmake/aom_optimization.cmake:219 (message):
+ # Unsupported nasm: multipass optimization not supported.
+ # Call Stack (most recent call first):
+ # build/_deps/libaom-src/build/cmake/aom_configure.cmake:172 (test_nasm)
+ # build/_deps/libaom-src/CMakeLists.txt:73 (include)
+ # TODO: Remove the patch when using a libaom version past
+ # https://aomedia.googlesource.com/aom/+/6d2b7f71b98bfa28e372b1f2d85f137280bdb3de%5E%21/
+ PATCH_COMMAND git apply ${AVIF_SOURCE_DIR}/cmake/Modules/LocalAom.diff
)
if(NOT AVIF_CODEC_AOM_DECODE)
diff --git a/cmake/Modules/LocalAom.diff b/cmake/Modules/LocalAom.diff
new file mode 100644
index 0000000..37a0020
--- /dev/null
+++ b/cmake/Modules/LocalAom.diff
@@ -0,0 +1,22 @@
+diff --git a/build/cmake/aom_optimization.cmake b/build/cmake/aom_optimization.cmake
+index 9cc34de362..2750a0be41 100644
+--- a/build/cmake/aom_optimization.cmake
++++ b/build/cmake/aom_optimization.cmake
+@@ -212,7 +212,7 @@ endfunction()
+ # Currently checks only for presence of required object formats and support for
+ # the -Ox argument (multipass optimization).
+ function(test_nasm)
+- execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hf
++ execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hO
+ OUTPUT_VARIABLE nasm_helptext)
+
+ if(NOT "${nasm_helptext}" MATCHES "-Ox")
+@@ -220,6 +220,8 @@ function(test_nasm)
+ FATAL_ERROR "Unsupported nasm: multipass optimization not supported.")
+ endif()
+
++ execute_process(COMMAND ${CMAKE_ASM_NASM_COMPILER} -hf
++ OUTPUT_VARIABLE nasm_helptext)
+ if("${AOM_TARGET_CPU}" STREQUAL "x86")
+ if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin")
+ if(NOT "${nasm_helptext}" MATCHES "macho32")