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 target_include_directories(freertos_config
12 "../template_configuration"
15 if (DEFINED FREERTOS_SMP_EXAMPLE AND FREERTOS_SMP_EXAMPLE STREQUAL "1")
16 message(STATUS "Build FreeRTOS SMP example")
17 # Adding the following configurations to build SMP template port
18 add_compile_options( -DconfigNUMBER_OF_CORES=2 -DconfigUSE_PASSIVE_IDLE_HOOK=0 )
21 # Select the heap port. values between 1-4 will pick a heap.
22 set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
24 # Select the native compile PORT
25 set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
27 # Adding the FreeRTOS-Kernel subdirectory
28 add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
30 ########################################################################
31 # Overall Compile Options
32 # Note the compile option strategy is to error on everything and then
33 # Per library opt-out of things that are warnings/errors.
34 # This ensures that no matter what strategy for compilation you take, the
35 # builds will still occur.
37 # Only tested with GNU and Clang.
38 # Other options are https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_%3CLANG%3E_COMPILER_ID
39 # Naming of compilers translation map:
44 # GCC | GNU, Clang, *Clang Others?
47 # MSVC | MSVC # Note only for MinGW?
50 target_compile_options(freertos_kernel PRIVATE
51 ### Gnu/Clang C Options
52 $<$<COMPILE_LANG_AND_ID:C,GNU>:-fdiagnostics-color=always>
53 $<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics>
55 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wall>
56 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wextra>
57 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wpedantic>
58 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Werror>
59 $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wconversion>
60 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Weverything>
62 # Suppressions required to build clean with clang.
63 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros>
64 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded>
65 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations>
66 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-covered-switch-default>
67 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-cast-align> )
69 add_executable(${PROJECT_NAME}
73 target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)