From d701340cb6c168ae3d161c814410b620ddc29e9d Mon Sep 17 00:00:00 2001 From: bijunda Date: Tue, 12 May 2026 21:18:33 +0800 Subject: [PATCH] fix(sim): fix cmake build on macOS macOS /usr/bin/ar does not understand the @rsp syntax used in CMake. Using LLVM binutils instead. Signed-off-by: bijunda --- arch/sim/src/cmake/Toolchain.cmake | 16 ++++++++++++++-- arch/sim/src/sim/CMakeLists.txt | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/sim/src/cmake/Toolchain.cmake b/arch/sim/src/cmake/Toolchain.cmake index 3b21b25fbc8..e326dca663e 100644 --- a/arch/sim/src/cmake/Toolchain.cmake +++ b/arch/sim/src/cmake/Toolchain.cmake @@ -21,8 +21,20 @@ # ############################################################################## if(APPLE AND CONFIG_SIM_TOOLCHAIN_GCC) - find_program(CMAKE_C_ELF_COMPILER x86_64-elf-gcc) - find_program(CMAKE_CXX_ELF_COMPILER x86_64-elf-g++) + if(CONFIG_HOST_ARM64) + find_program(CMAKE_C_ELF_COMPILER aarch64-elf-gcc) + find_program(CMAKE_CXX_ELF_COMPILER aarch64-elf-g++) + else() + find_program(CMAKE_C_ELF_COMPILER x86_64-elf-gcc) + find_program(CMAKE_CXX_ELF_COMPILER x86_64-elf-g++) + endif() +endif() + +# Ninja archives large object lists through response files. Use LLVM binutils +# because macOS /usr/bin/ar does not understand the @rsp syntax. +if(APPLE) + find_program(CMAKE_AR NAMES llvm-ar REQUIRED) + find_program(CMAKE_RANLIB NAMES llvm-ranlib REQUIRED) endif() if(WIN32) diff --git a/arch/sim/src/sim/CMakeLists.txt b/arch/sim/src/sim/CMakeLists.txt index a47cc98d5aa..47d1efd8888 100644 --- a/arch/sim/src/sim/CMakeLists.txt +++ b/arch/sim/src/sim/CMakeLists.txt @@ -156,6 +156,7 @@ list( if(CONFIG_HOST_MACOS) if(CONFIG_HAVE_CXXINITIALIZE) list(APPEND HOSTSRCS sim_macho_init.c) + target_link_options(nuttx PRIVATE -Wl,-ld_classic,-no_fixup_chains) endif() endif()