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