+cc kettenis for the IBT patch On 2024/02/28 16:15, Stuart Henderson wrote: > On 2024/02/23 17:19, Brad Smith wrote: > > Here is an update to aom 3.8.1. > > > > https://aomedia.googlesource.com/aom/+/refs/heads/main/CHANGELOG > > Here's a tweaked version adding yasm-compatible endbr64 magic to > x86inc.asm. Similar to what I added to audio/deadbeef but the > definitions in aom_config.asm use a different label (and setting to > 0 or 1 rather than checking for presence/absence). > > Still builds on i386. > > With this I can encode from one of the xiph.org test YUV4MPEG files > at https://media.xiph.org/video/derf/ on 11th gen intel without crashing, > which I couldn't do before. > > $ aomenc -o test.webm -w 352 -h 288 --limit=100 --cpu-used=4 akiyo_cif.y4m >
Index: Makefile =================================================================== RCS file: /cvs/ports/multimedia/aom/Makefile,v retrieving revision 1.20 diff -u -p -r1.20 Makefile --- Makefile 29 May 2023 17:52:01 -0000 1.20 +++ Makefile 28 Feb 2024 16:06:36 -0000 @@ -2,10 +2,10 @@ COMMENT= Alliance for Open Media AV1 vid GH_ACCOUNT= jbeich GH_PROJECT= aom -GH_TAGNAME= v3.6.1 +GH_TAGNAME= v3.8.1 CATEGORIES= multimedia -SHARED_LIBS= aom 4.0 +SHARED_LIBS= aom 4.1 HOMEPAGE= https://aomedia.org/ Index: distinfo =================================================================== RCS file: /cvs/ports/multimedia/aom/distinfo,v retrieving revision 1.17 diff -u -p -r1.17 distinfo --- distinfo 29 May 2023 17:52:01 -0000 1.17 +++ distinfo 28 Feb 2024 16:06:36 -0000 @@ -1,2 +1,2 @@ -SHA256 (aom-3.6.1.tar.gz) = Z5xBtBpQucWo+qG6kZ4MI5quf+hXUl4iP/IMVpl/EZ8= -SIZE (aom-3.6.1.tar.gz) = 5269397 +SHA256 (aom-3.8.1.tar.gz) = Yp0PvVhlQWfSjz78LN/w5wjWgoCqWzD4F0Tn4YGo2FE= +SIZE (aom-3.8.1.tar.gz) = 5461300 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /cvs/ports/multimedia/aom/patches/patch-CMakeLists_txt,v retrieving revision 1.5 diff -u -p -r1.5 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 9 Apr 2023 06:17:17 -0000 1.5 +++ patches/patch-CMakeLists_txt 28 Feb 2024 16:06:36 -0000 @@ -1,12 +1,13 @@ Index: CMakeLists.txt --- CMakeLists.txt.orig +++ CMakeLists.txt -@@ -824,7 +824,7 @@ if(ENABLE_EXAMPLES AND "${CMAKE_GENERATOR}" MATCHES "M - endif() - - if(BUILD_SHARED_LIBS) -- if(NOT WIN32 AND NOT APPLE) -+ if(NOT WIN32 AND NOT APPLE AND NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD") +@@ -828,7 +828,8 @@ if(BUILD_SHARED_LIBS) + # https://clang.llvm.org/docs/AddressSanitizer.html#usage. + if(NOT WIN32 + AND NOT APPLE +- AND NOT (CMAKE_C_COMPILER_ID MATCHES "Clang" AND SANITIZE)) ++ AND NOT (CMAKE_C_COMPILER_ID MATCHES "Clang" AND SANITIZE) ++ AND NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD") # The -z defs linker option reports unresolved symbol references from object # files when building a shared library. if("${CMAKE_VERSION}" VERSION_LESS "3.13") Index: patches/patch-aom_ports_aarch32_cpudetect_c =================================================================== RCS file: patches/patch-aom_ports_aarch32_cpudetect_c diff -N patches/patch-aom_ports_aarch32_cpudetect_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-aom_ports_aarch32_cpudetect_c 28 Feb 2024 16:06:36 -0000 @@ -0,0 +1,23 @@ +Allow ARM CPU runtime detection code to build on OpenBSD. + +Index: aom_ports/aarch32_cpudetect.c +--- aom_ports/aarch32_cpudetect.c.orig ++++ aom_ports/aarch32_cpudetect.c +@@ -12,7 +12,7 @@ + + #include "arm_cpudetect.h" + +-#if !CONFIG_RUNTIME_CPU_DETECT ++#if !CONFIG_RUNTIME_CPU_DETECT || defined(__OpenBSD__) + + static int arm_get_cpu_caps(void) { + // This function should actually be a no-op. There is no way to adjust any of +@@ -25,7 +25,7 @@ static int arm_get_cpu_caps(void) { + return flags; + } + +-#elif defined(_MSC_VER) // end !CONFIG_RUNTIME_CPU_DETECT ++#elif defined(_MSC_VER) // end !CONFIG_RUNTIME_CPU_DETECT || __OpenBSD__ + + static int arm_get_cpu_caps(void) { + int flags = 0; Index: patches/patch-aom_ports_aarch64_cpudetect_c =================================================================== RCS file: patches/patch-aom_ports_aarch64_cpudetect_c diff -N patches/patch-aom_ports_aarch64_cpudetect_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-aom_ports_aarch64_cpudetect_c 28 Feb 2024 16:06:36 -0000 @@ -0,0 +1,23 @@ +Allow ARM CPU runtime detection code to build on OpenBSD. + +Index: aom_ports/aarch64_cpudetect.c +--- aom_ports/aarch64_cpudetect.c.orig ++++ aom_ports/aarch64_cpudetect.c +@@ -15,7 +15,7 @@ + #include <sys/sysctl.h> + #endif + +-#if !CONFIG_RUNTIME_CPU_DETECT ++#if !CONFIG_RUNTIME_CPU_DETECT || defined(__OpenBSD__) + + static int arm_get_cpu_caps(void) { + // This function should actually be a no-op. There is no way to adjust any of +@@ -28,7 +28,7 @@ static int arm_get_cpu_caps(void) { + return flags; + } + +-#elif defined(__APPLE__) // end !CONFIG_RUNTIME_CPU_DETECT ++#elif defined(__APPLE__) // end !CONFIG_RUNTIME_CPU_DETECT || __OpenBSD__ + + // sysctlbyname() parameter documentation for instruction set characteristics: + // https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics Index: patches/patch-aom_ports_arm_cpudetect_c =================================================================== RCS file: patches/patch-aom_ports_arm_cpudetect_c diff -N patches/patch-aom_ports_arm_cpudetect_c --- patches/patch-aom_ports_arm_cpudetect_c 29 May 2023 17:52:01 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -Allow ARM CPU runtime detection code to build on OpenBSD. - -Index: aom_ports/arm_cpudetect.c ---- aom_ports/arm_cpudetect.c.orig -+++ aom_ports/arm_cpudetect.c -@@ -38,7 +38,7 @@ static int arm_cpu_env_mask(void) { - return env && *env ? (int)strtol(env, NULL, 0) : ~0; - } - --#if !CONFIG_RUNTIME_CPU_DETECT || defined(__APPLE__) -+#if !CONFIG_RUNTIME_CPU_DETECT || defined(__APPLE__) || defined(__OpenBSD__) - - int aom_arm_cpu_caps(void) { - /* This function should actually be a no-op. There is no way to adjust any of -@@ -56,7 +56,7 @@ int aom_arm_cpu_caps(void) { - return flags & mask; - } - --#elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT || __APPLE__ */ -+#elif defined(_MSC_VER) /* end !CONFIG_RUNTIME_CPU_DETECT || __APPLE__ || __OpenBSD__ */ - /*For GetExceptionCode() and EXCEPTION_ILLEGAL_INSTRUCTION.*/ - #undef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN Index: patches/patch-build_cmake_aom_configure_cmake =================================================================== RCS file: patches/patch-build_cmake_aom_configure_cmake diff -N patches/patch-build_cmake_aom_configure_cmake --- patches/patch-build_cmake_aom_configure_cmake 9 Apr 2023 06:17:17 -0000 1.10 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,22 +0,0 @@ -ARM uses compiler intrinsics, so don't require GNU as. - -Index: build/cmake/aom_configure.cmake ---- build/cmake/aom_configure.cmake.orig -+++ build/cmake/aom_configure.cmake -@@ -188,16 +188,6 @@ elseif(AOM_TARGET_CPU MATCHES "arm") - endif() - endif() - find_program(as_executable_found ${AS_EXECUTABLE}) -- if(NOT as_executable_found) -- message( -- FATAL_ERROR -- "Unable to find assembler and optimizations are enabled." -- "Searched for ${AS_EXECUTABLE}. Install it, add it to your path, or " -- "set the assembler directly by adding -DAS_EXECUTABLE=<assembler path> " -- "to your CMake command line." -- "To build without optimizations, add -DAOM_TARGET_CPU=generic to your " -- "cmake command line.") -- endif() - string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS) - endif() - Index: patches/patch-third_party_x86inc_x86inc_asm =================================================================== RCS file: patches/patch-third_party_x86inc_x86inc_asm diff -N patches/patch-third_party_x86inc_x86inc_asm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-third_party_x86inc_x86inc_asm 28 Feb 2024 16:06:36 -0000 @@ -0,0 +1,28 @@ +Index: third_party/x86inc/x86inc.asm +--- third_party/x86inc/x86inc.asm.orig ++++ third_party/x86inc/x86inc.asm +@@ -52,6 +52,16 @@ + %endif + %endif + ++%if AOM_ARCH_X86_64 ++%imacro _endbr64 0 ++ dd 0xfa1e0ff3 ++%endmacro ++%else ++%imacro _endbr64 0 ++; empty ++%endmacro ++%endif ++ + %define WIN64 0 + %define UNIX64 0 + %if AOM_ARCH_X86_64 +@@ -860,6 +870,7 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, + %endif + align function_align + %2: ++ _endbr64 + RESET_MM_PERMUTATION ; needed for x86-64, also makes disassembly somewhat nicer + %xdefine rstk rsp ; copy of the original stack pointer, used when greater alignment than the known stack alignment is required + %assign stack_offset 0 ; stack pointer offset relative to the return address