]> begriffs open source - freertos/blob - examples/cmake_example/CMakeLists.txt
Fix build with C90 (#1036)
[freertos] / examples / cmake_example / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.15)
2
3 project(example)
4
5 set(FREERTOS_KERNEL_PATH "../../")
6
7 # Add the freertos_config for FreeRTOS-Kernel
8 add_library(freertos_config INTERFACE)
9
10 target_include_directories(freertos_config
11     INTERFACE
12     "../template_configuration"
13 )
14
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 )
19 endif()
20
21 # Select the heap port.  values between 1-4 will pick a heap.
22 set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
23
24 # Select the native compile PORT
25 set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
26
27 # Adding the FreeRTOS-Kernel subdirectory
28 add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
29
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.
36 #
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:
40 #
41 #   FreeRTOS    | CMake
42 #   -------------------
43 #   CCS         | ?TBD?
44 #   GCC         | GNU, Clang, *Clang Others?
45 #   IAR         | IAR
46 #   Keil        | ARMCC
47 #   MSVC        | MSVC # Note only for MinGW?
48 #   Renesas     | ?TBD?
49
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>
54
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>
61
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> )
68
69 add_executable(${PROJECT_NAME}
70     main.c
71 )
72
73 target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)