##// END OF EJS Templates
Add basic Meson build support...
Add basic Meson build support This should ease building both FSW and unit tests. Meson has a better support for building both corss and native binaries at the same time.

File last commit:

r309:add3c3641139 R3_plus
r407:244510f22990 tip R3.3
Show More
cppcheck.cmake
116 lines | 3.6 KiB | text/x-cmake | CMakeLexer
# - Run cppcheck on c++ source files as a custom target and a test
#
# add_test_cppcheck(<target-name> [UNUSED_FUNCTIONS] [STYLE] [POSSIBLE_ERROR] [FAIL_ON_WARNINGS]) -
# Create a target to check a target's sources with cppcheck and the indicated options
#
# Requires these CMake modules:
# Findcppcheck
#
# Requires CMake 2.8 or newer
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
IF(__add_cppcheck)
RETURN()
ENDIF()
SET(__add_cppcheck YES)
FIND_PACKAGE(cppcheck)
IF(NOT TARGET all_cppcheck)
ADD_CUSTOM_TARGET(all_cppcheck)
ENDIF()
FUNCTION(add_test_cppcheck _target_name)
IF(NOT TARGET ${_target_name})
MESSAGE(FATAL_ERROR "add_test_cppcheck given a target name that does not exist: '${_target_name}' !")
ENDIF()
SET(cppcheck_args)
LIST(FIND ARGN UNUSED_FUNCTIONS index)
IF("${index}" GREATER "-1")
LIST(APPEND cppcheck_args ${CPPCHECK_UNUSEDFUNC_ARG})
ENDIF()
LIST(FIND ARGN STYLE index)
IF("${index}" GREATER "-1")
LIST(APPEND cppcheck_args ${CPPCHECK_STYLE_ARG})
ENDIF()
LIST(FIND ARGN POSSIBLE_ERROR index)
IF("${index}" GREATER "-1")
LIST(APPEND cppcheck_args ${CPPCHECK_POSSIBLEERROR_ARG})
ENDIF()
LIST(FIND ARGN MISSING_INCLUDE index)
IF("${index}" GREATER "-1")
LIST(APPEND cppcheck_args ${CPPCHECK_MISSINGINCLUDE_ARG})
ENDIF()
LIST(FIND _input FAIL_ON_WARNINGS index)
IF("${index}" GREATER "-1")
LIST(APPEND CPPCHECK_FAIL_REGULAR_EXPRESSION ${CPPCHECK_WARN_REGULAR_EXPRESSION})
LIST(REMOVE_AT _input ${_unused_func})
ENDIF()
GET_TARGET_PROPERTY(target_sources "${_target_name}" SOURCES)
SET(cppcheck_sources)
FOREACH(source ${target_sources})
GET_SOURCE_FILE_PROPERTY(path "${source}" LOCATION)
GET_SOURCE_FILE_PROPERTY(lang "${source}" LANGUAGE)
IF("${lang}" MATCHES "CXX")
LIST(APPEND cppcheck_sources "${path}")
ENDIF()
IF("${lang}" MATCHES "C")
LIST(APPEND cppcheck_sources "${path}")
ENDIF()
ENDFOREACH()
GET_TARGET_PROPERTY(target_definitions "${_target_name}" SOURCES)
GET_TARGET_PROPERTY(target_source_location "${_target_name}" SOURCES)
SET(test_target_name "${_target_name}_cppcheck_test")
GET_TARGET_PROPERTY(include_folders "${_target_name}" INCLUDE_DIRECTORIES)
SET(include_args)
FOREACH(folder ${include_folders})
LIST(APPEND include_args "-I${folder}")
ENDFOREACH()
ADD_TEST(NAME "${test_target_name}"
COMMAND "${CPPCHECK_EXECUTABLE}"
${CPPCHECK_TEMPLATE_ARG}
${cppcheck_args}
${include_args}
${cppcheck_sources})
SET_TESTS_PROPERTIES("${test_target_name}"
PROPERTIES
FAIL_REGULAR_EXPRESSION "${CPPCHECK_FAIL_REGULAR_EXPRESSION}")
ADD_CUSTOM_COMMAND(TARGET all_cppcheck
PRE_BUILD
COMMAND "${CPPCHECK_EXECUTABLE}"
${CPPCHECK_QUIET_ARG}
${CPPCHECK_TEMPLATE_ARG}
${cppcheck_args}
${include_args}
${cppcheck_sources}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "${test_target_name}: Running cppcheck on target ${_target_name}..."
VERBATIM)
ENDFUNCTION()