FreeRTOS-Kernel/FreeRTOS/Demo/Posix_GCC/CMakeLists.txt
Florian La Roche 5f85f43c39
Posix_GCC: update compiler options (#1227)
Posix_GCC: update compiler options

1. Add to CFLAGS
   - add -O0 optimization for debug builds.
   - add -O3 optimization for release builds. 
2. Update signal handler `handle_sigint()` to use
  `_exit()` instead of `exit()`. Normal exit() is not allowed
  within a signal handler.

Signed-off-by: Florian La Roche <Florian.LaRoche@gmail.com>
2024-06-10 11:32:23 +05:30

130 lines
4.7 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project( posix_demo )
add_compile_options( -D_WINDOWS_ )
add_compile_options( -Wall -Wextra -Wpedantic )
if( TRACE_ON_ENTER )
add_compile_options( -DTRACE_ON_ENTER=1 )
else()
add_compile_options( -DTRACE_ON_ENTER=0 )
endif()
if( COVERAGE_TEST )
set( COVERAGE_TEST 1 )
set( NO_TRACING 1 )
add_compile_options( -DprojCOVERAGE_TEST=1 )
add_compile_options( -DprojENABLE_TRACING=0 )
else()
if( NO_TRACING )
set( NO_TRACING 1 )
add_compile_options( -DprojENABLE_TRACING=0 )
else()
set( NO_TRACING 0 )
add_compile_options( -DprojENABLE_TRACING=1 )
endif()
set( COVERAGE_TEST 0 )
add_compile_options( -DprojCOVERAGE_TEST=0 )
endif()
if( PROFILE )
set( CMAKE_BUILD_TYPE "release" )
else()
set( CMAKE_BUILD_TYPE "debug" )
endif()
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
if( SANITIZE_ADDRESS )
add_compile_options( -fsanitize=address -fsanitize=alignment )
endif()
if( SANITIZE_LEAK )
add_compile_options( -fsanitize=leak )
endif()
set( FREERTOS_KERNEL_PATH "../../Source" )
set( FREERTOS_PLUS_TRACE_PATH "../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace" )
# Add the freertos_config for FreeRTOS-Kernel
add_library( freertos_config INTERFACE )
target_include_directories( freertos_config
INTERFACE
./
./Trace_Recorder_Configuration
${FREERTOS_PLUS_TRACE_PATH}/include
${FREERTOS_PLUS_TRACE_PATH}/kernelports/FreeRTOS/include
)
# Select the heap port
set( FREERTOS_HEAP "3" CACHE STRING "" FORCE)
# Select the native compile PORT
set( FREERTOS_PORT "GCC_POSIX" CACHE STRING "" FORCE)
# Adding the FreeRTOS-Kernel subdirectory
add_subdirectory( ${FREERTOS_KERNEL_PATH} ${CMAKE_CURRENT_BINARY_DIR}/FreeRTOS-Kernel )
target_compile_options( freertos_kernel
PRIVATE
# Trace macro cast pointer to int to store memory management event
$<IF:${NO_TRACING},,-Wno-pointer-to-int-cast>
)
file( GLOB FREERTOS_PLUS_TRACE_SOURCES ${FREERTOS_PLUS_TRACE_PATH}/*.c ${FREERTOS_PLUS_TRACE_PATH}/kernelports/FreeRTOS/*.c )
add_executable( posix_demo
code_coverage_additions.c
console.c
main.c
main_blinky.c
main_full.c
run-time-stats-utils.c
$<$<NOT:${NO_TRACING}>:${FREERTOS_PLUS_TRACE_SOURCES}>
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/AbortDelay.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/BlockQ.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/blocktim.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/countsem.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/death.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/dynamic.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/EventGroupsDemo.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/flop.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/GenQTest.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/integer.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/IntSemTest.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/MessageBufferAMP.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/MessageBufferDemo.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/PollQ.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/QPeek.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/QueueOverwrite.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/QueueSet.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/QueueSetPolling.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/recmutex.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/semtest.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/StaticAllocation.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/StreamBufferDemo.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/StreamBufferInterrupt.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/TaskNotify.c
${CMAKE_CURRENT_LIST_DIR}/../Common/Minimal/TimerDemo.c
)
target_include_directories( posix_demo
PRIVATE
${CMAKE_CURRENT_LIST_DIR}
${CMAKE_CURRENT_LIST_DIR}/../Common/include
${FREERTOS_PLUS_TRACE_PATH}/Include
${FREERTOS_PLUS_TRACE_PATH}/streamports/File/include
${FREERTOS_PLUS_TRACE_PATH}/streamports/File/config
)
target_compile_definitions( posix_demo
PRIVATE
$<IF:$<STREQUAL:${USER_DEMO},BLINKY_DEMO>,USER_DEMO=0,>
$<IF:$<STREQUAL:${USER_DEMO},FULL_DEMO>,USER_DEMO=1,>
)
target_link_libraries( posix_demo freertos_kernel freertos_config )