Skip to content

Commit 948f131

Browse files
committed
First use pkgconfig to find libraries
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 2dd2b8b commit 948f131

File tree

7 files changed

+48
-16
lines changed

7 files changed

+48
-16
lines changed

CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,17 @@ install(
114114
EXPORT ${PROJECT_NAME}-targets)
115115

116116
if(UMF_BUILD_OS_MEMORY_PROVIDER AND (LINUX OR WINDOWS))
117-
# Do not use pkgconfig, because it sets wrong paths on Windows
118-
find_package(LIBHWLOC REQUIRED hwloc)
117+
pkg_check_modules(LIBHWLOC hwloc)
118+
if(NOT LIBHWLOC_FOUND)
119+
find_package(LIBHWLOC REQUIRED hwloc)
120+
endif()
119121
endif()
120122

121123
if(UMF_BUILD_LIBUMF_POOL_SCALABLE AND (LINUX OR WINDOWS))
122-
# Do not use pkgconfig, because it sets wrong paths on Windows
123-
find_package(LIBTBB REQUIRED tbb)
124+
pkg_check_modules(TBB tbb)
125+
if(NOT TBB_FOUND)
126+
find_package(TBB REQUIRED tbb)
127+
endif()
124128
endif()
125129

126130
add_subdirectory(src)

benchmark/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,15 @@ add_dependencies(ubench
3030
umf
3131
${LIBS_OPTIONAL})
3232

33+
if(UMF_BUILD_OS_MEMORY_PROVIDER)
34+
set(LIBS_OPTIONAL ${LIBS_OPTIONAL} ${LIBHWLOC_LIBRARIES})
35+
set(LIB_DIRS_OPTIONAL ${LIB_DIRS_OPTIONAL} ${LIBHWLOC_LIBRARY_DIRS})
36+
endif()
37+
3338
target_include_directories(ubench PRIVATE ${UMF_CMAKE_SOURCE_DIR}/include/ ${UMF_CMAKE_SOURCE_DIR}/src/utils/)
3439

40+
target_link_directories(ubench PRIVATE ${LIB_DIRS_OPTIONAL})
41+
3542
target_link_libraries(ubench
3643
umf
3744
${LIBS_OPTIONAL}
@@ -40,6 +47,7 @@ target_link_libraries(ubench
4047

4148
if (UMF_BUILD_BENCHMARKS_MT)
4249
add_executable(multithread_bench multithread.cpp)
50+
target_link_directories(multithread_bench PRIVATE ${LIB_DIRS_OPTIONAL})
4351
target_link_libraries(multithread_bench
4452
umf
4553
${LIBS_OPTIONAL}

cmake/FindLIBHWLOC.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ message(STATUS "Checking for module 'libhwloc' using find_library()")
77
find_library(LIBHWLOC_LIBRARY NAMES libhwloc hwloc)
88
set(LIBHWLOC_LIBRARIES ${LIBHWLOC_LIBRARY})
99

10+
get_filename_component(LIBHWLOC_LIB_DIR ${LIBHWLOC_LIBRARIES} DIRECTORY)
11+
set(LIBHWLOC_LIBRARY_DIRS ${LIBHWLOC_LIB_DIR})
12+
1013
find_file(LIBHWLOC_HEADER NAMES hwloc.h)
1114
get_filename_component(LIBHWLOC_INCLUDE_DIR ${LIBHWLOC_HEADER} DIRECTORY)
1215
set(LIBHWLOC_INCLUDE_DIRS ${LIBHWLOC_INCLUDE_DIR})
@@ -21,6 +24,7 @@ if(LIBHWLOC_LIBRARY)
2124
message(STATUS " Found libhwloc using find_library()")
2225
message(STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES}")
2326
message(STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS}")
27+
message(STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS}")
2428
if(WINDOWS)
2529
message(STATUS " LIBHWLOC_DLL_DIRS = ${LIBHWLOC_DLL_DIRS}")
2630
endif()

examples/CMakeLists.txt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@
22
# Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
33
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44

5-
if(UMF_BUILD_OS_MEMORY_PROVIDER
6-
AND UMF_BUILD_LIBUMF_POOL_SCALABLE
7-
AND UMF_ENABLE_POOL_TRACKING)
5+
if(UMF_BUILD_OS_MEMORY_PROVIDER AND UMF_BUILD_LIBUMF_POOL_SCALABLE AND UMF_ENABLE_POOL_TRACKING)
86
set(EXAMPLE_NAME umf_example_basic)
7+
98
add_umf_executable(NAME ${EXAMPLE_NAME}
109
SRCS basic/basic.c
1110
LIBS umf
11+
${LIBHWLOC_LIBRARIES}
1212
scalable_pool)
13+
1314
target_include_directories(${EXAMPLE_NAME} PRIVATE
1415
${UMF_CMAKE_SOURCE_DIR}/src/utils
1516
${UMF_CMAKE_SOURCE_DIR}/include)
1617

18+
target_link_directories(${EXAMPLE_NAME} PRIVATE ${LIBHWLOC_LIBRARY_DIRS})
19+
1720
add_test(NAME ${EXAMPLE_NAME}
1821
COMMAND ${EXAMPLE_NAME}
1922
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
@@ -23,11 +26,11 @@ if(UMF_BUILD_OS_MEMORY_PROVIDER
2326
if(WINDOWS)
2427
# append PATH to DLLs
2528
set(DLL_PATH_LIST "PATH=path_list_append:../bin/$<CONFIG>")
26-
if(LIBHWLOC_DLL_DIRS)
27-
set(DLL_PATH_LIST "${DLL_PATH_LIST};PATH=path_list_append:${LIBHWLOC_DLL_DIRS}")
29+
if(LIBHWLOC_LIBRARY_DIRS)
30+
set(DLL_PATH_LIST "${DLL_PATH_LIST};PATH=path_list_append:${LIBHWLOC_LIBRARY_DIRS}/../bin")
2831
endif()
29-
if(LIBTBB_DLL_DIRS)
30-
set(DLL_PATH_LIST "${DLL_PATH_LIST};PATH=path_list_append:${LIBTBB_DLL_DIRS}")
32+
if(TBB_LIBRARY_DIRS)
33+
set(DLL_PATH_LIST "${DLL_PATH_LIST};PATH=path_list_append:${TBB_LIBRARY_DIRS}/../bin")
3134
endif()
3235
set_property(TEST ${EXAMPLE_NAME} PROPERTY ENVIRONMENT_MODIFICATION "${DLL_PATH_LIST}")
3336
endif()

src/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ if(UMF_BUILD_OS_MEMORY_PROVIDER)
7272
set(UMF_LIBS ${UMF_LIBS} ${LIBHWLOC_LIBRARIES})
7373
# Currently, OS provider is only built for Linux and Windows
7474
set(UMF_PUBLIC_COMPILE_DEFINITIONS ${UMF_PUBLIC_COMPILE_DEFINITIONS} "UMF_BUILD_OS_MEMORY_PROVIDER=1")
75+
set(UMF_PRIVATE_LIBRARY_DIRS ${UMF_PRIVATE_LIBRARY_DIRS} ${LIBHWLOC_LIBRARY_DIRS})
7576
endif()
7677
endif()
7778

@@ -121,6 +122,8 @@ else()
121122
LIBS ${UMF_LIBS})
122123
endif()
123124

125+
target_link_directories(umf PRIVATE ${UMF_PRIVATE_LIBRARY_DIRS})
126+
124127
target_compile_definitions(umf PUBLIC ${UMF_PUBLIC_COMPILE_DEFINITIONS})
125128

126129
if (UMF_ENABLE_POOL_TRACKING)

src/pool/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ if(UMF_BUILD_LIBUMF_POOL_SCALABLE)
6565
TYPE STATIC
6666
SRCS pool_scalable.c ${POOL_EXTRA_SRCS}
6767
LIBS ${LIBS_POOL_SCALABLE})
68-
target_include_directories(scalable_pool PRIVATE ${LIBTBB_INCLUDE_DIRS})
68+
target_include_directories(scalable_pool PRIVATE ${TBB_INCLUDE_DIRS})
6969
target_compile_definitions(scalable_pool PUBLIC ${POOL_COMPILE_DEFINITIONS})
7070
add_library(${PROJECT_NAME}::scalable_pool ALIAS scalable_pool)
7171
install(TARGETS scalable_pool

test/CMakeLists.txt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,22 @@ function(add_umf_test)
3131
set(TEST_NAME umf-${ARG_NAME})
3232
set(TEST_TARGET_NAME umf_test-${ARG_NAME})
3333

34+
if(UMF_BUILD_OS_MEMORY_PROVIDER)
35+
set(LIBS_OPTIONAL ${LIBS_OPTIONAL} ${LIBHWLOC_LIBRARIES})
36+
set(LIB_DIRS_OPTIONAL ${LIB_DIRS_OPTIONAL} ${LIBHWLOC_LIBRARY_DIRS})
37+
endif()
38+
3439
set(TEST_LIBS test_common
3540
umf
3641
GTest::gtest_main
42+
${LIBS_OPTIONAL}
3743
${ARG_LIBS})
3844
add_umf_executable(NAME ${TEST_TARGET_NAME} SRCS ${ARG_SRCS} LIBS ${TEST_LIBS})
3945

46+
if(LIB_DIRS_OPTIONAL)
47+
target_link_directories(${TEST_TARGET_NAME} PRIVATE ${LIB_DIRS_OPTIONAL})
48+
endif()
49+
4050
target_include_directories(${TEST_TARGET_NAME} PRIVATE
4151
${UMF_CMAKE_SOURCE_DIR}/include
4252
${UMF_CMAKE_SOURCE_DIR}/src
@@ -52,11 +62,11 @@ function(add_umf_test)
5262

5363
if(WIN32)
5464
set(PATH_LIST "PATH=path_list_append:../bin/$<CONFIG>")
55-
if(LIBHWLOC_DLL_DIRS)
56-
set(PATH_LIST "${PATH_LIST};PATH=path_list_append:${LIBHWLOC_DLL_DIRS}")
65+
if(LIBHWLOC_LIBRARY_DIRS)
66+
set(PATH_LIST "${PATH_LIST};PATH=path_list_append:${LIBHWLOC_LIBRARY_DIRS}/../bin")
5767
endif()
58-
if(LIBTBB_DLL_DIRS)
59-
set(PATH_LIST "${PATH_LIST};PATH=path_list_append:${LIBTBB_DLL_DIRS}")
68+
if(TBB_LIBRARY_DIRS)
69+
set(PATH_LIST "${PATH_LIST};PATH=path_list_append:${TBB_LIBRARY_DIRS}/../bin")
6070
endif()
6171
set_property(TEST ${TEST_NAME} PROPERTY ENVIRONMENT_MODIFICATION "${PATH_LIST}")
6272
endif()

0 commit comments

Comments
 (0)