src.dualinventive.com/dinet/sec-multi-proxy/libdi/common/cmake/Lint.txt

118 lines
3.5 KiB
Plaintext

find_package(PythonInterp REQUIRED)
find_package(Perl REQUIRED)
set(CPP_STYLE_FILTER)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-build/namespaces,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-build/include,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-build/include_order,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-whitespace/tab,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-legal/copyright,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-runtime/string,)
set(CPP_STYLE_FILTER ${CPP_STYLE_FILTER}-build/c++11,)
function(add_lint_target DUMMY)
message(WARNING "The add_lint_target function is obsolete, use enable_linting()")
enable_linting()
endfunction()
function(enable_linting)
file(GLOB_RECURSE SOURCES_LIST
${PROJECT_SOURCE_DIR}/src/*.c
${PROJECT_SOURCE_DIR}/src/*.cpp
${PROJECT_SOURCE_DIR}/include/*.h)
list(REMOVE_DUPLICATES SOURCES_LIST)
list(SORT SOURCES_LIST)
foreach(sourcefile ${SOURCES_LIST})
set (lintstampdir "${CMAKE_CURRENT_BINARY_DIR}/lint-stamp")
set (lintname "${sourcefile}")
string(REPLACE "${PROJECT_SOURCE_DIR}/" "" lintname ${lintname})
string(REPLACE "/" "_" lintname ${lintname})
string(TOLOWER ${lintname} lintname)
set (lintname "${lintstampdir}/${lintname}")
file(MAKE_DIRECTORY "${lintstampdir}")
if (${lintname} MATCHES "_di_types_h")
continue()
endif()
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" filenamedisplay ${sourcefile})
get_filename_component(sourcefilename ${sourcefile} NAME)
if ("${sourcefilename}" MATCHES "^.*.cpp$" OR
"${sourcefilename}" MATCHES "^[A-Z].*.h$")
add_custom_command(OUTPUT ${lintname}
COMMAND "${CMAKE_COMMAND}" -E chdir
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PYTHON_EXECUTABLE}"
"${CMAKE_SOURCE_DIR}/common/styleguide/cpplint/cpplint.py"
"--filter=${CPP_STYLE_FILTER}"
"--counting=detailed"
"--extensions=cpp,hpp,h"
"--linelength=120"
${sourcefile}
"&&"
"${CMAKE_COMMAND}" -E chdir
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PERL_EXECUTABLE}"
"${CMAKE_SOURCE_DIR}/common/cmake/scripts/checkpatch.pl"
"--no-tree"
"--terse"
"--strict"
"--showfile"
"--summary-file"
"--max-line-length=120"
"--types=CODE_INDENT,SPACE_BEFORE_TAB,LOGICAL_CONTINUATIONS,MISSING_EOF_NEWLINE,LONG_LINE,INVALID_UTF8,TYPO_SPELLING"
"-f"
${sourcefile}
"&&"
"touch"
"${lintname}"
DEPENDS ${sourcefile}
COMMENT "CppLint ${filenamedisplay}"
VERBATIM)
elseif (${sourcefilename} MATCHES "^.*.c$" OR
${sourcefilename} MATCHES "^.*.h$")
add_custom_command(OUTPUT ${lintname}
COMMAND "${CMAKE_COMMAND}" -E chdir
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PERL_EXECUTABLE}"
"${CMAKE_SOURCE_DIR}/common/cmake/scripts/checkpatch.pl"
"--no-tree"
"--terse"
"--strict"
"--showfile"
"--summary-file"
"--max-line-length=120"
"--ignore=COMPARISON_TO_NULL"
"--ignore=GLOBAL_INITIALISERS"
"--ignore=INITIALISED_STATIC"
"--ignore=PREFER_KERNEL_TYPES"
"--ignore=COMPLEX_MACRO"
"--ignore=CAMELCASE"
"--ignore=NEW_TYPEDEFS"
"--ignore=MULTISTATEMENT_MACRO_USE_DO_WHILE"
"--ignore=TRAILING_SEMICOLON"
"--ignore=AVOID_EXTERNS"
"--ignore=BIT_MACRO"
"--ignore=PREFER_IS_ENABLED"
"-f"
${sourcefile}
"&&"
"touch"
"${lintname}"
DEPENDS ${sourcefile}
COMMENT "Checkpatch ${filenamedisplay}"
VERBATIM)
endif()
list (APPEND LINT_SOURCES_LIST ${lintname})
endforeach(sourcefile)
add_custom_target(lint
DEPENDS ${LINT_SOURCES_LIST}
COMMENT "Linting project ${PROJECT_NAME}"
VERBATIM)
endfunction()