152 lines
4.8 KiB
CMake
152 lines
4.8 KiB
CMake
# This is a generic toolchain support file to support GCC target
|
|
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_SYSTEM_PROCESSOR arm)
|
|
|
|
# Some target device related default GCC settings
|
|
if(CPU STREQUAL "Cortex-M0")
|
|
set(CPU_FLAGS -mcpu=cortex-m0)
|
|
elseif(CPU STREQUAL "Cortex-M0+")
|
|
set(CPU_FLAGS -mcpu=cortex-m0plus)
|
|
elseif(CPU STREQUAL "Cortex-M1")
|
|
set(CPU_FLAGS -mcpu=cortex-m1)
|
|
elseif(CPU STREQUAL "Cortex-M3")
|
|
set(CPU_FLAGS -mcpu=cortex-m3)
|
|
elseif(CPU STREQUAL "Cortex-M4")
|
|
if(FPU STREQUAL "SP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m4)
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-M7")
|
|
if(FPU STREQUAL "DP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard)
|
|
elseif(FPU STREQUAL "SP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m7)
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-M23")
|
|
set(CPU_FLAGS -mcpu=cortex-m23)
|
|
elseif(CPU STREQUAL "Cortex-M33")
|
|
if(FPU STREQUAL "SP_FPU")
|
|
if(DSP STREQUAL "DSP")
|
|
set(CPU_FLAGS -mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m33+nodsp -mfpu=fpv5-sp-d16 -mfloat-abi=hard)
|
|
endif()
|
|
else()
|
|
if(DSP STREQUAL "DSP")
|
|
set(CPU_FLAGS -mcpu=cortex-m33)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m33+nodsp)
|
|
endif()
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-M35P")
|
|
if(FPU STREQUAL "SP_FPU")
|
|
if(DSP STREQUAL "DSP")
|
|
set(CPU_FLAGS -mcpu=cortex-m35p -mfpu=fpv5-sp-d16 -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m35p+nodsp -mfpu=fpv5-sp-d16 -mfloat-abi=hard)
|
|
endif()
|
|
else()
|
|
if(DSP STREQUAL "DSP")
|
|
set(CPU_FLAGS -mcpu=cortex-m35p)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m35p+nodsp)
|
|
endif()
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-M55")
|
|
if(FPU STREQUAL "NO_FPU")
|
|
if(MVE STREQUAL "NO_MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m55+nofp+nomve)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m55+nofp)
|
|
endif()
|
|
else()
|
|
if(MVE STREQUAL "NO_MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m55+nomve -mfloat-abi=hard)
|
|
elseif(MVE STREQUAL "MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m55+nomve.fp -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m55 -mfloat-abi=hard)
|
|
endif()
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-M85")
|
|
if(FPU STREQUAL "NO_FPU")
|
|
if(MVE STREQUAL "NO_MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m85+nofp+nomve)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m85+nofp)
|
|
endif()
|
|
else()
|
|
if(MVE STREQUAL "NO_MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m85+nomve -mfloat-abi=hard)
|
|
elseif(MVE STREQUAL "MVE")
|
|
set(CPU_FLAGS -mcpu=cortex-m85+nomve.fp -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-m85 -mfloat-abi=hard)
|
|
endif()
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-A5")
|
|
if(FPU STREQUAL "DP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-a5+nosimd -mfpu=auto -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-a5+nosimd+nofp)
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-A7")
|
|
if(FPU STREQUAL "DP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-a7+nosimd -mfpu=auto -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-a7+nosimd+nofp)
|
|
endif()
|
|
elseif(CPU STREQUAL "Cortex-A9")
|
|
if(FPU STREQUAL "DP_FPU")
|
|
set(CPU_FLAGS -mcpu=cortex-a9+nosimd -mfpu=auto -mfloat-abi=hard)
|
|
else()
|
|
set(CPU_FLAGS -mcpu=cortex-a9+nosimd+nofp)
|
|
endif()
|
|
endif()
|
|
|
|
if(BYTE_ORDER STREQUAL "Little-endian")
|
|
set(CPU_FLAGS ${CPU_FLAGS} -mlittle-endian)
|
|
elseif(BYTE_ORDER STREQUAL "Big-endian")
|
|
set(CPU_FLAGS ${CPU_FLAGS} -mbig-endian)
|
|
endif()
|
|
|
|
set(CPU_FLAGS ${CPU_FLAGS} -mthumb)
|
|
|
|
if(SECURE STREQUAL "Secure" OR SECURE STREQUAL "Secure-only")
|
|
set(CC_SECURE -mcmse)
|
|
endif()
|
|
|
|
# Some default GCC settings
|
|
# arm-none-eabi- must be part of path environment
|
|
set(TOOLCHAIN_PREFIX arm-none-eabi-)
|
|
set(FLAGS "-fdata-sections -ffunction-sections -Wl,--gc-sections -Wno-comment")
|
|
set(CPP_FLAGS "${FLAGS} -fno-rtti -fno-exceptions -fno-threadsafe-statics")
|
|
|
|
set(CMAKE_C_FLAGS ${FLAGS})
|
|
set(CMAKE_CXX_FLAGS ${CPP_FLAGS})
|
|
|
|
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
|
|
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
|
|
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
|
|
set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
|
|
set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size)
|
|
|
|
set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf")
|
|
set(CMAKE_EXECUTABLE_SUFFIX_C ".elf")
|
|
set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf")
|
|
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG "")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "")
|
|
set(CMAKE_ASM_FLAGS_DEBUG "")
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "")
|
|
set(CMAKE_ASM_FLAGS_RELEASE "")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "") |