On Sat, 25 Jul 2026 18:24:57 -0400
Brad Smith <[email protected]> wrote:

> Within the last few months recoil-rts has gained support for building
> on aarch64. The following diff fixes building the port on aarch64.

Thanks, Brad. This is a fairly big port and I'm reluctant to enable it
for arm64 without reports on the test suite (`make test`) and runtime.

A convenient way to test runtime (if you don't mind the assets that are
downloaded into ~/.local/state/BAR) is running

$ beyond-all-reason

and then testing something from "Scenarios" (button on the left). The
first one, "Fortress Assault" would be good one to just load up and give
some commands to the units.

Benchmarking can be done in the scenarios at the bottom, "Benchmark
BAR" and "Benchmark pathfinding" will give some times for rendering and
don't require input.

> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/games/recoil-rts/Makefile,v
> retrieving revision 1.28
> diff -u -p -u -p -r1.28 Makefile
> --- Makefile  24 Jul 2026 03:46:16 -0000      1.28
> +++ Makefile  25 Jul 2026 22:12:04 -0000
> @@ -1,5 +1,4 @@
> -# heavy use of SSE with no alternative pathways for !x86 arches
> -ONLY_FOR_ARCHS =     amd64
> +ONLY_FOR_ARCHS =     aarch64 amd64
>  
>  COMMENT =            real-time strategy game engine for Beyond
> All Reason 
> Index: patches/patch-tools_pr-downloader_src_lib_7z_CpuArch_c
> ===================================================================
> RCS file: patches/patch-tools_pr-downloader_src_lib_7z_CpuArch_c
> diff -N patches/patch-tools_pr-downloader_src_lib_7z_CpuArch_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-tools_pr-downloader_src_lib_7z_CpuArch_c    25
> Jul 2026 22:12:04 -0000 @@ -0,0 +1,62 @@
> +- 24.05
> +  fc662341e6f85da78ada0e443f6116b978f79f22
> +- 26.00
> +  839151eaaad24771892afaae6bac690e31e58384
> +
> +Index: tools/pr-downloader/src/lib/7z/CpuArch.c
> +--- tools/pr-downloader/src/lib/7z/CpuArch.c.orig
> ++++ tools/pr-downloader/src/lib/7z/CpuArch.c
> +@@ -415,16 +415,42 @@ BoolInt CPU_IsSupported_AES (void) { return
> APPLE_CRYP
> + 
> + #else // __APPLE__
> + 
> +-#include <sys/auxv.h>
> ++#if defined(__GLIBC__) && (__GLIBC__ * 100 + __GLIBC_MINOR__ >= 216)
> ++  #define Z7_GETAUXV_AVAILABLE
> ++#else
> ++  #if defined __has_include
> ++  #if __has_include (<sys/auxv.h>)
> ++    #define Z7_GETAUXV_AVAILABLE
> ++  #endif
> ++  #endif
> ++#endif
> + 
> ++#ifdef Z7_GETAUXV_AVAILABLE
> ++#include <sys/auxv.h>
> + #define USE_HWCAP
> ++#endif
> + 
> + #ifdef USE_HWCAP
> + 
> ++#if defined(__FreeBSD__) || defined(__OpenBSD__)
> ++static unsigned long MY_getauxval(int aux)
> ++{
> ++  unsigned long val;
> ++  if (elf_aux_info(aux, &val, sizeof(val)))
> ++    return 0;
> ++  return val;
> ++}
> ++#else
> ++#define MY_getauxval  getauxval
> ++  #if defined __has_include
> ++  #if __has_include (<asm/hwcap.h>)
> + #include <asm/hwcap.h>
> ++  #endif
> ++  #endif
> ++#endif
> + 
> +   #define MY_HWCAP_CHECK_FUNC_2(name1, name2) \
> +-  BoolInt CPU_IsSupported_ ## name1() { return (getauxval(AT_HWCAP)
>  & (HWCAP_  ## name2)) ? 1 : 0; } ++  BoolInt CPU_IsSupported_ ##
> name1(void) { return (MY_getauxval(AT_HWCAP)  & (HWCAP_  ## name2)); }
> + 
> + #ifdef MY_CPU_ARM64
> +   #define MY_HWCAP_CHECK_FUNC(name) \
> +@@ -433,7 +459,7 @@ BoolInt CPU_IsSupported_AES (void) { return
> APPLE_CRYP
> + // MY_HWCAP_CHECK_FUNC (ASIMD)
> + #elif defined(MY_CPU_ARM)
> +   #define MY_HWCAP_CHECK_FUNC(name) \
> +-  BoolInt CPU_IsSupported_ ## name() { return (getauxval(AT_HWCAP2)
> & (HWCAP2_ ## name)) ? 1 : 0; } ++  BoolInt CPU_IsSupported_ ##
> name(void) { return (MY_getauxval(AT_HWCAP2) & (HWCAP2_ ## name)); }
> +   MY_HWCAP_CHECK_FUNC_2(NEON, NEON)
> + #endif
> + 

Reply via email to