diff --git a/cmake/FDBComponents.cmake b/cmake/FDBComponents.cmake index 150a13f2f1..69e93cec06 100644 --- a/cmake/FDBComponents.cmake +++ b/cmake/FDBComponents.cmake @@ -1,5 +1,13 @@ set(FORCE_ALL_COMPONENTS OFF CACHE BOOL "Fails cmake if not all dependencies are found") +################################################################################ +# Valgrind +################################################################################ + +if(USE_VALGRIND) + find_package(Valgrind REQUIRED) +endif() + ################################################################################ # LibreSSL ################################################################################ diff --git a/cmake/FindValgrind.cmake b/cmake/FindValgrind.cmake new file mode 100644 index 0000000000..ac140d4402 --- /dev/null +++ b/cmake/FindValgrind.cmake @@ -0,0 +1,13 @@ +find_path(VALGRIND_INCLUDE_DIR + NAMES + valgrind.h + PATH_SUFFIXES include valgrind) + +find_package_handle_standard_args(Valgrind + REQUIRED_VARS VALGRIND_INCLUDE_DIR + FAIL_MESSAGE "Could not find Valgrind header files, try set the path to the Valgrind headers in the variable Valgrind_ROOT") + +if(VALGRIND_FOUND) + add_library(Valgrind INTERFACE) + target_include_directories(Valgrind INTERFACE "${VALGRIND_INCLUDE_DIR}") +endif() diff --git a/fdbrpc/CMakeLists.txt b/fdbrpc/CMakeLists.txt index ef9e9f5658..06845e8754 100644 --- a/fdbrpc/CMakeLists.txt +++ b/fdbrpc/CMakeLists.txt @@ -57,6 +57,9 @@ add_library(thirdparty ${FDBRPC_THIRD_PARTY_SRCS}) if(NOT WIN32) target_compile_options(thirdparty BEFORE PRIVATE -w) # disable warnings for third party endif() +if(USE_VALGRIND) + target_link_libraries(thirdparty PUBLIC Valgrind) +endif() set(FDBRPC_SRCS_DISABLE_ACTOR_WITHOUT_WAIT_WARNING ActorFuzz.actor.cpp diff --git a/flow/CMakeLists.txt b/flow/CMakeLists.txt index 4d24b168c5..40d10c4be2 100644 --- a/flow/CMakeLists.txt +++ b/flow/CMakeLists.txt @@ -89,6 +89,9 @@ elseif(WIN32) endif() target_link_libraries(flow PRIVATE ${FLOW_LIBS}) target_link_libraries(flow PUBLIC boost_target Threads::Threads ${CMAKE_DL_LIBS}) +if(USE_VALGRIND) + target_link_libraries(flow PUBLIC Valgrind) +endif() if(NOT WITH_TLS) target_compile_definitions(flow PUBLIC TLS_DISABLED) else()