]> begriffs open source - freertos/blob - examples/cmake_example/CMakeLists.txt
Add constanst suffix to prevent potential type conversion (#921)
[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 if (DEFINED FREERTOS_SMP_EXAMPLE AND FREERTOS_SMP_EXAMPLE STREQUAL "1")
11     message(STATUS "Build FreeRTOS SMP example")
12     target_include_directories(freertos_config
13         INTERFACE
14         "../sample_configuration/smp"
15     )
16 else()
17     message(STATUS "Build FreeRTOS example")
18     target_include_directories(freertos_config
19         INTERFACE
20         "../sample_configuration"
21     )
22 endif()
23
24 # Select the heap port.  values between 1-4 will pick a heap.
25 set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
26
27 # Select the native compile PORT
28 set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
29
30 # Adding the FreeRTOS-Kernel subdirectory
31 add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
32
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.
39 #
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:
43 #
44 #   FreeRTOS    | CMake
45 #   -------------------
46 #   CCS         | ?TBD?
47 #   GCC         | GNU, Clang, *Clang Others?
48 #   IAR         | IAR
49 #   Keil        | ARMCC
50 #   MSVC        | MSVC # Note only for MinGW?
51 #   Renesas     | ?TBD?
52
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>
57
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>
64
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> )
71
72 add_executable(${PROJECT_NAME}
73     main.c
74 )
75
76 target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)