Skip to content

Commit 32759d5

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 32759d5

File tree

6 files changed

+37
-35
lines changed

6 files changed

+37
-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: 23 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,21 @@ 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 ../src/utils/utils_common.c)
105+
else()
106+
add_umf_test(NAME logger SRCS utils/utils_log.cpp)
107+
endif()
108+
101109
add_umf_test(
102110
NAME utils_common
103111
SRCS utils/utils.cpp
104-
LIBS umf_utils)
112+
LIBS ${UMF_UTILS_FOR_TEST})
105113

106114
if(UMF_BUILD_LIBUMF_POOL_DISJOINT)
107115
add_umf_test(
@@ -149,27 +157,27 @@ if(LINUX) # OS-specific functions are implemented only for Linux now
149157
add_umf_test(
150158
NAME provider_os_memory
151159
SRCS provider_os_memory.cpp
152-
LIBS umf_utils)
160+
LIBS ${UMF_UTILS_FOR_TEST})
153161
add_umf_test(
154162
NAME provider_os_memory_multiple_numa_nodes
155163
SRCS provider_os_memory_multiple_numa_nodes.cpp
156-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
164+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
157165
add_umf_test(
158166
NAME memspace_numa
159167
SRCS memspaces/memspace_numa.cpp
160168
LIBS ${LIBNUMA_LIBRARIES})
161169
add_umf_test(
162170
NAME provider_os_memory_config
163171
SRCS provider_os_memory_config.cpp
164-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
172+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
165173
add_umf_test(
166174
NAME memspace_host_all
167175
SRCS memspaces/memspace_host_all.cpp
168-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
176+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
169177
add_umf_test(
170178
NAME memspace_highest_capacity
171179
SRCS memspaces/memspace_highest_capacity.cpp
172-
LIBS umf_utils ${LIBNUMA_LIBRARIES})
180+
LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES})
173181
endif()
174182

175183
# TODO add support for Windows
@@ -182,12 +190,12 @@ if(UMF_BUILD_GPU_TESTS
182190
add_umf_test(
183191
NAME provider_level_zero
184192
SRCS providers/provider_level_zero.cpp
185-
LIBS umf_utils ze_loader)
193+
LIBS ${UMF_UTILS_FOR_TEST} ze_loader)
186194

187195
add_umf_test(
188196
NAME provider_level_zero_dlopen
189197
SRCS providers/provider_level_zero.cpp
190-
LIBS umf_utils)
198+
LIBS ${UMF_UTILS_FOR_TEST})
191199
target_compile_definitions(umf_test-provider_level_zero_dlopen
192200
PUBLIC USE_DLOPEN=1)
193201
endif()
@@ -200,17 +208,17 @@ endif()
200208
add_umf_test(
201209
NAME base_alloc
202210
SRCS ${BA_SOURCES_FOR_TEST} test_base_alloc.cpp
203-
LIBS umf_utils)
211+
LIBS ${UMF_UTILS_FOR_TEST})
204212
add_umf_test(
205213
NAME base_alloc_linear
206214
SRCS ${BA_SOURCES_FOR_TEST} test_base_alloc_linear.cpp
207-
LIBS umf_utils)
215+
LIBS ${UMF_UTILS_FOR_TEST})
208216

209217
add_umf_test(
210218
NAME base_alloc_global
211219
SRCS ${BA_SOURCES_FOR_TEST} pools/pool_base_alloc.cpp
212220
malloc_compliance_tests.cpp
213-
LIBS umf_utils)
221+
LIBS ${UMF_UTILS_FOR_TEST})
214222

215223
# tests for the proxy library
216224
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)