The code that has been imported here is wrong, because it doesn't
account for the fact that SRCARCH in barebox is never arm64, even for
CONFIG_ARM64. This is not trivially fixable directly as this file is
included before CONFIG_ options are available, so we can't actually know
whether it's arm64 or arm32...

Fix this by requiring ARCH=arm64 to be used for 64-bit builds with clang.
At some point in the future, we can enforce this for everyone.

Note that clang building is currently only supported and tested for
sandbox, but with this change, everyone can see the errors and
collaboration on enabling clang support becomes feasible.

Signed-off-by: Ahmad Fatoum <[email protected]>
---
 arch/arm/Kconfig       | 2 +-
 scripts/Makefile.clang | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 63877c965fad..fe4fd3f47178 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -42,7 +42,7 @@ config ARM64
        select ARCH_HAS_BAREBOX_MEMORY_OFFSET
 
 config ARM64_STRICT_BUILD_ARCH
-       bool
+       def_bool CC_IS_CLANG
        depends on ARM64
        help
          When selected, ARCH=arm64 is required for 64-bit builds and ARCH=arm
diff --git a/scripts/Makefile.clang b/scripts/Makefile.clang
index e93ffb77aa10..fca1b8eee985 100644
--- a/scripts/Makefile.clang
+++ b/scripts/Makefile.clang
@@ -2,8 +2,9 @@
 # Individual arch/{arch}/Makefiles should use -EL/-EB to set intended
 # endianness and -m32/-m64 to set word size based on Kconfigs instead of
 # relying on the target triple.
-CLANG_TARGET_FLAGS_arm         := arm-linux-gnueabi
-CLANG_TARGET_FLAGS_arm64       := aarch64-linux-gnu
+CLANG_TARGET_FLAGS-arm         := arm-linux-gnueabi
+CLANG_TARGET_FLAGS-arm64       := aarch64-linux-gnu
+CLANG_TARGET_FLAGS_arm         := $(CLANG_TARGET_FLAGS-$(UTS_MACHINE))
 CLANG_TARGET_FLAGS_mips                := mipsel-linux-gnu
 CLANG_TARGET_FLAGS_powerpc     := powerpc64le-linux-gnu
 CLANG_TARGET_FLAGS_riscv       := riscv64-linux-gnu
-- 
2.47.3


Reply via email to