diff --git a/tools/buildmgr/cbuildgen/config/CLANG.17.0.1.cmake b/tools/buildmgr/cbuildgen/config/CLANG.17.0.1.cmake index cb2806e0d..bd1fa9b25 100644 --- a/tools/buildmgr/cbuildgen/config/CLANG.17.0.1.cmake +++ b/tools/buildmgr/cbuildgen/config/CLANG.17.0.1.cmake @@ -86,54 +86,62 @@ endfunction() set(CLANG_MFPU "none") set(CLANG_MFLOATABI "soft") +set(CLANG_MABI "") if(CPU STREQUAL "Cortex-M0") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") set(CLANG_MCPU "cortex-m0") + set(CLANG_MFPU "") elseif(CPU STREQUAL "Cortex-M0+") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") set(CLANG_MCPU "cortex-m0plus") + set(CLANG_MFPU "") elseif(CPU STREQUAL "Cortex-M1") set(CLANG_ARCH "armv6m") set(CLANG_ARCH_SUFFIX "_soft_nofp") set(CLANG_MCPU "cortex-m1") + set(CLANG_MFPU "") elseif(CPU STREQUAL "Cortex-M3") set(CLANG_ARCH "armv7m") set(CLANG_ARCH_SUFFIX "_soft_nofp") set(CLANG_MCPU "cortex-m3") + set(CLANG_MFPU "") elseif(CPU STREQUAL "Cortex-M4") set(CLANG_ARCH "armv7em") if(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv4_sp_d16") set(CLANG_MCPU "cortex-m4") - set(CLANG_MFPU "fpv4-sp-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_MCPU "cortex-m4") + set(CLANG_MCPU "cortex-m4+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-M7") set(CLANG_ARCH "armv7em") if(FPU STREQUAL "DP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv5_d16") set(CLANG_MCPU "cortex-m7") - set(CLANG_MFPU "fpv5-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") elseif(FPU STREQUAL "SP_FPU") set(CLANG_ARCH_SUFFIX "_hard_fpv4_sp_d16") - set(CLANG_MCPU "cortex-m7") - set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MCPU "cortex-m7+nofp.dp") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") - set(CLANG_MCPU "cortex-m7") + set(CLANG_MCPU "cortex-m7+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-M23") - set(CLANG_ARCH "armv6m") + set(CLANG_ARCH "armv8m.base") set(CLANG_ARCH_SUFFIX "_soft_nofp") set(CLANG_MCPU "cortex-m23") + set(CLANG_MFPU "") elseif(CPU STREQUAL "Cortex-M33") set(CLANG_ARCH "armv8m.main") if(FPU STREQUAL "SP_FPU") @@ -143,15 +151,16 @@ elseif(CPU STREQUAL "Cortex-M33") else() set(CLANG_MCPU "cortex-m33+nodsp") endif() - set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") if(DSP STREQUAL "DSP") - set(CLANG_MCPU "cortex-m33") + set(CLANG_MCPU "cortex-m33+nofp") else() - set(CLANG_MCPU "cortex-m33+nodsp") + set(CLANG_MCPU "cortex-m33+nodsp+nofp") endif() + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-M35P") set(CLANG_ARCH "armv8m.main") @@ -162,38 +171,62 @@ elseif(CPU STREQUAL "Cortex-M35P") else() set(CLANG_MCPU "cortex-m35p+nodsp") endif() - set(CLANG_MFPU "fpv5-sp-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() set(CLANG_ARCH_SUFFIX "_soft_nofp") if(DSP STREQUAL "DSP") - set(CLANG_MCPU "cortex-m35p") + set(CLANG_MCPU "cortex-m35p+nofp") else() - set(CLANG_MCPU "cortex-m35p+nodsp") + set(CLANG_MCPU "cortex-m35p+nodsp+nofp") endif() + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-M52") 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_MCPU "cortex-m52+nofp+nomve") - else() + set(CLANG_MCPU "cortex-m52+nomve+nofp") + set(CLANG_MFPU "") + elseif(MVE STREQUAL "MVE") set(CLANG_ARCH_SUFFIX "_hard_nofp_mve") - set(CLANG_MCPU "cortex-m52+nofp") + set(CLANG_MCPU "cortex-m52+nomve.fp+nofp") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") + elseif(MVE STREQUAL "FP_MVE") + message(FATAL_ERROR "Error: cortex-m52 MVE FP requires an FPU!") + else() + message(FATAL_ERROR "Error: cortex-m52 MVE option '${MVE}' is not supported!") + endif() + elseif(FPU STREQUAL "SP_FPU") + set(CLANG_MFLOATABI "hard") + set(CLANG_MFPU "") + if(MVE STREQUAL "NO_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fp_nomve") + set(CLANG_MCPU "cortex-m52+nomve+nofp.dp") + elseif(MVE STREQUAL "MVE") + set(CLANG_ARCH_SUFFIX "_hard_fp_nomve") + set(CLANG_MCPU "cortex-m52+nomve.fp+nofp.dp") + elseif(MVE STREQUAL "FP_MVE") + message(FATAL_ERROR "Error: cortex-m52 MVE FP requires DP_FPU!") + else() + message(FATAL_ERROR "Error: cortex-m52 MVE option '${MVE}' is not supported!") endif() else() - set(CLANG_ARCH_SUFFIX "_hard_fp") + set(CLANG_MFLOATABI "hard") + set(CLANG_MFPU "") if(MVE STREQUAL "NO_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp_nomve") set(CLANG_MCPU "cortex-m52+nomve") elseif(MVE STREQUAL "MVE") - set(CLANG_MCPU "cortex-m52+nomve.fp") - else() + message(FATAL_ERROR "Error: cortex-m52 DP_FPU with integer-only MVE is not supported!") + elseif(MVE STREQUAL "FP_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp") set(CLANG_MCPU "cortex-m52") + else() + message(FATAL_ERROR "Error: cortex-m52 MVE option '${MVE}' is not supported!") endif() - set(CLANG_MFPU "fpv5-sp-d16") - set(CLANG_MFLOATABI "hard") endif() elseif(CPU STREQUAL "Star-MC3") set(CLANG_ARCH "armv8.1m.main") @@ -235,153 +268,198 @@ elseif(CPU STREQUAL "Cortex-M55") if(FPU STREQUAL "NO_FPU") if(MVE STREQUAL "NO_MVE") set(CLANG_ARCH_SUFFIX "_soft_nofp_nomve") - set(CLANG_MCPU "cortex-m55+nofp+nomve") - else() + set(CLANG_MCPU "cortex-m55+nomve+nofp") + set(CLANG_MFPU "") + elseif(MVE STREQUAL "MVE") set(CLANG_ARCH_SUFFIX "_hard_nofp_mve") - set(CLANG_MCPU "cortex-m55+nofp") + set(CLANG_MCPU "cortex-m55+nomve.fp+nofp") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") + elseif(MVE STREQUAL "FP_MVE") + message(FATAL_ERROR "Error: cortex-m55 MVE FP requires an FPU!") + else() + message(FATAL_ERROR "Error: cortex-m55 MVE option '${MVE}' is not supported!") endif() else() - set(CLANG_ARCH_SUFFIX "_hard_fp") + set(CLANG_MFPU "") + set(CLANG_MFLOATABI "hard") if(MVE STREQUAL "NO_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp_nomve") set(CLANG_MCPU "cortex-m55+nomve") elseif(MVE STREQUAL "MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp_nomve") set(CLANG_MCPU "cortex-m55+nomve.fp") - else() + elseif(MVE STREQUAL "FP_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp") set(CLANG_MCPU "cortex-m55") + else() + message(FATAL_ERROR "Error: cortex-m55 MVE option '${MVE}' is not supported!") 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_MCPU "cortex-m85+nofp+nomve") - else() + set(CLANG_MCPU "cortex-m85+nomve+nofp") + set(CLANG_MFPU "") + elseif(MVE STREQUAL "MVE") set(CLANG_ARCH_SUFFIX "_hard_nofp_mve") - set(CLANG_MCPU "cortex-m85+nofp") + set(CLANG_MCPU "cortex-m85+nomve.fp+nofp") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") + elseif(MVE STREQUAL "FP_MVE") + message(FATAL_ERROR "Error: cortex-m85 MVE FP requires an FPU!") + else() + message(FATAL_ERROR "Error: cortex-m85 MVE option '${MVE}' is not supported!") endif() else() - set(CLANG_ARCH_SUFFIX "_hard_fp") + set(CLANG_MFPU "") + set(CLANG_MFLOATABI "hard") if(MVE STREQUAL "NO_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp_nomve") set(CLANG_MCPU "cortex-m85+nomve") elseif(MVE STREQUAL "MVE") - set(CLANG_MCPU "cortex-m85+nomve.fp") - else() + message(FATAL_ERROR "Error: cortex-m85 with integer-only MVE and FPU is not supported!") + elseif(MVE STREQUAL "FP_MVE") + set(CLANG_ARCH_SUFFIX "_hard_fpdp") set(CLANG_MCPU "cortex-m85") + else() + message(FATAL_ERROR "Error: cortex-m85 MVE option '${MVE}' is not supported!") endif() - set(CLANG_MFPU "fpv5-sp-d16") - set(CLANG_MFLOATABI "hard") endif() elseif(CPU STREQUAL "Cortex-A5") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") - set(CLANG_MCPU "cortex-a5+nosimd") - set(CLANG_MFPU "vfpv4-d16") + set(CLANG_MCPU "cortex-a5") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "cortex-a5+nosimd+nofp") + set(CLANG_MCPU "cortex-a5+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-A7") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") - set(CLANG_MCPU "cortex-a7+nosimd") - set(CLANG_MFPU "vfpv4-d16") + set(CLANG_MCPU "cortex-a7") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "cortex-a7+nosimd+nofp") + set(CLANG_MCPU "cortex-a7+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-A9") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") - set(CLANG_MCPU "cortex-a9+nosimd") - set(CLANG_MFPU "vfpv3-d16") + set(CLANG_MCPU "cortex-a9") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "cortex-a9+nosimd+nofp") + set(CLANG_MCPU "cortex-a9+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-A35") set(CLANG_ARCH "armv8") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-a35") + set(CLANG_MABI "aapcs") else() set(CLANG_MCPU "cortex-a35+nofp") + set(CLANG_MABI "aapcs-soft") endif() elseif(CPU STREQUAL "Cortex-A53") set(CLANG_ARCH "armv8") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-a53") + set(CLANG_MABI "aapcs") else() set(CLANG_MCPU "cortex-a53+nofp") + set(CLANG_MABI "aapcs-soft") endif() elseif(CPU STREQUAL "Cortex-A55") set(CLANG_ARCH "armv8") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-a55") + set(CLANG_MABI "aapcs") else() set(CLANG_MCPU "cortex-a55+nofp") + set(CLANG_MABI "aapcs-soft") endif() elseif(CPU STREQUAL "Cortex-A57") set(CLANG_ARCH "armv8") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-a57") + set(CLANG_MABI "aapcs") else() set(CLANG_MCPU "cortex-a57+nofp") + set(CLANG_MABI "aapcs-soft") endif() elseif(CPU STREQUAL "Cortex-R4") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-r4f") - set(CLANG_MFPU "vfpv3-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "cortex-r4+nofp") + set(CLANG_MCPU "cortex-r4") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-R5") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-r5") - set(CLANG_MFPU "vfpv3-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() set(CLANG_MCPU "cortex-r5+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-R7") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-r7") - set(CLANG_MFPU "vfpv3-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "-mcpu=cortex-r7+nofp") + set(CLANG_MCPU "cortex-r7+nofp") + set(CLANG_MFPU "") endif() elseif(CPU STREQUAL "Cortex-R8") set(CLANG_ARCH "armv7") if(FPU STREQUAL "DP_FPU") set(CLANG_MCPU "cortex-r8") - set(CLANG_MFPU "vfpv3-d16") + set(CLANG_MFPU "") set(CLANG_MFLOATABI "hard") else() - set(CLANG_MCPU "-mcpu=cortex-r8+nofp") + set(CLANG_MCPU "cortex-r8+nofp") + set(CLANG_MFPU "") endif() endif() if(NOT DEFINED CLANG_MCPU) message(FATAL_ERROR "Error: CPU is not supported!") endif() +set(CLANG_ABI "") +if(NOT "${CLANG_MABI}" STREQUAL "") + set(CLANG_ABI "-mabi=${CLANG_MABI}") +endif() + if(CLANG_ARCH STREQUAL "armv8") set(CLANG_TARGET "aarch64-none-elf") - set(CLANG_CPU "-mcpu=${CLANG_MCPU}") + set(CLANG_CPU "--target=${CLANG_TARGET} -mcpu=${CLANG_MCPU} ${CLANG_ABI}") else() - if(CLANG_MFLOATABI STREQUAL "hard") + if(CPU MATCHES "^Cortex-[AMR]") + set(CLANG_TARGET "arm-none-eabi") + elseif(CLANG_MFLOATABI STREQUAL "hard") set(CLANG_TARGET "${CLANG_ARCH}-none-eabihf") else() set(CLANG_TARGET "${CLANG_ARCH}-none-eabi") endif() - set(CLANG_CPU "--target=${CLANG_TARGET} -mcpu=${CLANG_MCPU} -mfpu=${CLANG_MFPU} -mfloat-abi=${CLANG_MFLOATABI}") + if("${CLANG_MFPU}" STREQUAL "") + set(CLANG_CPU "--target=${CLANG_TARGET} -mcpu=${CLANG_MCPU} -mfloat-abi=${CLANG_MFLOATABI}") + else() + set(CLANG_CPU "--target=${CLANG_TARGET} -mcpu=${CLANG_MCPU} -mfpu=${CLANG_MFPU} -mfloat-abi=${CLANG_MFLOATABI}") + endif() endif() set(CMAKE_CXX_COMPILER_TARGET "${CLANG_TARGET}")