Skip to content

Commit

Permalink
Fixup Clang support
Browse files Browse the repository at this point in the history
  • Loading branch information
grasci-arm authored Jul 27, 2023
1 parent dc6b246 commit b0ddd9e
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 39 deletions.
107 changes: 68 additions & 39 deletions tools/buildmgr/cbuildgen/config/CLANG.16.0.0.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -99,147 +99,174 @@ 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")
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-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")
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-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}")
Expand All @@ -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 "")
Expand All @@ -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)
Expand All @@ -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
Expand All @@ -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
Expand Down
3 changes: 3 additions & 0 deletions tools/projmgr/templates/cdefault.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ default:
- for-compiler: GCC
C-CPP:
- -masm-syntax-unified
- -fomit-frame-pointer
C:
- -std=gnu11
Link:
Expand All @@ -31,6 +32,8 @@ default:
- -Wl,-Map=$elf()$.map

- for-compiler: CLANG
C-CPP:
- -fomit-frame-pointer
C:
- -std=gnu11
Link:
Expand Down

0 comments on commit b0ddd9e

Please sign in to comment.