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 671a6ad236..512fde9926 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}") 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 512fde9926..0ead51a35e 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)