blob: d7dc3408ea9787bd16713452a887613998315f5e (
plain)
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
|
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR ARM)
set(TOOLCHAIN_PREFIX "arm-none-eabi-")
set(SPECS "-specs=nosys.specs -specs=nano.specs")
# Without that flag CMake is not able to pass test compilation check
if (${CMAKE_VERSION} VERSION_EQUAL "3.6.0" OR ${CMAKE_VERSION} VERSION_GREATER "3.6")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
endif ()
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc CACHE STRING "")
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} CACHE STRING "")
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++ CACHE STRING "")
# Default C compiler flags
set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -DDEBUG ${SPECS}")
set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall ${SPECS}")
set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -Wall ${SPECS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${SPECS}")
# Default C++ compiler flags
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -DDEBUG ${SPECS}")
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${SPECS}")
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -Wall ${SPECS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${SPECS}")
find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy DOC "objcopy tool")
find_program(CMAKE_SIZE_UTIL ${TOOLCHAIN_PREFIX}size DOC "size tool")
if (NOT TARGET toolchain)
add_library(toolchain INTERFACE)
target_compile_options(toolchain INTERFACE "-fno-exceptions")
target_link_options(toolchain INTERFACE "-Wl,--gc-sections" "-Wl,--print-memory-usage")
endif ()
|