From 06d50d046a451e5966b1cb514b52c8cc42885484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 7 Jun 2025 22:12:03 +0200 Subject: [PATCH 1/2] cmake: Fix arm/thumb arch checks Closes #24114. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 671a6ad23644065e5ef9880a43a79a8f5796c158..512fde992677f59d73d8a84507f00188da223e2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -797,13 +797,13 @@ elseif(ZIG_HOST_TARGET_ARCH STREQUAL "amd64") set(ZIG_HOST_TARGET_ARCH "x86_64") elseif(ZIG_HOST_TARGET_ARCH STREQUAL "arm64") set(ZIG_HOST_TARGET_ARCH "aarch64") -elseif(ZIG_HOST_TARGET_ARCH STREQUAL "armv7l") +elseif(ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]l$") set(ZIG_HOST_TARGET_ARCH "arm") -elseif(ZIG_HOST_TARGET_ARCH STREQUAL "armv7b") +elseif(ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]b$") set(ZIG_HOST_TARGET_ARCH "armeb") endif() -string(REGEX REPLACE "^((arm|thumb)(hf?)?)el$" "\\1" ZIG_HOST_TARGET_ARCH "${ZIG_HOST_TARGET_ARCH}") -if(ZIG_HOST_TARGET_ARCH MATCHES "^arm(hf?)?(eb)?$") +string(REGEX REPLACE "^((arm|thumb)(hf?)?)el$" "\\2" ZIG_HOST_TARGET_ARCH "${ZIG_HOST_TARGET_ARCH}") +if(ZIG_HOST_TARGET_ARCH MATCHES "^arm(eb)?$") check_symbol_exists(__thumb__ "" ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) if(ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) string(REGEX REPLACE "^arm" "thumb" ZIG_HOST_TARGET_ARCH "${ZIG_HOST_TARGET_ARCH}") -- 2.54.0 From 44155eb93c0823006f5a50ab7051770fd4d427de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 7 Jun 2025 22:24:09 +0200 Subject: [PATCH 2/2] cmake: Simplify some arm/thumb checks. I'm not convinced that some of the possibilities that these regexes allowed are real. I've literally never seen or heard of "armhfel", nor of "thumb" ever showing up in `uname -m`, etc. --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 512fde992677f59d73d8a84507f00188da223e2e..0ead51a35e71280891de4e46aee1dc61982b06a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -797,12 +797,11 @@ elseif(ZIG_HOST_TARGET_ARCH STREQUAL "amd64") set(ZIG_HOST_TARGET_ARCH "x86_64") elseif(ZIG_HOST_TARGET_ARCH STREQUAL "arm64") set(ZIG_HOST_TARGET_ARCH "aarch64") -elseif(ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]l$") +elseif(ZIG_HOST_TARGET_ARCH MATCHES "^arm(el)?$" OR ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]l$") set(ZIG_HOST_TARGET_ARCH "arm") -elseif(ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]b$") +elseif(ZIG_HOST_TARGET_ARCH STREQUAL "armeb" OR ZIG_HOST_TARGET_ARCH MATCHES "^armv[7-8]b$") set(ZIG_HOST_TARGET_ARCH "armeb") endif() -string(REGEX REPLACE "^((arm|thumb)(hf?)?)el$" "\\2" ZIG_HOST_TARGET_ARCH "${ZIG_HOST_TARGET_ARCH}") if(ZIG_HOST_TARGET_ARCH MATCHES "^arm(eb)?$") check_symbol_exists(__thumb__ "" ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) if(ZIG_HOST_TARGET_DEFAULTS_TO_THUMB) -- 2.54.0