# SPDX-License-Identifier: Apache-2.0

# Determines what argument to give to -mfpu= based on the
# KConfig'uration and sets this to GCC_M_FPU

if(CONFIG_FPU)

if("${ARCH}" STREQUAL "arm")
  if(CONFIG_CPU_AARCH32_CORTEX_R)
    if(CONFIG_CPU_CORTEX_R4 OR CONFIG_CPU_CORTEX_R5 OR CONFIG_CPU_CORTEX_R52) # VFPv3
      if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
        set(GCC_M_FPU vfpv3-d16)
      elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION)
        set(GCC_M_FPU vfpv3xd)
      endif()
      if(CONFIG_VFP_FEATURE_HALF_PRECISION)
        set(GCC_M_FPU ${GCC_M_FPU}-fp16)
      endif()
    endif()
  elseif(CONFIG_CPU_CORTEX_M)
    # 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)
    set(FPU_FOR_cortex-m33+nodsp    fpv5-${PRECISION_TOKEN}d16)
    set(FPU_FOR_cortex-m55          auto)
    set(FPU_FOR_cortex-m55+nomve.fp auto)
    set(FPU_FOR_cortex-m55+nomve    auto)
    set(FPU_FOR_cortex-m55+nodsp    auto)

    set(GCC_M_FPU ${FPU_FOR_${GCC_M_CPU}})
  endif()
endif()

endif() #CONFIG_FPU
