diff --git a/CMake/Macros.cmake b/CMake/Macros.cmake index 8d3458c06e..bf0ca1297f 100644 --- a/CMake/Macros.cmake +++ b/CMake/Macros.cmake @@ -139,6 +139,18 @@ macro(curl_add_clang_tidy_test_target _target_clang_tidy _target) set(_incsys "") set(_options "") + # Make a list of known system include directories + set(_sys_incdirs "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") + foreach(_inc IN LISTS CMAKE_SYSTEM_PREFIX_PATH) + if(NOT _inc MATCHES "/$") + string(APPEND _inc "/") + endif() + string(APPEND _inc "include") + if(NOT _inc IN_LIST _sys_incdirs AND IS_DIRECTORY "${_inc}") + list(APPEND _sys_incdirs "${_inc}") + endif() + endforeach() + # Collect macro definitions and header directories applying to the directory get_directory_property(_val COMPILE_DEFINITIONS) if(_val) @@ -169,7 +181,12 @@ macro(curl_add_clang_tidy_test_target _target_clang_tidy _target) set(_incsys_tmp ${_incsys}) list(REMOVE_DUPLICATES _incsys_tmp) set(_incsys "") + set(_incsystop "") foreach(_inc IN LISTS _incsys_tmp) + if(_inc IN_LIST _sys_incdirs) + list(APPEND _incsystop "${_inc}") # Save system prefixes to re-add them later to the end of list + continue() + endif() # Avoid empty and '$' items. The latter # evaluates to an empty path in this context. Also skip # '$', as already present in '_includes'. @@ -179,6 +196,9 @@ macro(curl_add_clang_tidy_test_target _target_clang_tidy _target) list(APPEND _incsys "-isystem" "${_inc}") endif() endforeach() + foreach(_inc IN LISTS _incsystop) + list(APPEND _incsys "-isystem" "${_inc}") + endforeach() if(CMAKE_C_COMPILER_ID MATCHES "Clang") list(REMOVE_DUPLICATES _options) # Keep the first of duplicates to imitate CMake @@ -214,6 +234,7 @@ macro(curl_add_clang_tidy_test_target _target_clang_tidy _target) DEPENDS ${_sources}) add_dependencies(tests-clang-tidy ${_target_clang_tidy}) + unset(_sys_incdirs) unset(_cc) unset(_definitions) unset(_includes) diff --git a/scripts/cmakelint.sh b/scripts/cmakelint.sh index adf128556d..0927603375 100755 --- a/scripts/cmakelint.sh +++ b/scripts/cmakelint.sh @@ -72,8 +72,8 @@ cd "$(dirname "$0")"/.. --min-statement-spacing 1 \ --max-statement-spacing 2 \ --max-returns 6 \ - --max-branches 12 \ + --max-branches 15 \ --max-arguments 5 \ --max-localvars 15 \ - --max-statements 65 \ + --max-statements 85 \ --