Skip to content

Commit df6828d

Browse files
committed
move Valgrind support to common CMake
1 parent 6ac4314 commit df6828d

File tree

3 files changed

+25
-37
lines changed

3 files changed

+25
-37
lines changed

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,23 @@ if(CMAKE_GENERATOR MATCHES "Visual Studio" OR CMAKE_GENERATOR MATCHES
632632
set(CMAKE_UMF_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/$<CONFIG>)
633633
endif()
634634

635+
# Valgrind
636+
if(UMF_USE_VALGRIND)
637+
if(UMF_USE_ASAN
638+
OR UMF_USE_TSAN
639+
OR UMF_USE_UBSAN
640+
OR UMF_USE_MSAN)
641+
message(FATAL_ERROR "Cannot use valgrind and sanitizers together")
642+
endif()
643+
644+
if(PkgConfig_FOUND)
645+
pkg_check_modules(VALGRIND valgrind)
646+
endif()
647+
if(NOT VALGRIND_FOUND)
648+
find_package(VALGRIND REQUIRED valgrind)
649+
endif()
650+
endif()
651+
635652
# Sanitizer flags
636653
if(UMF_USE_ASAN)
637654
add_sanitizer_flag(address)

cmake/helpers.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ endfunction()
225225

226226
function(add_umf_target_compile_options name)
227227
check_add_target_compile_options(${name} "-Wno-covered-switch-default")
228-
228+
target_compile_definitions(${name}
229+
PRIVATE ${UMF_COMMON_COMPILE_DEFINITIONS})
229230
if(NOT MSVC)
230231
target_compile_options(
231232
${name}
@@ -260,6 +261,10 @@ function(add_umf_target_compile_options name)
260261
-g -O0)
261262
endif()
262263
endif()
264+
if(UMF_USE_VALGRIND)
265+
target_compile_definitions(${name} PRIVATE "UMF_VG_ENABLED=1")
266+
target_include_directories(${name} PRIVATE ${VALGRIND_INCLUDE_DIRS})
267+
endif()
263268
elseif(MSVC)
264269
target_compile_options(
265270
${name}
@@ -386,6 +391,7 @@ function(add_umf_library)
386391
target_include_directories(
387392
${ARG_NAME}
388393
PRIVATE ${UMF_CMAKE_SOURCE_DIR}/include
394+
${UMF_CMAKE_SOURCE_DIR}/src
389395
${UMF_CMAKE_SOURCE_DIR}/src/utils
390396
${UMF_CMAKE_SOURCE_DIR}/src/base_alloc
391397
${UMF_CMAKE_SOURCE_DIR}/src/coarse)

src/utils/CMakeLists.txt

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,6 @@ set(UMF_UTILS_SOURCES_MACOSX utils_macosx_common.c)
1616
set(UMF_UTILS_SOURCES_WINDOWS utils_windows_common.c
1717
utils_windows_concurrency.c)
1818

19-
if(UMF_USE_VALGRIND)
20-
if(UMF_USE_ASAN
21-
OR UMF_USE_TSAN
22-
OR UMF_USE_UBSAN
23-
OR UMF_USE_MSAN)
24-
message(FATAL_ERROR "Cannot use valgrind and sanitizers together")
25-
endif()
26-
27-
if(PkgConfig_FOUND)
28-
pkg_check_modules(VALGRIND valgrind)
29-
endif()
30-
if(NOT VALGRIND_FOUND)
31-
find_package(VALGRIND REQUIRED valgrind)
32-
endif()
33-
endif()
34-
3519
if(LINUX OR MACOSX)
3620
set(UMF_UTILS_SOURCES ${UMF_UTILS_SOURCES_COMMON}
3721
${UMF_UTILS_SOURCES_POSIX})
@@ -48,24 +32,5 @@ elseif(WINDOWS)
4832
${UMF_UTILS_SOURCES_WINDOWS})
4933
endif()
5034

51-
add_library(umf_utils INTERFACE)
52-
add_library(${PROJECT_NAME}::utils ALIAS umf_utils)
53-
54-
target_sources(umf_utils INTERFACE ${UMF_UTILS_SOURCES})
55-
target_link_libraries(umf_utils INTERFACE ${CMAKE_THREAD_LIBS_INIT}
56-
${UMF_UTILS_LIBS})
57-
58-
target_include_directories(
59-
umf_utils
60-
INTERFACE ${VALGRIND_INCLUDE_DIRS}
61-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
62-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
63-
64-
if(UMF_USE_VALGRIND)
65-
set(UMF_UTILS_INTERFACE_DEFS "UMF_VG_ENABLED=1")
35+
install(TARGETS umf_utils EXPORT ${PROJECT_NAME}-targets)
6636
endif()
67-
68-
set(UMF_UTILS_INTERFACE_DEFS ${UMF_UTILS_INTERFACE_DEFS}
69-
${UMF_COMMON_COMPILE_DEFINITIONS})
70-
71-
target_compile_definitions(umf_utils INTERFACE ${UMF_UTILS_INTERFACE_DEFS})

0 commit comments

Comments
 (0)