Compare commits

...

11 Commits

9 changed files with 102 additions and 5 deletions

View File

@@ -1,4 +1,12 @@
find_program(CLANG_CHECK_EXE NAMES clang-check-10 clang-check-9 clang-check)
find_program(
CLANG_CHECK_EXE
NAMES
clang-check-13
clang-check-12
clang-check-11
clang-check-10
clang-check-9
clang-check)
if(CLANG_CHECK_EXE)
option(CMLIB_CLANG_ANALYZE_FIX "Perform fixes for Clang-Check" OFF)
endif()

View File

@@ -1,4 +1,12 @@
find_program(CLANG_TIDY_EXE NAMES clang-tidy-10 clang-tidy-9 clang-tidy)
find_program(
CLANG_TIDY_EXE
NAMES
clang-tidy-13
clang-tidy-12
clang-tidy-11
clang-tidy-10
clang-tidy-9
clang-tidy)
if(CLANG_TIDY_EXE)
option(CMLIB_CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
endif()

View File

@@ -1,5 +1,12 @@
find_program(CLANG_APPLY_REPLACEMENTS_EXE NAMES clang-apply-replacements-10 clang-apply-replacements-9
clang-apply-replacements)
find_program(
CLANG_APPLY_REPLACEMENTS_EXE
NAMES
clang-apply-replacements-13
clang-apply-replacements-12
clang-apply-replacements-11
clang-apply-replacements-10
clang-apply-replacements-9
clang-apply-replacements)
find_program(CLAZY_EXE NAMES clazy-standalone)

View File

@@ -15,6 +15,20 @@ function(add_pvs_check target)
ARGS --analysis-mode 29 --exclude-path ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen
MODE GA:1,2,3;64:1;OP:1,2;CS:1,2)
add_dependencies(pvs-check pvs-check-${target})
configure_file("${CMLIB_MODULE_DIR}/hpp/pvs_studio.hpp.in" "${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
get_target_property(target_type ${target} TYPE)
if(${target_type} STREQUAL "INTERFACE_LIBRARY")
set(target_type INTERFACE)
else()
set(target_type PRIVATE)
endif()
if(MSVC)
target_compile_options(${target} BEFORE ${target_type} /FI
"${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
else() # GCC/Clang
target_compile_options(${target} BEFORE ${target_type} -include
"${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
endif()
else()
message(STATUS "CMLIB warning:")
message(STATUS " PVS-Studio analyzer is not found")

View File

@@ -49,5 +49,6 @@ include(CMLibToday)
include(CMLibAuxilarySymlinks)
include(CMLibConfigHPPGenerate)
include(CMLibNinjaGeneratorHelper)
include(CMLibExternalProject)
include(CMLibCPack)
include(CMLibUninstall)

View File

@@ -0,0 +1,46 @@
include(ExternalProject)
if(CMAKE_BUILD_TYPE)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
endif()
if(CMAKE_C_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
endif()
if(CMAKE_C_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CFLAGS=${CMAKE_C_FLAGS}")
endif()
if(CMAKE_CPP_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_CPP_COMPILER=${CMAKE_CPP_COMPILER})
endif()
if(CMAKE_CXX_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CXXFLAGS=${CMAKE_CXX_FLAGS}")
endif()
if(CMAKE_Fortran_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER})
endif()
if(CMAKE_Fortran_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "FFLAGS=${CMAKE_Fortran_FLAGS}")
endif()
if(CMAKE_INSTALL_PREFIX)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR})
endif()
if(CMAKE_PREFIX_PATH)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
endif()
if(Qt5_DIR)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5_DIR=${Qt5_DIR})
endif()
if(Qt5Core_DIR)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5Core_DIR=${Qt5Core_DIR})
endif()

View File

@@ -10,7 +10,7 @@ function(add_format_sources target)
find_program(UNCRUSTIFY_EXE NAMES uncrustify)
if(UNCRUSTIFY_EXE)
list(APPEND UNCRUSTIFY_OPTS -lCPP --replace --no-backup)
list(APPEND UNCRUSTIFY_OPTS --replace --no-backup)
if(EXISTS ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
list(APPEND UNCRUSTIFY_OPTS -c ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
endif()

8
hpp/pvs_studio.hpp.in Normal file
View File

@@ -0,0 +1,8 @@
#ifndef PVS_STUDIO_HPP_
#define PVS_STUDIO_HPP_
#pragma once
//-V813_MINSIZE=33
#endif // PVS_STUDIO_HPP_

View File

@@ -1136,6 +1136,11 @@ function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honor
string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}")
# then separate lines
string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}")
if ("${_language}" STREQUAL "CXX")
# Fix clang9's libc++ errno
message (STATUS "replacing <stdlib.h> with <cstdlib>")
string (REGEX REPLACE "include_next" "include" _scanOutput "${_scanOutput}")
endif()
list (LENGTH _scanOutput _len)
# remove duplicate lines to speed up parsing
list (REMOVE_DUPLICATES _scanOutput)