| |
| set(CMAKE_SOURCE_DIR ..) |
| set(LINT_COMMAND ${CMAKE_SOURCE_DIR}/scripts/cpp_lint.py) |
| set(SRC_FILE_EXTENSIONS h hpp hu c cpp cu cc) |
| set(EXCLUDE_FILE_EXTENSTIONS pb.h pb.cc) |
| set(LINT_DIRS include src/caffe examples tools python matlab) |
| |
| cmake_policy(SET CMP0009 NEW) # suppress cmake warning |
| |
| # find all files of interest |
| foreach(ext ${SRC_FILE_EXTENSIONS}) |
| foreach(dir ${LINT_DIRS}) |
| file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/${dir}/*.${ext}) |
| set(LINT_SOURCES ${LINT_SOURCES} ${FOUND_FILES}) |
| endforeach() |
| endforeach() |
| |
| # find all files that should be excluded |
| foreach(ext ${EXCLUDE_FILE_EXTENSTIONS}) |
| file(GLOB_RECURSE FOUND_FILES ${CMAKE_SOURCE_DIR}/*.${ext}) |
| set(EXCLUDED_FILES ${EXCLUDED_FILES} ${FOUND_FILES}) |
| endforeach() |
| |
| # exclude generated pb files |
| list(REMOVE_ITEM LINT_SOURCES ${EXCLUDED_FILES}) |
| |
| execute_process( |
| COMMAND ${LINT_COMMAND} ${LINT_SOURCES} |
| ERROR_VARIABLE LINT_OUTPUT |
| ERROR_STRIP_TRAILING_WHITESPACE |
| ) |
| |
| string(REPLACE "\n" ";" LINT_OUTPUT ${LINT_OUTPUT}) |
| |
| list(GET LINT_OUTPUT -1 LINT_RESULT) |
| list(REMOVE_AT LINT_OUTPUT -1) |
| string(REPLACE " " ";" LINT_RESULT ${LINT_RESULT}) |
| list(GET LINT_RESULT -1 NUM_ERRORS) |
| if(NUM_ERRORS GREATER 0) |
| foreach(msg ${LINT_OUTPUT}) |
| string(FIND ${msg} "Done" result) |
| if(result LESS 0) |
| message(STATUS ${msg}) |
| endif() |
| endforeach() |
| message(FATAL_ERROR "Lint found ${NUM_ERRORS} errors!") |
| else() |
| message(STATUS "Lint did not find any errors!") |
| endif() |
| |