|
| 1 | +cmake_minimum_required(VERSION 3.27) |
| 2 | + |
| 3 | +# Roots |
| 4 | +include("../roots.cmake") |
| 5 | + |
| 6 | +set(CONTEXT project.Release+ARMCM0) |
| 7 | +set(TARGET ${CONTEXT}) |
| 8 | +set(OUT_DIR "${SOLUTION_ROOT}/out/project/ARMCM0/Release") |
| 9 | +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
| 10 | +set(LD_SCRIPT "${SOLUTION_ROOT}/project/RTE/Device/ARMCM0/ARMCM0_ac6.sct") |
| 11 | +set(LD_SCRIPT_PP ${LD_SCRIPT}) |
| 12 | + |
| 13 | +# Processor Options |
| 14 | +set(CPU Cortex-M0) |
| 15 | +set(FPU NO_FPU) |
| 16 | + |
| 17 | +# Toolchain config map |
| 18 | +include("toolchain.cmake") |
| 19 | + |
| 20 | +# Setup project |
| 21 | +project(${CONTEXT} LANGUAGES C) |
| 22 | + |
| 23 | +# Compilation database |
| 24 | +add_custom_target(database |
| 25 | + COMMAND ${CMAKE_COMMAND} -E make_directory "${OUT_DIR}" |
| 26 | + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" "${OUT_DIR}" |
| 27 | +) |
| 28 | +set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}) |
| 29 | + |
| 30 | +# Setup context |
| 31 | +add_executable(${CONTEXT}) |
| 32 | +set_target_properties(${CONTEXT} PROPERTIES PREFIX "" SUFFIX ".axf" OUTPUT_NAME "project") |
| 33 | +set_target_properties(${CONTEXT} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OUT_DIR}) |
| 34 | +add_library(${CONTEXT}_GLOBAL INTERFACE) |
| 35 | + |
| 36 | +# Includes |
| 37 | +target_include_directories(${CONTEXT} PUBLIC |
| 38 | + ${SOLUTION_ROOT}/project/RTE/_Release_ARMCM0 |
| 39 | + ${CMSIS_PACK_ROOT}/ARM/CMSIS/6.1.0/CMSIS/Core/Include |
| 40 | + ${CMSIS_PACK_ROOT}/ARM/Cortex_DFP/1.1.0/Device/ARMCM0/Include |
| 41 | +) |
| 42 | + |
| 43 | +# Defines |
| 44 | +target_compile_definitions(${CONTEXT} PUBLIC |
| 45 | + $<$<COMPILE_LANGUAGE:C,CXX>: |
| 46 | + ARMCM0 |
| 47 | + _RTE_ |
| 48 | + > |
| 49 | +) |
| 50 | + |
| 51 | +# Compile options |
| 52 | +target_compile_options(${CONTEXT} PUBLIC |
| 53 | + $<$<COMPILE_LANGUAGE:C>: |
| 54 | + "SHELL:${CC_CPU}" |
| 55 | + "SHELL:${CC_FLAGS}" |
| 56 | + "SHELL:-std=gnu11" |
| 57 | + "SHELL:-Wno-macro-redefined" |
| 58 | + "SHELL:-Wno-pragma-pack" |
| 59 | + "SHELL:-Wno-parentheses-equality" |
| 60 | + "SHELL:-Wno-license-management" |
| 61 | + > |
| 62 | +) |
| 63 | + |
| 64 | +# Add groups and components |
| 65 | +include("groups.cmake") |
| 66 | +include("components.cmake") |
| 67 | + |
| 68 | +target_link_libraries(${CONTEXT} PUBLIC |
| 69 | + Group_Source |
| 70 | + ARM_CMSIS_CORE_6_1_0 |
| 71 | + ARM_Device_Startup_C_Startup_2_2_0 |
| 72 | +) |
| 73 | + |
| 74 | +# Linker options |
| 75 | +target_link_options(${CONTEXT} PUBLIC |
| 76 | + "SHELL:${LD_CPU}" |
| 77 | + "SHELL:${_LS}\"${LD_SCRIPT_PP}\"" |
| 78 | + "SHELL:--entry=Reset_Handler" |
| 79 | + "SHELL:--map" |
| 80 | + "SHELL:--info summarysizes" |
| 81 | + "SHELL:--summary_stderr" |
| 82 | + "SHELL:--diag_suppress=L6314W" |
| 83 | +) |
| 84 | +set_target_properties(${CONTEXT} PROPERTIES LINK_DEPENDS ${LD_SCRIPT}) |
0 commit comments