|
| 1 | +set(CMAKE_SYSTEM_NAME Generic) |
| 2 | +set(CMAKE_SYSTEM_PROCESSOR arm) |
| 3 | + |
| 4 | +set(CMAKE_TOOLCHAIN_PREFIX arm-none-eabi-) |
| 5 | + |
| 6 | +set(CMAKE_C_COMPILER ${CMAKE_TOOLCHAIN_PREFIX}gcc) |
| 7 | +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) |
| 8 | +set(CMAKE_CXX_COMPILER ${CMAKE_TOOLCHAIN_PREFIX}g++) |
| 9 | +set(CMAKE_LINKER ${CMAKE_TOOLCHAIN_PREFIX}gcc) |
| 10 | +set(CMAKE_OBJCOPY ${CMAKE_TOOLCHAIN_PREFIX}objcopy) |
| 11 | +set(CMAKE_SIZE ${CMAKE_TOOLCHAIN_PREFIX}size) |
| 12 | + |
| 13 | +set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") |
| 14 | +set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") |
| 15 | +set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") |
| 16 | + |
| 17 | +# Adjust the default behavior of the FIND_XXX() commands: |
| 18 | +# - Search programs in the host environment |
| 19 | +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
| 20 | +# - Search headers and libraries in the target environment |
| 21 | +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) |
| 22 | +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) |
| 23 | + |
| 24 | +# Don't try to execute linked programs |
| 25 | +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) |
| 26 | + |
| 27 | +set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m3 -mthumb") |
| 28 | +set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} --specs=nano.specs") |
| 29 | + |
| 30 | +# Always build debug information (stripped out for executable) |
| 31 | +# Add `-g3` to put macro values into debug information |
| 32 | +if(CMAKE_BUILD_TYPE MATCHES Debug) |
| 33 | + set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -O0 -g3") |
| 34 | +endif() |
| 35 | +if(CMAKE_BUILD_TYPE MATCHES Release) |
| 36 | + set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -O3 -g3") |
| 37 | +endif() |
| 38 | +if(CMAKE_BUILD_TYPE MATCHES MinSizeRel) |
| 39 | + set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -Os -g3") |
| 40 | +endif() |
| 41 | + |
| 42 | +set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp") |
| 43 | +set(CMAKE_CXX_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -fno-rtti -fno-exceptions") |
| 44 | + |
| 45 | +set(CMAKE_ASM_LINK_FLAGS "-T ${CMAKE_CURRENT_LIST_DIR}/standalone.ld -nostartfiles") |
| 46 | +set(CMAKE_ASM_LINK_FLAGS "${CMAKE_ASM_LINK_FLAGS} -Wl,-Map=${CMAKE_PROJECT_NAME}.map") |
| 47 | +set(CMAKE_ASM_LINK_FLAGS "${CMAKE_ASM_LINK_FLAGS} -Wl,--print-memory-usage") |
| 48 | + |
| 49 | +set(CMAKE_C_LINK_FLAGS "${CMAKE_ASM_LINK_FLAGS} -Wl,--start-group -lc -lm -Wl,--end-group") |
| 50 | +set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -ffunction-sections -fdata-sections -Wl,--gc-sections") |
| 51 | + |
| 52 | +set(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group") |
0 commit comments