From: Peter Hessler Subject: Re: UPDATE: aom 3.8.1 To: Brad Smith , ports@openbsd.org Date: Sun, 3 Mar 2024 16:26:14 +0100 This fails to build for me on arm64: ===> Configuring for aom-3.8.1 -- The C compiler identification is Clang 16.0.6 -- The CXX compiler identification is Clang 16.0.6 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/obj/ports/aom-3.8.1/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/obj/ports/aom-3.8.1/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE --- aom_configure: Detected CPU: arm64 -- The ASM compiler identification is unknown -- Found assembler: as CMake Error at build/cmake/aom_configure.cmake:212 (enable_language): The CMAKE_ASM_COMPILER: as is not a full path and was not found in the PATH. Tell CMake where to find the compiler by setting either the environment variable "ASM" or the CMake cache entry CMAKE_ASM_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. Call Stack (most recent call first): CMakeLists.txt:73 (include) -- Warning: Did not find file Compiler/-ASM -- Configuring incomplete, errors occurred! note that there is no "as" or "llvm-as" binary on arm64. On 2024 Feb 28 (Wed) at 16:40:02 +0000 (+0000), Stuart Henderson wrote: :On 2024/02/28 17:28, Jan Beich wrote: :> Brad Smith writes: :> :> > GH_ACCOUNT= jbeich :> > GH_PROJECT= aom :> > -GH_TAGNAME= v3.6.1 :> > +GH_TAGNAME= v3.8.1 :> :> If you don't use snapshots or RCs better migrate off my GitHub mirror. :> According to Repology the download link would be :> :> https://storage.googleapis.com/aom-releases/libaom-3.8.1.tar.gz :> : :Updated for that. No difference in the contents of the tars after :extracting. : :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:39:18 -0000 :@@ -1,13 +1,14 @@ : COMMENT= Alliance for Open Media AV1 video codec : :-GH_ACCOUNT= jbeich :-GH_PROJECT= aom :-GH_TAGNAME= v3.6.1 :+V= 3.8.1 :+DISTNAME= libaom-$V :+PKGNAME= aom-$V : CATEGORIES= multimedia : :-SHARED_LIBS= aom 4.0 :+SHARED_LIBS= aom 4.1 : : HOMEPAGE= https://aomedia.org/ :+SITES= https://storage.googleapis.com/aom-releases/ : : MAINTAINER= Brad Smith : :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:39:18 -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 (libaom-3.8.1.tar.gz) = 3txlBggSp9+AHAJwov6L13PGuwtgHyFE7PvGLcD2cco= :+SIZE (libaom-3.8.1.tar.gz) = 5450909 :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:39:18 -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:39:18 -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:39:18 -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 :+ #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= " :-- "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:39:18 -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 : -- "Every time I think I know where it's at, they move it."