diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bcb86bd1f..3e5274b6e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,6 +208,20 @@ include(cmake/CheckCompilerArch.cmake) string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER) +if (ENABLE_IWYU) + find_program(ZEEK_IWYU_PATH NAMES include-what-you-use iwyu) + if (NOT ZEEK_IWYU_PATH) + message(FATAL_ERROR "Could not find the program include-what-you-use") + endif () +endif () + +if (ENABLE_CLANG_TIDY) + find_program(ZEEK_CLANG_TIDY_PATH NAMES clang-tidy) + if (NOT ZEEK_CLANG_TIDY_PATH) + message(FATAL_ERROR "Could not find the program clang-tidy") + endif () +endif () + # ############################################################################## # Main targets and utilities. @@ -307,6 +321,16 @@ function (zeek_target_link_libraries lib_target) endforeach () endfunction () +function (zeek_target_add_linters lib_target) + if (ZEEK_IWYU_PATH) + set_target_properties(${lib_target} PROPERTIES CXX_INCLUDE_WHAT_YOU_USE ${ZEEK_IWYU_PATH}) + endif () + + if (ZEEK_CLANG_TIDY_PATH) + set_target_properties(${lib_target} PROPERTIES CXX_CLANG_TIDY ${ZEEK_CLANG_TIDY_PATH}) + endif () +endfunction () + function (zeek_include_directories) foreach (name zeek_exe zeek_lib zeek_fuzzer_shared) if (TARGET ${name}) @@ -414,6 +438,9 @@ function (zeek_add_subdir_library name) # Feed into the main Zeek target(s). zeek_target_link_libraries(${target_name}) + + # Add IWYU and clang-tidy to the target if enabled. + zeek_target_add_linters(${target_name}) endfunction () # ############################################################################## diff --git a/cmake b/cmake index b4998425fb..04a714605d 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit b4998425fb00402967792311ec7c2cf391eb0ca5 +Subproject commit 04a714605d2af055dd35152aeffc1874447ca616 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 67347bafca..7810ce6191 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -562,23 +562,8 @@ target_compile_definitions(zeek_objs PRIVATE ZEEK_CONFIG_SKIP_VERSION_H) add_dependencies(zeek_objs zeek_autogen_files) zeek_target_link_libraries(zeek_objs) -if (ENABLE_IWYU) - find_program(IWYU_PATH NAMES include-what-you-use iwyu) - if (NOT IWYU_PATH) - message(FATAL_ERROR "Could not find the program include-what-you-use") - endif () - - set_target_properties(zeek_objs PROPERTIES CXX_INCLUDE_WHAT_YOU_USE ${IWYU_PATH}) -endif () - -if (ENABLE_CLANG_TIDY) - find_program(CLANG_TIDY_PATH NAMES clang-tidy) - if (NOT CLANG_TIDY_PATH) - message(FATAL_ERROR "Could not find the program clang-tidy") - endif () - - set_target_properties(zeek_objs PROPERTIES CXX_CLANG_TIDY ${CLANG_TIDY_PATH}) -endif () +# Add IWYU and clang-tidy to the target if enabled. +zeek_target_add_linters(zeek_objs) if (HAVE_SPICY) target_link_libraries(zeek_objs PRIVATE hilti spicy)