Skip to content

Commit 20cf54f

Browse files
committed
Make umf_utils an interface library
So that users of umf pools (which are static libraries) do not have to link with umf_utils themselves. It's not possible to link static libraries to other static libraries.
1 parent e17a0ad commit 20cf54f

File tree

6 files changed

+38
-35
lines changed

6 files changed

+38
-35
lines changed

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ endif()
2929

3030
add_subdirectory(utils)
3131

32-
set(UMF_LIBS umf_utils)
32+
set(UMF_LIBS $<BUILD_INTERFACE:umf_utils>)
3333

3434
set(BA_SOURCES
3535
${CMAKE_CURRENT_SOURCE_DIR}/base_alloc/base_alloc.c

src/pool/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
if(UMF_BUILD_SHARED_LIBRARY)
66
set(POOL_EXTRA_SRCS ${BA_SOURCES})
77
set(POOL_COMPILE_DEFINITIONS UMF_SHARED_LIBRARY)
8+
set(POOL_EXTRA_LIBS $<BUILD_INTERFACE:umf_utils>)
89
endif()
910

1011
# libumf_pool_disjoint
@@ -13,7 +14,7 @@ if(UMF_BUILD_LIBUMF_POOL_DISJOINT)
1314
NAME disjoint_pool
1415
TYPE STATIC
1516
SRCS pool_disjoint.cpp ${POOL_EXTRA_SRCS}
16-
LIBS umf_utils)
17+
LIBS ${POOL_EXTRA_LIBS})
1718
target_compile_definitions(disjoint_pool PUBLIC ${POOL_COMPILE_DEFINITIONS})
1819

1920
add_library(${PROJECT_NAME}::disjoint_pool ALIAS disjoint_pool)
@@ -36,7 +37,7 @@ if(UMF_BUILD_LIBUMF_POOL_JEMALLOC)
3637
NAME jemalloc_pool
3738
TYPE STATIC
3839
SRCS pool_jemalloc.c ${POOL_EXTRA_SRCS}
39-
LIBS jemalloc umf_utils)
40+
LIBS jemalloc ${POOL_EXTRA_LIBS})
4041
target_include_directories(jemalloc_pool PRIVATE ${JEMALLOC_INCLUDE_DIRS})
4142
target_compile_definitions(jemalloc_pool PUBLIC ${POOL_COMPILE_DEFINITIONS})
4243
add_library(${PROJECT_NAME}::jemalloc_pool ALIAS jemalloc_pool)
@@ -46,9 +47,9 @@ endif()
4647
# libumf_pool_scalable
4748
if(UMF_BUILD_LIBUMF_POOL_SCALABLE)
4849
if(LINUX)
49-
set(LIBS_POOL_SCALABLE dl umf_utils)
50+
set(LIBS_POOL_SCALABLE dl ${POOL_EXTRA_LIBS})
5051
else()
51-
set(LIBS_POOL_SCALABLE umf_utils)
52+
set(LIBS_POOL_SCALABLE ${POOL_EXTRA_LIBS})
5253
endif()
5354

5455
add_umf_library(

src/utils/CMakeLists.txt

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,18 @@ elseif(WINDOWS)
3737
${UMF_UTILS_SOURCES_WINDOWS})
3838
endif()
3939

40-
add_umf_library(
41-
NAME umf_utils
42-
TYPE STATIC
43-
SRCS ${UMF_UTILS_SOURCES}
44-
LIBS ${CMAKE_THREAD_LIBS_INIT})
45-
40+
add_library(umf_utils INTERFACE)
4641
add_library(${PROJECT_NAME}::utils ALIAS umf_utils)
4742

43+
target_sources(umf_utils INTERFACE ${UMF_UTILS_SOURCES})
44+
target_link_libraries(umf_utils INTERFACE ${CMAKE_THREAD_LIBS_INIT})
45+
4846
target_include_directories(
4947
umf_utils
50-
PUBLIC ${VALGRIND_INCLUDE_DIRS}
51-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
52-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
53-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
48+
INTERFACE ${VALGRIND_INCLUDE_DIRS}
49+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
50+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
5451

5552
if(USE_VALGRIND)
56-
target_compile_definitions(umf_utils PUBLIC UMF_VG_ENABLED=1)
53+
target_compile_definitions(umf_utils INTERFACE UMF_VG_ENABLED=1)
5754
endif()
58-
59-
install(TARGETS umf_utils EXPORT ${PROJECT_NAME}-targets)

test/CMakeLists.txt

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ function(add_umf_test)
6666
PRIVATE ${UMF_CMAKE_SOURCE_DIR}/include
6767
${UMF_CMAKE_SOURCE_DIR}/src
6868
${UMF_CMAKE_SOURCE_DIR}/src/base_alloc
69+
${UMF_CMAKE_SOURCE_DIR}/src/utils
6970
${UMF_TEST_DIR}/common
7071
${UMF_TEST_DIR})
7172

@@ -94,14 +95,22 @@ add_umf_test(NAME base SRCS base.cpp)
9495
add_umf_test(NAME memoryPool SRCS memoryPoolAPI.cpp malloc_compliance_tests.cpp)
9596
add_umf_test(NAME memoryProvider SRCS memoryProviderAPI.cpp)
9697

97-
add_umf_test(
98-
NAME logger
99-
SRCS utils/utils_log.cpp
100-
LIBS umf_utils)
98+
if(UMF_BUILD_SHARED_LIBRARY)
99+
# if build as shared library, utils symbols won't be visible in tests
100+
set(UMF_UTILS_FOR_TEST umf_utils)
101+
endif()
102+
103+
if(UMF_BUILD_SHARED_LIBRARY)
104+
add_umf_test(NAME logger SRCS utils/utils_log.cpp
105+
../src/utils/utils_common.c)
106+
else()
107+
add_umf_test(NAME logger SRCS utils/utils_log.cpp)
108+
endif()
109+
101110
add_umf_test(
102111
NAME utils_common
103112
SRCS utils/utils.cpp
104-
LIBS umf_utils)
113+
LIBS ${UMF_UTILS_FOR_TEST})
105114

106115
if(UMF_BUILD_LIBUMF_POOL_DISJOINT)
107116
add_umf_test(
@@ -149,27 +158,27 @@ if(LINUX) # OS-specific functions are implemented only for Linux now
149158
add_umf_test(
150159
NAME provider_os_memory
151160
SRCS provider_os_memory.cpp
152-
LIBS umf_utils)
161+
LIBS ${UMF_UTILS_FOR_TEST})
153162
add_umf_test(
154163
NAME provider_os_memory_multiple_numa_nodes
155164
SRCS provider_os_memory_multiple_numa_nodes.cpp
156-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
165+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
157166
add_umf_test(
158167
NAME memspace_numa
159168
SRCS memspaces/memspace_numa.cpp
160169
LIBS ${LIBNUMA_LIBRARIES})
161170
add_umf_test(
162171
NAME provider_os_memory_config
163172
SRCS provider_os_memory_config.cpp
164-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
173+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
165174
add_umf_test(
166175
NAME memspace_host_all
167176
SRCS memspaces/memspace_host_all.cpp
168-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
177+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
169178
add_umf_test(
170179
NAME memspace_highest_capacity
171180
SRCS memspaces/memspace_highest_capacity.cpp
172-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
181+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
173182
endif()
174183

175184
# TODO add support for Windows
@@ -182,12 +191,12 @@ if(UMF_BUILD_GPU_TESTS
182191
add_umf_test(
183192
NAME provider_level_zero
184193
SRCS providers/provider_level_zero.cpp
185-
LIBS umf_utils ze_loader)
194+
LIBS ${UMF_UTILS_FOR_TEST} ze_loader)
186195

187196
add_umf_test(
188197
NAME provider_level_zero_dlopen
189198
SRCS providers/provider_level_zero.cpp
190-
LIBS umf_utils)
199+
LIBS ${UMF_UTILS_FOR_TEST})
191200
target_compile_definitions(umf_test-provider_level_zero_dlopen
192201
PUBLIC USE_DLOPEN=1)
193202
endif()
@@ -200,17 +209,17 @@ endif()
200209
add_umf_test(
201210
NAME base_alloc
202211
SRCS ${BA_SOURCES_FOR_TEST} test_base_alloc.cpp
203-
LIBS umf_utils)
212+
LIBS ${UMF_UTILS_FOR_TEST})
204213
add_umf_test(
205214
NAME base_alloc_linear
206215
SRCS ${BA_SOURCES_FOR_TEST} test_base_alloc_linear.cpp
207-
LIBS umf_utils)
216+
LIBS ${UMF_UTILS_FOR_TEST})
208217

209218
add_umf_test(
210219
NAME base_alloc_global
211220
SRCS ${BA_SOURCES_FOR_TEST} pools/pool_base_alloc.cpp
212221
malloc_compliance_tests.cpp
213-
LIBS umf_utils)
222+
LIBS ${UMF_UTILS_FOR_TEST})
214223

215224
# tests for the proxy library
216225
if(UMF_PROXY_LIB_ENABLED AND UMF_BUILD_SHARED_LIBRARY)

test/memspaces/memspace_highest_capacity.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include "memspace_helpers.hpp"
77
#include "memspace_internal.h"
88
#include "test_helpers.h"
9-
#include "utils_sanitizers.h"
109

1110
#include <numa.h>
1211
#include <numaif.h>

test/test_installation.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ def _create_match_list(self) -> List[str]:
103103
lib.append(f"lib/{lib_prefix}umf.{lib_ext}")
104104
if is_umf_proxy:
105105
lib.append(f"lib/{lib_prefix}umf_proxy.{lib_ext_shared}")
106-
lib.append(f"lib/{lib_prefix}umf_utils.{lib_ext_static}")
107106

108107
share = []
109108
share = [

0 commit comments

Comments
 (0)