62 lines
2.4 KiB
CMake
62 lines
2.4 KiB
CMake
# Minimum required version of CMake
|
|
cmake_minimum_required ( VERSION 3.13.0 )
|
|
|
|
# Name of the project
|
|
project ( "FreeRTOS+TCP Static analysis"
|
|
VERSION 1.0.0
|
|
LANGUAGES C )
|
|
|
|
# Allow the project to be organized into folders.
|
|
set_property( GLOBAL PROPERTY USE_FOLDERS ON )
|
|
|
|
# Use C90.
|
|
set( CMAKE_C_STANDARD 90 )
|
|
set( CMAKE_C_STANDARD_REQUIRED ON )
|
|
|
|
# Do not allow in-source build.
|
|
if( ${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR} )
|
|
message( FATAL_ERROR "In-source build is not allowed. Please build in a separate directory, such as ${PROJECT_SOURCE_DIR}/build." )
|
|
endif()
|
|
|
|
# Set global path variables.
|
|
get_filename_component(__MODULE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
|
|
set( MODULE_ROOT_DIR ${__MODULE_ROOT_DIR} CACHE INTERNAL "FreeRTOS-Plus-TCP repository root." )
|
|
|
|
# Set the kernel directory
|
|
set( KERNEL_DIRECTORY ${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel )
|
|
|
|
# If the kernel is not submoduled, download it.
|
|
if( NOT EXISTS ${KERNEL_DIRECTORY}/include )
|
|
# Inform the user of the actions
|
|
message( STATUS "FreeRTOS-Kernel is required for this build. Submoduling it..." )
|
|
execute_process( COMMAND git submodule update --init --checkout ${KERNEL_DIRECTORY}
|
|
WORKING_DIRECTORY ${MODULE_ROOT_DIR} )
|
|
endif()
|
|
|
|
# Add kernel sources to a list
|
|
file( GLOB KERNEL_SOURCES
|
|
${KERNEL_DIRECTORY}/*.c )
|
|
|
|
# Add TCP sources to a list
|
|
file( GLOB TCP_SOURCES
|
|
${MODULE_ROOT_DIR}/*.c )
|
|
|
|
# A better way would be to create a library such that all other dependencies are
|
|
# ignored by the static analysis tool. But, since +TCP is very closely linked
|
|
# with the FreeRTOS-Kernel, an executable had to be created.
|
|
|
|
# Add the executable for static analysis
|
|
add_executable( StaticAnalysis ${TCP_SOURCES}
|
|
${KERNEL_SOURCES}
|
|
${CMAKE_CURRENT_LIST_DIR}/Portable.c
|
|
${MODULE_ROOT_DIR}/portable/BufferManagement/BufferAllocation_2.c )
|
|
|
|
# Link the include directories with the target
|
|
target_include_directories( StaticAnalysis
|
|
PUBLIC "${KERNEL_DIRECTORY}/include"
|
|
PUBLIC "${MODULE_ROOT_DIR}/test/Coverity/ConfigFiles"
|
|
PUBLIC "${MODULE_ROOT_DIR}/include" )
|
|
|
|
# Uncomment the below line if the desired platform is 32-bit
|
|
# set_target_properties( StaticAnalysis PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32" )
|