| cmake_minimum_required(VERSION 3.15) |
| project(example) |
| |
| set(FREERTOS_KERNEL_PATH "../../") |
| |
| # Add the freertos_config for FreeRTOS-Kernel |
| add_library(freertos_config INTERFACE) |
| |
| target_include_directories(freertos_config |
| INTERFACE |
| "../template_configuration" |
| ) |
| |
| if (DEFINED FREERTOS_SMP_EXAMPLE AND FREERTOS_SMP_EXAMPLE STREQUAL "1") |
| message(STATUS "Build FreeRTOS SMP example") |
| # Adding the following configurations to build SMP template port |
| add_compile_options( -DconfigNUMBER_OF_CORES=2 -DconfigUSE_PASSIVE_IDLE_HOOK=0 ) |
| endif() |
| |
| # Select the heap port. values between 1-4 will pick a heap. |
| set(FREERTOS_HEAP "4" CACHE STRING "" FORCE) |
| |
| # Select the native compile PORT |
| set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE) |
| |
| # Adding the FreeRTOS-Kernel subdirectory |
| add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel) |
| |
| ######################################################################## |
| # Overall Compile Options |
| # Note the compile option strategy is to error on everything and then |
| # Per library opt-out of things that are warnings/errors. |
| # This ensures that no matter what strategy for compilation you take, the |
| # builds will still occur. |
| # |
| # Only tested with GNU and Clang. |
| # Other options are https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_%3CLANG%3E_COMPILER_ID |
| # Naming of compilers translation map: |
| # |
| # FreeRTOS | CMake |
| # ------------------- |
| # CCS | ?TBD? |
| # GCC | GNU, Clang, *Clang Others? |
| # IAR | IAR |
| # Keil | ARMCC |
| # MSVC | MSVC # Note only for MinGW? |
| # Renesas | ?TBD? |
| |
| target_compile_options(freertos_kernel PRIVATE |
| ### Gnu/Clang C Options |
| $<$<COMPILE_LANG_AND_ID:C,GNU>:-fdiagnostics-color=always> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics> |
| |
| $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wall> |
| $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wextra> |
| $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wpedantic> |
| $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Werror> |
| $<$<COMPILE_LANG_AND_ID:C,Clang,GNU>:-Wconversion> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Weverything> |
| |
| # Suppressions required to build clean with clang. |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-covered-switch-default> |
| $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-cast-align> ) |
| |
| add_executable(${PROJECT_NAME} |
| main.c |
| ) |
| |
| target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config) |
| |
| set_property(TARGET freertos_kernel PROPERTY C_STANDARD 90) |