This repository has been archived by the owner on Oct 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
arm-none-eabi-gcc.cmake
48 lines (38 loc) · 2.05 KB
/
arm-none-eabi-gcc.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
include(CMakePrintHelpers)
# check the environment variable for the supported cortex type
include(${CMAKE_CURRENT_LIST_DIR}/common/checkCORTEX_TYPE.cmake)
# set factors based on the cortex type defined
include(${CMAKE_CURRENT_LIST_DIR}/cortex/$ENV{CORTEX_TYPE}.cmake)
# Specify location of toolchain root folder
message(CHECK_START "Searching for ARM_GCC_ROOT_FOLDER")
if(NOT EXISTS "$ENV{ARM_GCC_ROOT_FOLDER}")
message(CHECK_FAIL "not found.")
message(FATAL_ERROR "No valid compiler for this toolchain found, aborting!")
else()
message(CHECK_PASS "found ... \"$ENV{ARM_GCC_ROOT_FOLDER}\"")
set(TC_ROOT_FOLDER "$ENV{ARM_GCC_ROOT_FOLDER}")
endif()
# Exports the compile options for each file as compile_commands.json
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(TC_PREFIX "arm-none-eabi-")
# set toolchain (TC) path independent of host file system
set(TC___C_EXEC "${TC_ROOT_FOLDER}/bin/${TC_PREFIX}gcc${TC_POSTFIX}")
set(TC_CXX_EXEC "${TC_ROOT_FOLDER}/bin/${TC_PREFIX}g++${TC_POSTFIX}")
set(TC_GDB_EXEC "${TC_ROOT_FOLDER}/bin/${TC_PREFIX}gdb${TC_POSTFIX}")
set(TC_OBJ_EXEC "${TC_ROOT_FOLDER}/bin/${TC_PREFIX}objcopy${TC_POSTFIX}")
set(TC_SIZ_EXEC "${TC_ROOT_FOLDER}/bin/${TC_PREFIX}size${TC_POSTFIX}")
set(FLAGS "${cpu_flag} ${cpu_mode} ${fpu_type} ${float_abi}" CACHE STRING "Compiler flags")
set(LINK_FLAGS "${cpu_flags} ${cpu_mode}" CACHE STRING "Linker flags")
set(ASM_FLAGS "-x assembler-with-cpp")
set(CMAKE_C_COMPILER ${TC___C_EXEC} ${FLAGS})
set(CMAKE_ASM_COMPILER ${TC___C_EXEC} ${ASM_FLAGS})
set(CMAKE_CXX_COMPILER ${TC_CXX_EXEC} ${FLAGS} ${CPP_FLAGS})
set(CMAKE_OBJCOPY ${TC_OBJ_EXEC})
set(CMAKE_SIZE ${TC_SIZ_EXEC})
set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf")
set(CMAKE_EXECUTABLE_SUFFIX_C ".elf")
set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf")
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
# Upfront configured for target compilier triplet for compiler checks
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
include(${CMAKE_CURRENT_LIST_DIR}/common/gcc.cmake)