1 cmake_minimum_required(VERSION 3.15)
5 set(FREERTOS_KERNEL_PATH "../../")
7 # Add the freertos_config for FreeRTOS-Kernel
8 add_library(freertos_config INTERFACE)
10 if (DEFINED FREERTOS_SMP_EXAMPLE AND FREERTOS_SMP_EXAMPLE STREQUAL "1")
11 message(STATUS "Build FreeRTOS SMP example")
12 target_include_directories(freertos_config
14 "../sample_configuration/smp"
17 message(STATUS "Build FreeRTOS example")
18 target_include_directories(freertos_config
20 "../sample_configuration"
24 # Select the heap port. values between 1-4 will pick a heap.
25 set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
27 # Select the native compile PORT
28 set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
30 # Adding the FreeRTOS-Kernel subdirectory
31 add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
33 ########################################################################
34 # Overall Compile Options
35 # Note the compile option strategy is to error on everything and then
36 # Per library opt-out of things that are warnings/errors.
37 # This ensures that no matter what strategy for compilation you take, the
38 # builds will still occur.
40 # Only tested with GNU and Clang.
41 # Other options are https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_%3CLANG%3E_COMPILER_ID
42 # Naming of compilers translation map:
47 # GCC | GNU, Clang, *Clang Others?
50 # MSVC | MSVC # Note only for MinGW?
53 target_compile_options(freertos_kernel PRIVATE
54 ### Gnu/Clang C Options
55 $<$<COMPILE_LANG_AND_ID:C,GNU>:-fdiagnostics-color=always>
56 $<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics>
58 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wall>
59 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wextra>
60 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wpedantic>
61 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Werror>
62 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wconversion>
63 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Weverything>
65 # Suppressions required to build clean with clang.
66 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros>
67 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded>
68 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations>
69 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-covered-switch-default>
70 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-cast-align> )
72 add_executable(${PROJECT_NAME}
76 target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)