From 55dda77b9881260532f2d47020286356ff0a7cf3 Mon Sep 17 00:00:00 2001 From: Anton Maklakov Date: Wed, 29 Jun 2022 15:13:07 +0700 Subject: [PATCH] build: add support ESP32-S3 in Clang build configuration --- tools/cmake/toolchain-clang-esp32s3.cmake | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/cmake/toolchain-clang-esp32s3.cmake diff --git a/tools/cmake/toolchain-clang-esp32s3.cmake b/tools/cmake/toolchain-clang-esp32s3.cmake new file mode 100644 index 0000000000..bb9da7c157 --- /dev/null +++ b/tools/cmake/toolchain-clang-esp32s3.cmake @@ -0,0 +1,32 @@ +include($ENV{IDF_PATH}/tools/cmake/utilities.cmake) + +set(CMAKE_SYSTEM_NAME Generic) + +set(CMAKE_C_COMPILER clang) +set(CMAKE_CXX_COMPILER clang++) +set(CMAKE_ASM_COMPILER clang) + +set(CMAKE_AR xtensa-esp32-elf-ar) +set(CMAKE_RANLIB xtensa-esp32-elf-gcc-ranlib) +set(CMAKE_OBJDUMP xtensa-esp32-elf-objdump) + +# -freestanding is a hack to force Clang to use its own stdatomic.h, +# without falling back to the (incompatible) GCC stdatomic.h +# https://github.com/espressif/llvm-project/blob/d9341b81/clang/lib/Headers/stdatomic.h#L13-L18 +remove_duplicated_flags("--target=xtensa -mcpu=esp32s3 -ffreestanding ${CMAKE_C_FLAGS}" + UNIQ_CMAKE_C_FLAGS) +set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" + CACHE STRING "C Compiler Base Flags" + FORCE) + +remove_duplicated_flags("--target=xtensa -mcpu=esp32s3 -ffreestanding ${CMAKE_CXX_FLAGS}" + UNIQ_CMAKE_CXX_FLAGS) +set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" + CACHE STRING "C++ Compiler Base Flags" + FORCE) + +remove_duplicated_flags("--target=xtensa -mcpu=esp32s3 ${CMAKE_ASM_FLAGS}" + UNIQ_CMAKE_ASM_FLAGS) +set(CMAKE_ASM_FLAGS "${UNIQ_CMAKE_ASM_FLAGS}" + CACHE STRING "Assembler Base Flags" + FORCE)