-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
102 lines (86 loc) · 3.12 KB
/
CMakeLists.txt
File metadata and controls
102 lines (86 loc) · 3.12 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
cmake_minimum_required(VERSION 3.15)
option(BUILD_CLI "Build CLI mode" OFF)
option(BUILD_SAMPLES "Build Samples mode" OFF)
option(BUILD_TESTS "Build Tests mode" OFF)
if(BUILD_CLI)
add_compile_definitions(APP_MODE=CLI)
elseif(BUILD_SAMPLES)
add_compile_definitions(APP_MODE=SAMPLES)
elseif(BUILD_TESTS)
add_compile_definitions(APP_MODE=TESTS)
endif()
add_custom_target(cli
COMMAND ${CMAKE_COMMAND} -DBUILD_CLI=ON -S ${CMAKE_SOURCE_DIR} -B ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
)
add_custom_target(samples
COMMAND ${CMAKE_COMMAND} -DBUILD_SAMPLES=ON -S ${CMAKE_SOURCE_DIR} -B ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
)
add_custom_target(tests
COMMAND ${CMAKE_COMMAND} -DBUILD_TESTS=ON -S ${CMAKE_SOURCE_DIR} -B ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
)
set(FREERTOS_KERNEL_DIR ${CMAKE_SOURCE_DIR}/freertos/FreeRTOS-Kernel)
set(FREERTOS_PORT_DIR ${CMAKE_SOURCE_DIR}/freertos/)
set(FREERTOS_SRC
${FREERTOS_KERNEL_DIR}/tasks.c
${FREERTOS_KERNEL_DIR}/list.c
${FREERTOS_KERNEL_DIR}/queue.c
${FREERTOS_KERNEL_DIR}/timers.c
${FREERTOS_KERNEL_DIR}/event_groups.c
${FREERTOS_PORT_DIR}/heap_4.c
${FREERTOS_PORT_DIR}/port.c
)
set(FREERTOS_TESTS
${CMAKE_SOURCE_DIR}/tests/freertos/freertos_tests.c
${CMAKE_SOURCE_DIR}/tests/freertos/semaphore_tests.c
${CMAKE_SOURCE_DIR}/tests/freertos/mutex_tests.c
${CMAKE_SOURCE_DIR}/tests/freertos/queue_tests.c
${CMAKE_SOURCE_DIR}/tests/freertos/print_number_tests.c
)
set(UART_DRIVER
${CMAKE_SOURCE_DIR}/drivers/uart/stm_uart.c
${CMAKE_SOURCE_DIR}/drivers/uart/stm_uart_ll.c
)
set(I2C_DRIVER
${CMAKE_SOURCE_DIR}/drivers/i2c/stm_i2c.c
)
set(FLASH_DRIVER
${CMAKE_SOURCE_DIR}/drivers/flash/stm_flash.c
)
project(blinky C)
set(CPU_FLAGS "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard")
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_EXE_LINKER_FLAGS "-T ${CMAKE_SOURCE_DIR}/stm32g4.ld -nostartfiles -Wl,--gc-sections -specs=nano.specs")
set(CMAKE_C_FLAGS "${CPU_FLAGS} -std=c11 -g -O0 -Wall -Wextra -ffunction-sections -fdata-sections")
set(SOURCES
${CMAKE_SOURCE_DIR}/samples/stm_blinky.c
${CMAKE_SOURCE_DIR}/sources/startup_stm32.c
${CMAKE_SOURCE_DIR}/samples/blinky_abs.c
${CMAKE_SOURCE_DIR}/samples/stm_samples.c
${CMAKE_SOURCE_DIR}/sources/console.c
${CMAKE_SOURCE_DIR}/sources/main.c
${CMAKE_SOURCE_DIR}/cli/base/FreeRTOS_CLI.c
${CMAKE_SOURCE_DIR}/cli/app/cli_app.c
${CMAKE_SOURCE_DIR}/cli/app/cli_helper.c
${CMAKE_SOURCE_DIR}/samples/i2c_sample.c
${CMAKE_SOURCE_DIR}/samples/flash_sample.c
${UART_DRIVER}
${FLASH_DRIVER}
${I2C_DRIVER}
${FREERTOS_SRC}
${FREERTOS_TESTS}
)
add_executable(RTOS.elf ${SOURCES})
target_include_directories(RTOS.elf PRIVATE
${CMAKE_SOURCE_DIR}/includes
${CMAKE_SOURCE_DIR}/drivers/uart
${CMAKE_SOURCE_DIR}/drivers/i2c
${CMAKE_SOURCE_DIR}/drivers/flash
${CMAKE_SOURCE_DIR}/tests/freertos
${CMAKE_SOURCE_DIR}/cli/base/
${CMAKE_SOURCE_DIR}/cli/app/
${FREERTOS_KERNEL_DIR}/include
${FREERTOS_PORT_DIR}
)