# SPDX-License-Identifier: Apache-2.0
list(APPEND TOOLCHAIN_C_FLAGS
  -mthumb
  -mcpu=${GCC_M_CPU}
  )
list(APPEND TOOLCHAIN_LD_FLAGS
  -mthumb
  -mcpu=${GCC_M_CPU}
  )

# Defines a mapping from GCC_M_CPU to FPU

if(CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION)
  set(PRECISION_TOKEN)
else()
  set(PRECISION_TOKEN sp-)
endif()

set(FPU_FOR_cortex-m4      fpv4-${PRECISION_TOKEN}d16)
set(FPU_FOR_cortex-m7      fpv5-${PRECISION_TOKEN}d16)
set(FPU_FOR_cortex-m33     fpv5-${PRECISION_TOKEN}d16)

if(CONFIG_FLOAT)
  list(APPEND TOOLCHAIN_C_FLAGS -mfpu=${FPU_FOR_${GCC_M_CPU}})
  list(APPEND TOOLCHAIN_LD_FLAGS -mfpu=${FPU_FOR_${GCC_M_CPU}})
  if    (CONFIG_FP_SOFTABI)
    list(APPEND TOOLCHAIN_C_FLAGS -mfloat-abi=softfp)
    list(APPEND TOOLCHAIN_LD_FLAGS -mfloat-abi=softfp)
  elseif(CONFIG_FP_HARDABI)
    list(APPEND TOOLCHAIN_C_FLAGS -mfloat-abi=hard)
    list(APPEND TOOLCHAIN_LD_FLAGS -mfloat-abi=hard)
  endif()
endif()
