From b0ddd9eaa576a131a1173f9903aa2519aacb956d Mon Sep 17 00:00:00 2001 From: grasci <86058054+grasci-arm@users.noreply.github.com> Date: Thu, 27 Jul 2023 08:10:26 +0100 Subject: [PATCH] Fixup Clang support --- .../cbuildgen/config/CLANG.16.0.0.cmake | 107 +++++++++++------- tools/projmgr/templates/cdefault.yml | 3 + 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/tools/buildmgr/cbuildgen/config/CLANG.16.0.0.cmake b/tools/buildmgr/cbuildgen/config/CLANG.16.0.0.cmake index 05855d543..9d43355f6 100644 --- a/tools/buildmgr/cbuildgen/config/CLANG.16.0.0.cmake +++ b/tools/buildmgr/cbuildgen/config/CLANG.16.0.0.cmake @@ -99,62 +99,73 @@ function(cbuild_set_options_flags lang optimize debug warnings language flags) set(${flags} "${opt_flags} ${${flags}}" PARENT_SCOPE) endfunction() +set(CLANG_MFPU "none") +set(CLANG_MFLOATABI "soft") + if(CPU STREQUAL "Cortex-M0") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m0") + set(CLANG_MCPU "cortex-m0") elseif(CPU STREQUAL "Cortex-M0+") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m0plus") + set(CLANG_MCPU "cortex-m0plus") elseif(CPU STREQUAL "Cortex-M1") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m1") + set(CLANG_MCPU "cortex-m1") elseif(CPU STREQUAL "Cortex-M3") set(CLANG_ARCH "armv7m") set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m3") + set(CLANG_MCPU "cortex-m3") elseif(CPU STREQUAL "Cortex-M4") set(CLANG_ARCH "armv7em") if(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv4_sp_d16") - set(CLANG_CPU "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m4") + set(CLANG_MFPU "fpv4-sp-d16") + set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m4") + set(CLANG_MCPU "cortex-m4") endif() elseif(CPU STREQUAL "Cortex-M7") set(CLANG_ARCH "armv7em") if(FPU STREQUAL "DP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv5_d16") - set(CLANG_CPU "-mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m7") + set(CLANG_MFPU "fpv5-d16") + set(CLANG_MFLOATABI "hard") elseif(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv4_sp_d16") - set(CLANG_CPU "-mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m7") + set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m7") + set(CLANG_MCPU "cortex-m7") endif() elseif(CPU STREQUAL "Cortex-M23") - set(CLANG_ARCH "armv8m.main") + set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_CPU "-mcpu=cortex-m23") + set(CLANG_MCPU "cortex-m23") elseif(CPU STREQUAL "Cortex-M33") set(CLANG_ARCH "armv8m.main") if(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fp") if(DSP STREQUAL "DSP") - set(CLANG_CPU "-mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m33") else() - set(CLANG_CPU "-mcpu=cortex-m33+nodsp -mfpu=fpv5-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m33+nodsp") endif() + set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") if(DSP STREQUAL "DSP") - set(CLANG_CPU "-mcpu=cortex-m33") + set(CLANG_MCPU "cortex-m33") else() - set(CLANG_CPU "-mcpu=cortex-m33+nodsp") + set(CLANG_MCPU "cortex-m33+nodsp") endif() endif() elseif(CPU STREQUAL "Cortex-M35P") @@ -162,16 +173,18 @@ elseif(CPU STREQUAL "Cortex-M35P") if(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fp") if(DSP STREQUAL "DSP") - set(CLANG_CPU "-mcpu=cortex-m35p -mfpu=fpv5-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m35p") else() - set(CLANG_CPU "-mcpu=cortex-m35p+nodsp -mfpu=fpv5-sp-d16 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m35p+nodsp") endif() + set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") if(DSP STREQUAL "DSP") - set(CLANG_CPU "-mcpu=cortex-m35p") + set(CLANG_MCPU "cortex-m35p") else() - set(CLANG_CPU "-mcpu=cortex-m35p+nodsp") + set(CLANG_MCPU "cortex-m35p+nodsp") endif() endif() elseif(CPU STREQUAL "Cortex-M55") @@ -179,67 +192,81 @@ elseif(CPU STREQUAL "Cortex-M55") if(FPU STREQUAL "NO_FPU") if(MVE STREQUAL "NO_MVE") set(CLANG_ARCH_SUFFIX "_soft_nofp_nomve") - set(CLANG_CPU "-mcpu=cortex-m55+nofp+nomve") + set(CLANG_MCPU "cortex-m55+nofp+nomve") else() set(CLANG_ARCH_SUFFIX "_hard_nofp_mve") - set(CLANG_CPU "-mcpu=cortex-m55+nofp") + set(CLANG_MCPU "cortex-m55+nofp") + set(CLANG_MFLOATABI "hard") endif() else() set(CLANG_ARCH_SUFFIX "_hard_fp") if(MVE STREQUAL "NO_MVE") - set(CLANG_CPU "-mcpu=cortex-m55+nomve -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m55+nomve") elseif(MVE STREQUAL "MVE") - set(CLANG_CPU "-mcpu=cortex-m55+nomve.fp -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m55+nomve.fp") else() - set(CLANG_CPU "-mcpu=cortex-m55 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m55") endif() + set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFLOATABI "hard") endif() elseif(CPU STREQUAL "Cortex-M85") set(CLANG_ARCH "armv8.1m.main") if(FPU STREQUAL "NO_FPU") if(MVE STREQUAL "NO_MVE") set(CLANG_ARCH_SUFFIX "_soft_nofp_nomve") - set(CLANG_CPU "-mcpu=cortex-m85+nofp+nomve") + set(CLANG_MCPU "cortex-m85+nofp+nomve") else() set(CLANG_ARCH_SUFFIX "_hard_nofp_mve") - set(CLANG_CPU "-mcpu=cortex-m85+nofp") + set(CLANG_MCPU "cortex-m85+nofp") + set(CLANG_MFLOATABI "hard") endif() else() set(CLANG_ARCH_SUFFIX "_hard_fp") if(MVE STREQUAL "NO_MVE") - set(CLANG_CPU "-mcpu=cortex-m85+nomve -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m85+nomve") elseif(MVE STREQUAL "MVE") - set(CLANG_CPU "-mcpu=cortex-m85+nomve.fp -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m85+nomve.fp") else() - set(CLANG_CPU "-mcpu=cortex-m85 -mfloat-abi=hard") + set(CLANG_MCPU "cortex-m85") endif() + set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFLOATABI "hard") endif() elseif(CPU STREQUAL "Cortex-A5") message(FATAL_ERROR "${CPU} not supprted!") if(FPU STREQUAL "DP_FPU") - set(CLANG_CPU "-mcpu=cortex-a5+nosimd -mfpu=auto -mfloat-abi=hard") + set(CLANG_MCPU "cortex-a5+nosimd") + set(CLANG_MFPU "auto") + set(CLANG_MFLOATABI "hard") else() - set(CLANG_CPU "-mcpu=cortex-a5+nosimd+nofp") + set(CLANG_MCPU "cortex-a5+nosimd+nofp") endif() elseif(CPU STREQUAL "Cortex-A7") message(FATAL_ERROR "${CPU} not supprted!") if(FPU STREQUAL "DP_FPU") - set(CLANG_CPU "-mcpu=cortex-a7+nosimd -mfpu=auto -mfloat-abi=hard") + set(CLANG_MCPU "cortex-a7+nosimd") + set(CLANG_MFPU "auto") + set(CLANG_MFLOATABI "hard") else() - set(CLANG_CPU "-mcpu=Cortex-a7+nosimd+nofp") + set(CLANG_MCPU "cortex-a7+nosimd+nofp") endif() elseif(CPU STREQUAL "Cortex-A9") message(FATAL_ERROR "${CPU} not supprted!") if(FPU STREQUAL "DP_FPU") - set(CLANG_CPU "-mcpu=cortex-a9+nosimd -mfpu=auto -mfloat-abi=hard") + set(CLANG_MCPU "cortex-a9+nosimd") + set(CLANG_MFPU "auto") + set(CLANG_MFLOATABI "hard") else() - set(CLANG_CPU "-mcpu=cortex-a9+nosimd+nofp") + set(CLANG_MCPU "cortex-a9+nosimd+nofp") endif() endif() -if(NOT DEFINED CLANG_CPU) +if(NOT DEFINED CLANG_MCPU) message(FATAL_ERROR "Error: CPU is not supported!") endif() +set(CLANG_CPU "--target=${CLANG_ARCH}-none-eabi -mcpu=${CLANG_MCPU} -mfpu=${CLANG_MFPU} -mfloat-abi=${CLANG_MFLOATABI}") + # Assembler set(ASM_CPU "${CLANG_CPU}") @@ -261,7 +288,7 @@ if(SECURE STREQUAL "Secure") set(CC_SECURE "-mcmse") endif() -set(CPP_FLAGS "-E -P --target=${CLANG_ARCH}-none-eabi ${CLANG_CPU} -xc ${CC_SECURE}") +set(CPP_FLAGS "-E -P ${CLANG_CPU} -xc ${CC_SECURE}") set(CPP_DEFINES ${LD_SCRIPT_PP_DEFINES}) cbuild_set_defines(CC CPP_DEFINES) if(DEFINED LD_REGIONS AND NOT LD_REGIONS STREQUAL "") @@ -275,7 +302,7 @@ separate_arguments(CPP_ARGS_LD_SCRIPT NATIVE_COMMAND ${CPP_ARGS_LD_SCRIPT}) set(CC_CPU "${CLANG_CPU}") set(CC_DEFINES ${ASM_DEFINES}) set(CC_BYTE_ORDER ${ASM_BYTE_ORDER}) -set(CC_FLAGS "--target=${CLANG_ARCH}-none-eabi --sysroot=${TOOLCHAIN_ROOT}/../lib/clang-runtimes/arm-none-eabi/${CLANG_ARCH}${CLANG_ARCH_SUFFIX}") +set(CC_FLAGS "") set(_PI "-include ") set(_ISYS "-isystem ") set(CC_OPTIONS_FLAGS) @@ -290,7 +317,8 @@ elseif(BRANCHPROT STREQUAL "BTI_SIGNRET") endif() set (CC_SYS_INC_PATHS_LIST - "$\{TOOLCHAIN_ROOT}/../lib/clang/\${TOOLCHAIN_MAJOR_VERSION}/include" + "\${TOOLCHAIN_ROOT}/../lib/clang/\${TOOLCHAIN_MAJOR_VERSION}/include" + "\${TOOLCHAIN_ROOT}/../lib/clang-runtimes/arm-none-eabi/${CLANG_ARCH}${CLANG_ARCH_SUFFIX}/include" ) # C++ Compiler @@ -306,6 +334,7 @@ cbuild_set_options_flags(CXX "${OPTIMIZE}" "${DEBUG}" "${WARNINGS}" "${LANGUAGE_ set (CXX_SYS_INC_PATHS_LIST "${CC_SYS_INC_PATHS_LIST}" + "\${TOOLCHAIN_ROOT}/../lib/clang-runtimes/arm-none-eabi/${CLANG_ARCH}${CLANG_ARCH_SUFFIX}/include/c++/v1/" ) # Linker diff --git a/tools/projmgr/templates/cdefault.yml b/tools/projmgr/templates/cdefault.yml index d8189d6ad..b162d8309 100644 --- a/tools/projmgr/templates/cdefault.yml +++ b/tools/projmgr/templates/cdefault.yml @@ -23,6 +23,7 @@ default: - for-compiler: GCC C-CPP: - -masm-syntax-unified + - -fomit-frame-pointer C: - -std=gnu11 Link: @@ -31,6 +32,8 @@ default: - -Wl,-Map=$elf()$.map - for-compiler: CLANG + C-CPP: + - -fomit-frame-pointer C: - -std=gnu11 Link: