summaryrefslogtreecommitdiff
path: root/examples/build_system/cmake/toolchain/common.cmake
blob: 68871591457311862e89bdb217b1ff66e8e8193a (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
include(CMakePrintHelpers)

# ----------------------------------------------------------------------------
# Common
# ----------------------------------------------------------------------------
set(CMAKE_SYSTEM_NAME Generic)
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)

# Look for includes and libraries only in the target system prefix.
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# pass TOOLCHAIN_CPU to
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_SYSTEM_PROCESSOR)
include(${CMAKE_CURRENT_LIST_DIR}/../cpu/${CMAKE_SYSTEM_PROCESSOR}.cmake)

# ----------------------------------------------------------------------------
# Compile flags
# ----------------------------------------------------------------------------
if (TOOLCHAIN STREQUAL "gcc")
  list(APPEND TOOLCHAIN_COMMON_FLAGS
    -fdata-sections
    -ffunction-sections
    -fsingle-precision-constant
    -fno-strict-aliasing
    )
  list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
    -Wl,--print-memory-usage
    -Wl,--gc-sections
    -Wl,--cref
    )

elseif (TOOLCHAIN STREQUAL "iar")
  #list(APPEND TOOLCHAIN_COMMON_FLAGS)
  list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
    --diag_suppress=Li065
    )

elseif (TOOLCHAIN STREQUAL "clang")
  list(APPEND TOOLCHAIN_COMMON_FLAGS
    -fdata-sections
    -ffunction-sections
    -fno-strict-aliasing
    )
  list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
    -Wl,--print-memory-usage
    -Wl,--gc-sections
    -Wl,--cref
    )
endif ()

# join the toolchain flags into a single string
list(JOIN TOOLCHAIN_COMMON_FLAGS " " TOOLCHAIN_COMMON_FLAGS)
foreach (LANG IN ITEMS C CXX ASM)
  set(CMAKE_${LANG}_FLAGS_INIT ${TOOLCHAIN_COMMON_FLAGS})
  # optimization flags for LOG, LOGGER ?
  #set(CMAKE_${LANG}_FLAGS_RELEASE_INIT "-Os")
  #set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0")
endforeach ()

# Linker
list(JOIN TOOLCHAIN_EXE_LINKER_FLAGS " " CMAKE_EXE_LINKER_FLAGS_INIT)