diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 3381c09bea..1317482fd4 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -10,6 +10,9 @@ on: permissions: contents: read +env: + BUILD_DIR : "${{github.workspace}}/build" + jobs: fuzz-test: name: Fuzz test @@ -88,18 +91,16 @@ jobs: - name: Run tests under valgrind run: ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}} - Windows-Ninja-cl: - name: Windows-Ninja-cl - env: - VCPKG_PATH: "${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" - BUILD_DIR : "${{github.workspace}}/build" + Windows-generators: + name: Windows ${{matrix.generator}} generator strategy: matrix: os: ['windows-2019', 'windows-2022'] - build_type: [Debug, Release] + build_type: [Release] compiler: [{c: cl, cxx: cl}] shared_library: ['ON', 'OFF'] static_hwloc: ['ON', 'OFF'] + generator: ['Ninja', 'NMake Makefiles'] runs-on: ${{matrix.os}} @@ -109,8 +110,18 @@ jobs: with: fetch-depth: 0 + - name: Set VCPKG_PATH with hwloc + if: matrix.static_hwloc == 'OFF' + run: echo "VCPKG_PATH='${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows'" >> $env:GITHUB_ENV + + - name: Set VCPKG_PATH without hwloc + if: matrix.static_hwloc == 'ON' + run: echo "VCPKG_PATH='${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows'" >> $env:GITHUB_ENV + - name: Initialize vcpkg uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5 + env: + VCPKG_PATH: ${{env.VCPKG_PATH}} with: vcpkgGitCommitId: 3dd44b931481d7a8e9ba412621fa810232b66289 vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg @@ -120,6 +131,7 @@ jobs: run: vcpkg install - name: Install Ninja + if: matrix.generator == 'Ninja' uses: seanmiddleditch/gha-setup-ninja@96bed6edff20d1dd61ecff9b75cc519d516e6401 # v5 - name: Configure MSVC environment @@ -132,7 +144,7 @@ jobs: -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" -DCMAKE_C_COMPILER=${{matrix.compiler.c}} -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} - -G Ninja + -G "${{matrix.generator}}" -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} -DUMF_LINK_HWLOC_STATICALLY=${{matrix.static_hwloc}} -DUMF_FORMAT_CODE_STYLE=OFF @@ -151,71 +163,10 @@ jobs: working-directory: ${{env.BUILD_DIR}} run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test - Windows-NMake: - name: Windows-NMake - env: - VCPKG_PATH: "${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" - BUILD_DIR : "${{github.workspace}}/build" - strategy: - matrix: - os: ['windows-2019', 'windows-2022'] - build_type: [Debug, Release] - compiler: [{c: cl, cxx: cl}] - shared_library: ['ON', 'OFF'] - - runs-on: ${{matrix.os}} - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 - - - name: Initialize vcpkg - uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5 - with: - vcpkgGitCommitId: 3dd44b931481d7a8e9ba412621fa810232b66289 - vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg - vcpkgJsonGlob: '**/vcpkg.json' - - - name: Install dependencies - run: vcpkg install - - - name: Configure MSVC environment - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 - - - name: Configure build - run: > - cmake - -B ${{env.BUILD_DIR}} - -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" - -DCMAKE_C_COMPILER=${{matrix.compiler.c}} - -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} - -G "NMake Makefiles" - -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} - -DUMF_LINK_HWLOC_STATICALLY=ON - -DUMF_FORMAT_CODE_STYLE=OFF - -DUMF_DEVELOPER_MODE=ON - -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON - -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON - -DUMF_BUILD_CUDA_PROVIDER=ON - -DUMF_TESTS_FAIL_ON_SKIP=ON - - - name: Build UMF - shell: cmd - run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS% - - - name: Run tests - shell: cmd - working-directory: ${{env.BUILD_DIR}} - run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test - - icx: name: ICX env: VCPKG_PATH: "${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" - BUILD_DIR : "${{github.workspace}}/build" strategy: matrix: os: ['windows-2019', 'windows-2022'] @@ -297,6 +248,54 @@ jobs: call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test + hwloc-fallback: + # Scenarios where UMF_LINK_HWLOC_STATICALLY is set to OFF and hwloc is not installed in the system + # The hwloc library is fetched implicitly + name: "Fallback to static hwloc build" + strategy: + matrix: + include: + - os: 'ubuntu-latest' + build_type: Release + number_of_processors: '$(nproc)' + - os: 'windows-latest' + build_type: Release + number_of_processors: '$Env:NUMBER_OF_PROCESSORS' + + runs-on: ${{matrix.os}} + + steps: + - name: Install dependencies + if: matrix.os == 'ubuntu-latest' + run: sudo apt-get install -y libnuma-dev + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + + - name: Configure build + run: > + cmake + -B ${{env.BUILD_DIR}} + -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + -DUMF_BUILD_SHARED_LIBRARY=ON + -DUMF_BUILD_EXAMPLES=OFF + -DUMF_DEVELOPER_MODE=ON + -DUMF_LINK_HWLOC_STATICALLY=OFF + -DUMF_TESTS_FAIL_ON_SKIP=ON + + - name: Build UMF + run: > + cmake + --build ${{env.BUILD_DIR}} + --config ${{matrix.build_type}} + -j ${{matrix.number_of_processors}} + + - name: Run tests + working-directory: ${{env.BUILD_DIR}} + run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test + L0: uses: ./.github/workflows/reusable_gpu.yml with: diff --git a/CMakeLists.txt b/CMakeLists.txt index ec10a0c4b5..ef2658fd91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ endif() include(CTest) include(CMakePackageConfigHelpers) include(GNUInstallDirs) +include(FetchContent) find_package(PkgConfig) # --------------------------------------------------------------------------- # @@ -115,6 +116,7 @@ list(APPEND UMF_OPTIONS_LIST UMF_PROXY_LIB_BASED_ON_POOL) # Setup required variables, definitions; fetch dependencies; include # sub_directories based on build options; set flags; etc. # --------------------------------------------------------------------------- # +message(STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}") if(UMF_BUILD_TESTS AND DEFINED ENV{CI} @@ -162,7 +164,6 @@ else() set(UMF_JEMALLOC_TAG 5.3.0) endif() - include(FetchContent) message( STATUS "Will fetch jemalloc from ${UMF_JEMALLOC_REPO} (tag: ${UMF_JEMALLOC_TAG})" @@ -257,126 +258,94 @@ else() if(NOT UMF_LINK_HWLOC_STATICALLY) pkg_check_modules(LIBHWLOC hwloc>=2.3.0) if(NOT LIBHWLOC_FOUND) - find_package(LIBHWLOC 2.3.0 REQUIRED hwloc) + find_package(LIBHWLOC 2.3.0 COMPONENTS hwloc) + if(LIBHWLOC_LIBRARIES) + set(LIBHWLOC_AVAILABLE TRUE) + endif() endif() - # add PATH to DLL on Windows - set(DLL_PATH_LIST - "${DLL_PATH_LIST};PATH=path_list_append:${LIBHWLOC_DLL_DIRS}") - elseif(WINDOWS) - include(FetchContent) - set(HWLOC_ENABLE_TESTING OFF) - set(HWLOC_SKIP_LSTOPO ON) - set(HWLOC_SKIP_TOOLS ON) + if(LIBHWLOC_AVAILABLE OR LIBHWLOC_FOUND) + # add PATH to DLL on Windows + set(DLL_PATH_LIST + "${DLL_PATH_LIST};PATH=path_list_append:${LIBHWLOC_DLL_DIRS}") + else() + set(UMF_LINK_HWLOC_STATICALLY ON) + endif() + endif() + if(UMF_LINK_HWLOC_STATICALLY) message( STATUS "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG})" ) - FetchContent_Declare( - hwloc_targ - GIT_REPOSITORY ${UMF_HWLOC_REPO} - GIT_TAG ${UMF_HWLOC_TAG} - SOURCE_SUBDIR contrib/windows-cmake/ FIND_PACKAGE_ARGS) - FetchContent_MakeAvailable(hwloc_targ) - - message(STATUS "hwloc CMAKE_GENERATOR: ${CMAKE_GENERATOR}") + if(WINDOWS) + set(HWLOC_ENABLE_TESTING OFF) + set(HWLOC_SKIP_LSTOPO ON) + set(HWLOC_SKIP_TOOLS ON) + + FetchContent_Declare( + hwloc_targ + GIT_REPOSITORY ${UMF_HWLOC_REPO} + GIT_TAG ${UMF_HWLOC_TAG} + SOURCE_SUBDIR contrib/windows-cmake/) + FetchContent_MakeAvailable(hwloc_targ) + + set(HWLOC_LIB_PATH "") + if(CMAKE_GENERATOR STREQUAL "NMake Makefiles") + set(HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR}/hwloc.lib") + else() + set(HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR}/lib/hwloc.lib") + endif() + + get_filename_component(LIBHWLOC_LIBRARY_DIRS ${HWLOC_LIB_PATH} + DIRECTORY) + set(LIBHWLOC_LIBRARIES ${HWLOC_LIB_PATH}) + set(LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR}/include) + else() # not Windows + FetchContent_Declare( + hwloc_targ + GIT_REPOSITORY ${UMF_HWLOC_REPO} + GIT_TAG ${UMF_HWLOC_TAG}) + FetchContent_MakeAvailable(hwloc_targ) - if(CMAKE_GENERATOR STREQUAL "Ninja" OR CMAKE_GENERATOR STREQUAL - "Unix Makefiles") add_custom_command( - COMMAND ${CMAKE_COMMAND} - -DCMAKE_INSTALL_PREFIX=${hwloc_targ_BINARY_DIR} -B build - WORKING_DIRECTORY - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/ - OUTPUT - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/CMakeCache.txt - ) + COMMAND ./autogen.sh + WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} + OUTPUT ${hwloc_targ_SOURCE_DIR}/configure) add_custom_command( - COMMAND ${CMAKE_COMMAND} --build build - WORKING_DIRECTORY - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/ - OUTPUT - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/build/lib/hwloc.lib - DEPENDS - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/CMakeCache.txt - ) + COMMAND + ./configure --prefix=${hwloc_targ_BINARY_DIR} + --enable-static=yes --enable-shared=no --disable-libxml2 + --disable-pci --disable-levelzero --disable-opencl + --disable-cuda --disable-nvml --disable-libudev + --disable-rsmi CFLAGS=-fPIC CXXFLAGS=-fPIC + WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} + OUTPUT ${hwloc_targ_SOURCE_DIR}/Makefile + DEPENDS ${hwloc_targ_SOURCE_DIR}/configure) add_custom_command( - COMMAND ${CMAKE_COMMAND} --build build --target INSTALL - WORKING_DIRECTORY - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/ - OUTPUT ${hwloc_targ_BINARY_DIR}/lib/hwloc.lib - DEPENDS - ${hwloc_targ_SOURCE_DIR}/contrib/windows-cmake/build/lib/hwloc.lib - ) + COMMAND make + WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} + OUTPUT ${hwloc_targ_SOURCE_DIR}/lib/libhwloc.la + DEPENDS ${hwloc_targ_SOURCE_DIR}/Makefile) + add_custom_command( + COMMAND make install + WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} + OUTPUT ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a + DEPENDS ${hwloc_targ_SOURCE_DIR}/lib/libhwloc.la) + add_custom_target(hwloc_prod - DEPENDS ${hwloc_targ_BINARY_DIR}/lib/hwloc.lib) + DEPENDS ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) + add_library(hwloc INTERFACE) target_link_libraries( - hwloc INTERFACE ${hwloc_targ_BINARY_DIR}/lib/hwloc.lib) + hwloc INTERFACE ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) add_dependencies(hwloc hwloc_prod) set(LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR}/lib) - set(LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR}/lib/hwloc.lib) - elseif(CMAKE_GENERATOR STREQUAL "NMake Makefiles") - set(LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR}/) - set(LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR}/hwloc.lib) - else() - set(LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR}/$) - set(LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR}/$/hwloc.lib) + set(LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR}/include) + set(LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) endif() - - set(LIBHWLOC_INCLUDE_DIRS - ${hwloc_targ_SOURCE_DIR}/include;${hwloc_targ_BINARY_DIR}/include) - else() - include(FetchContent) - message( - STATUS - "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG})" - ) - - FetchContent_Declare( - hwloc_targ - GIT_REPOSITORY ${UMF_HWLOC_REPO} - GIT_TAG ${UMF_HWLOC_TAG}) - FetchContent_MakeAvailable(hwloc_targ) - - add_custom_command( - COMMAND ./autogen.sh - WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} - OUTPUT ${hwloc_targ_SOURCE_DIR}/configure) - add_custom_command( - COMMAND - ./configure --prefix=${hwloc_targ_BINARY_DIR} - --enable-static=yes --enable-shared=no --disable-libxml2 - --disable-pci --disable-levelzero --disable-opencl - --disable-cuda --disable-nvml --disable-libudev --disable-rsmi - CFLAGS=-fPIC CXXFLAGS=-fPIC - WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} - OUTPUT ${hwloc_targ_SOURCE_DIR}/Makefile - DEPENDS ${hwloc_targ_SOURCE_DIR}/configure) - add_custom_command( - COMMAND make - WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} - OUTPUT ${hwloc_targ_SOURCE_DIR}/lib/libhwloc.la - DEPENDS ${hwloc_targ_SOURCE_DIR}/Makefile) - add_custom_command( - COMMAND make install - WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} - OUTPUT ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a - DEPENDS ${hwloc_targ_SOURCE_DIR}/lib/libhwloc.la) - - add_custom_target(hwloc_prod - DEPENDS ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) - add_library(hwloc INTERFACE) - target_link_libraries(hwloc - INTERFACE ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) - add_dependencies(hwloc hwloc_prod) - - set(LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR}/lib) - set(LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR}/include) - set(LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR}/lib/libhwloc.a) - endif() + endif() # UMF_LINK_HWLOC_STATICALLY message(STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES}") message(STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS}") @@ -388,7 +357,7 @@ else() endif() if(hwloc_targ_SOURCE_DIR) - # apply security patch for HWLOC + # Apply security patch for HWLOC execute_process( COMMAND git apply ${PROJECT_SOURCE_DIR}/cmake/fix_coverity_issues.patch WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR} @@ -406,8 +375,6 @@ endif() # Fetch L0 loader only if needed i.e.: if building L0 provider is ON and L0 # headers are not provided by the user (via setting UMF_LEVEL_ZERO_INCLUDE_DIR). if(UMF_BUILD_LEVEL_ZERO_PROVIDER AND (NOT UMF_LEVEL_ZERO_INCLUDE_DIR)) - include(FetchContent) - set(LEVEL_ZERO_LOADER_REPO "https://github.com/oneapi-src/level-zero.git") set(LEVEL_ZERO_LOADER_TAG v1.20.2) @@ -436,8 +403,6 @@ endif() # Fetch CUDA only if needed i.e.: if building CUDA provider is ON and CUDA # headers are not provided by the user (via setting UMF_CUDA_INCLUDE_DIR). if(UMF_BUILD_CUDA_PROVIDER AND (NOT UMF_CUDA_INCLUDE_DIR)) - include(FetchContent) - set(CUDA_REPO "https://gitlab.com/nvidia/headers/cuda-individual/cudart.git") set(CUDA_TAG cuda-12.5.1) diff --git a/cmake/FindLIBHWLOC.cmake b/cmake/FindLIBHWLOC.cmake index 4972f55ceb..2efd072d4d 100644 --- a/cmake/FindLIBHWLOC.cmake +++ b/cmake/FindLIBHWLOC.cmake @@ -55,7 +55,7 @@ if(WINDOWS) endif() if(LIBHWLOC_LIBRARY) - message(STATUS " Found libhwloc using find_library()") + message(STATUS " Found libhwloc: ${LIBHWLOC_LIBRARY}") if(LIBHWLOC_FIND_VERSION) if(NOT LIBHWLOC_API_VERSION) @@ -72,8 +72,7 @@ if(LIBHWLOC_LIBRARY) endif() else() set(MSG_NOT_FOUND - "libhwloc NOT found (set CMAKE_PREFIX_PATH to point the location or disable with -DUMF_DISABLE_HWLOC=ON)" - ) + "libhwloc NOT found in the system (will fetch it from GitHub)") if(LIBHWLOC_FIND_REQUIRED) message(FATAL_ERROR ${MSG_NOT_FOUND}) else() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index a26b8915ec..8bb3527876 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -18,7 +18,7 @@ set(EXAMPLE_NAME umf_example_basic) add_umf_executable( NAME ${EXAMPLE_NAME} SRCS basic/basic.c - LIBS umf ${LIBHWLOC_LIBRARIES}) + LIBS umf ${UMF_HWLOC_NAME}) target_include_directories( ${EXAMPLE_NAME} PRIVATE ${UMF_CMAKE_SOURCE_DIR}/src/utils @@ -231,7 +231,7 @@ if(LINUX) add_umf_executable( NAME ${EXAMPLE_NAME} SRCS memspace_numa/memspace_numa.c - LIBS umf ${LIBHWLOC_LIBRARIES} numa) + LIBS umf ${UMF_HWLOC_NAME} numa) target_include_directories( ${EXAMPLE_NAME} @@ -254,7 +254,7 @@ if(LINUX) add_umf_executable( NAME ${EXAMPLE_NAME} SRCS memspace_hmat/memspace_hmat.c - LIBS umf ${LIBHWLOC_LIBRARIES} numa) + LIBS umf ${UMF_HWLOC_NAME} numa) target_include_directories( ${EXAMPLE_NAME} @@ -278,7 +278,7 @@ if(LINUX) add_umf_executable( NAME ${EXAMPLE_NAME} SRCS custom_file_provider/custom_file_provider.c - LIBS umf ${LIBHWLOC_LIBRARIES}) + LIBS umf ${UMF_HWLOC_NAME}) target_include_directories( ${EXAMPLE_NAME} PRIVATE ${UMF_CMAKE_SOURCE_DIR}/src/utils diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 49fa2c5d86..24beb1e0ae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,7 +103,7 @@ endif() if(NOT UMF_DISABLE_HWLOC) set(UMF_SOURCES ${UMF_SOURCES} ${HWLOC_DEPENDENT_SOURCES} memtargets/memtarget_numa.c) - set(UMF_LIBS ${UMF_LIBS} ${LIBHWLOC_LIBRARIES}) + set(UMF_LIBS ${UMF_LIBS} $) set(UMF_PRIVATE_LIBRARY_DIRS ${UMF_PRIVATE_LIBRARY_DIRS} ${LIBHWLOC_LIBRARY_DIRS}) else() @@ -150,14 +150,11 @@ if(UMF_BUILD_SHARED_LIBRARY) set(CMAKE_INSTALL_RPATH "${UMF_INSTALL_RPATH}") endif() - if(NOT UMF_DISABLE_HWLOC) - set(HWLOC_LIB ${UMF_HWLOC_NAME}) - endif() add_umf_library( NAME umf TYPE SHARED SRCS ${UMF_SOURCES} - LIBS ${UMF_LIBS} ${HWLOC_LIB} + LIBS ${UMF_LIBS} LINUX_MAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libumf.map WINDOWS_DEF_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libumf.def) set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e172115e16..20f982c65e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -294,27 +294,27 @@ if(LINUX AND (NOT UMF_DISABLE_HWLOC)) # OS-specific functions are implemented add_umf_test( NAME memspace_numa SRCS memspaces/memspace_numa.cpp - LIBS ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME provider_os_memory_config SRCS provider_os_memory_config.cpp - LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME memspace_host_all SRCS memspaces/memspace_host_all.cpp - LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME memspace_highest_capacity SRCS memspaces/memspace_highest_capacity.cpp - LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME memspace_highest_bandwidth SRCS memspaces/memspace_highest_bandwidth.cpp - LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME memspace_lowest_latency SRCS memspaces/memspace_lowest_latency.cpp - LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${UMF_UTILS_FOR_TEST} ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME mempolicy SRCS memspaces/mempolicy.cpp @@ -326,7 +326,7 @@ if(LINUX AND (NOT UMF_DISABLE_HWLOC)) # OS-specific functions are implemented add_umf_test( NAME memtarget SRCS memspaces/memtarget.cpp - LIBS ${LIBNUMA_LIBRARIES} ${LIBHWLOC_LIBRARIES}) + LIBS ${LIBNUMA_LIBRARIES} ${UMF_HWLOC_NAME}) add_umf_test( NAME provider_devdax_memory SRCS provider_devdax_memory.cpp @@ -678,6 +678,7 @@ endif() # replace test_examples.sh with CMake script?) if(LINUX AND UMF_BUILD_SHARED_LIBRARY + AND UMF_BUILD_EXAMPLES AND NOT (UMF_USE_ASAN OR UMF_USE_UBSAN