@@ -75,10 +75,6 @@ umf_option(UMF_BUILD_EXAMPLES "Build UMF examples" ON)
7575umf_option(UMF_BUILD_GPU_EXAMPLES "Build UMF GPU examples" OFF )
7676umf_option(UMF_BUILD_FUZZTESTS
7777 "Build UMF fuzz tests (supported only on Linux with Clang)" OFF )
78- umf_option(
79- UMF_DISABLE_HWLOC
80- "Disable hwloc and UMF features requiring it (OS provider, memtargets, topology discovery)"
81- OFF )
8278umf_option(
8379 UMF_LINK_HWLOC_STATICALLY
8480 "Link UMF with HWLOC library statically (proxy library will be disabled on Windows+Debug build)"
@@ -119,13 +115,6 @@ set_property(CACHE UMF_PROXY_LIB_BASED_ON_POOL
119115 PROPERTY STRINGS ${KNOWN_PROXY_LIB_POOLS} )
120116list (APPEND UMF_OPTIONS_LIST UMF_PROXY_LIB_BASED_ON_POOL)
121117
122- if (UMF_DISABLE_HWLOC)
123- message (
124- WARNING
125- "UMF_DISABLE_HWLOC option is now deprecated and will be removed in v0.12.0 UMF release!"
126- )
127- endif ()
128-
129118# --------------------------------------------------------------------------- #
130119# Setup required variables, definitions; fetch dependencies; include
131120# sub_directories based on build options; set flags; etc.
@@ -260,7 +249,7 @@ else()
260249 )
261250endif ()
262251
263- if (NOT UMF_DISABLE_HWLOC AND ( NOT UMF_LINK_HWLOC_STATICALLY) )
252+ if (NOT UMF_LINK_HWLOC_STATICALLY)
264253 pkg_check_modules(LIBHWLOC hwloc>=2.3.0)
265254 if (NOT LIBHWLOC_FOUND)
266255 find_package (LIBHWLOC 2.3.0 COMPONENTS hwloc)
@@ -275,110 +264,95 @@ if(NOT UMF_DISABLE_HWLOC AND (NOT UMF_LINK_HWLOC_STATICALLY))
275264 endif ()
276265endif ()
277266
278- if (UMF_LINK_HWLOC_STATICALLY AND LINUX )
279- find_program (AUTORECONF_EXECUTABLE autoreconf )
280- if ( NOT AUTORECONF_EXECUTABLE )
281- message (WARNING "autoreconf is not installed. Disabling hwloc." )
282- set (UMF_DISABLE_HWLOC ON )
283- set (UMF_LINK_HWLOC_STATICALLY OFF )
267+ if (UMF_LINK_HWLOC_STATICALLY)
268+ if ( NOT DEFINED UMF_HWLOC_REPO )
269+ set (UMF_HWLOC_REPO "https://github.com/open-mpi/hwloc.git" )
270+ endif ( )
271+ if ( NOT DEFINED UMF_HWLOC_TAG )
272+ set (UMF_HWLOC_TAG hwloc-2.10.0 )
284273 endif ()
285- endif ()
286274
287- if (UMF_DISABLE_HWLOC)
288- message (STATUS "hwloc is disabled, hence OS provider, memtargets, "
289- "topology discovery, examples won't be available!" )
290- else ()
291- if (UMF_LINK_HWLOC_STATICALLY)
292- if (NOT DEFINED UMF_HWLOC_REPO)
293- set (UMF_HWLOC_REPO "https://github.com/open-mpi/hwloc.git" )
294- endif ()
275+ message (
276+ STATUS "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG} )"
277+ )
295278
296- if (NOT DEFINED UMF_HWLOC_TAG)
297- set (UMF_HWLOC_TAG hwloc-2.10.0)
279+ if (WINDOWS)
280+ set (HWLOC_ENABLE_TESTING OFF )
281+ set (HWLOC_SKIP_LSTOPO ON )
282+ set (HWLOC_SKIP_TOOLS ON )
283+ set (HWLOC_SKIP_INCLUDES ON )
284+
285+ FetchContent_Declare(
286+ hwloc_targ
287+ GIT_REPOSITORY ${UMF_HWLOC_REPO}
288+ GIT_TAG ${UMF_HWLOC_TAG}
289+ SOURCE_SUBDIR contrib/windows-cmake/)
290+ FetchContent_MakeAvailable(hwloc_targ)
291+
292+ set (HWLOC_LIB_PATH "" )
293+ if (CMAKE_GENERATOR STREQUAL "NMake Makefiles" )
294+ set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /hwloc.lib" )
295+ else ()
296+ set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /lib/hwloc.lib" )
298297 endif ()
299- message (
300- STATUS
301- "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG} )"
302- )
303298
304- if (WINDOWS)
305- set (HWLOC_ENABLE_TESTING OFF )
306- set (HWLOC_SKIP_LSTOPO ON )
307- set (HWLOC_SKIP_TOOLS ON )
308- set (HWLOC_SKIP_INCLUDES ON )
309-
310- FetchContent_Declare(
311- hwloc_targ
312- GIT_REPOSITORY ${UMF_HWLOC_REPO}
313- GIT_TAG ${UMF_HWLOC_TAG}
314- SOURCE_SUBDIR contrib/windows-cmake/)
315- FetchContent_MakeAvailable(hwloc_targ)
316-
317- set (HWLOC_LIB_PATH "" )
318- if (CMAKE_GENERATOR STREQUAL "NMake Makefiles" )
319- set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /hwloc.lib" )
320- else ()
321- set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /lib/hwloc.lib" )
322- endif ()
323-
324- get_filename_component (LIBHWLOC_LIBRARY_DIRS ${HWLOC_LIB_PATH}
325- DIRECTORY )
326- set (LIBHWLOC_LIBRARIES ${HWLOC_LIB_PATH} )
327- set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
328- set (LIBHWLOC_FOUND TRUE )
329- else () # not Windows
330- FetchContent_Declare(
331- hwloc_targ
332- GIT_REPOSITORY ${UMF_HWLOC_REPO}
333- GIT_TAG ${UMF_HWLOC_TAG} )
334- FetchContent_MakeAvailable(hwloc_targ)
335-
336- add_custom_command (
337- COMMAND ./autogen.sh
338- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
339- OUTPUT ${hwloc_targ_SOURCE_DIR} /configure)
340- add_custom_command (
341- COMMAND
342- ./configure --prefix =${hwloc_targ_BINARY_DIR}
343- --enable-static =yes --enable-shared=no --disable-libxml2
344- --disable-pci --disable-levelzero --disable-opencl
345- --disable-cuda --disable-nvml --disable-libudev
346- --disable-rsmi CFLAGS=-fPIC CXXFLAGS=-fPIC
347- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
348- OUTPUT ${hwloc_targ_SOURCE_DIR} /Makefile
349- DEPENDS ${hwloc_targ_SOURCE_DIR} /configure)
350- add_custom_command (
351- COMMAND make
352- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
353- OUTPUT ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la
354- DEPENDS ${hwloc_targ_SOURCE_DIR} /Makefile)
355- add_custom_command (
356- COMMAND make install
357- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
358- OUTPUT ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a
359- DEPENDS ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la)
360-
361- add_custom_target (hwloc_prod
362- DEPENDS ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
363- add_library (hwloc INTERFACE )
364- target_link_libraries (
365- hwloc INTERFACE ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
366- add_dependencies (hwloc hwloc_prod)
367-
368- set (LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR} /lib)
369- set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
370- set (LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
371- set (LIBHWLOC_FOUND TRUE )
372- endif ()
373- endif () # UMF_LINK_HWLOC_STATICALLY
299+ get_filename_component (LIBHWLOC_LIBRARY_DIRS ${HWLOC_LIB_PATH}
300+ DIRECTORY )
301+ set (LIBHWLOC_LIBRARIES ${HWLOC_LIB_PATH} )
302+ set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
303+ set (LIBHWLOC_FOUND TRUE )
304+ else () # not Windows
305+ FetchContent_Declare(
306+ hwloc_targ
307+ GIT_REPOSITORY ${UMF_HWLOC_REPO}
308+ GIT_TAG ${UMF_HWLOC_TAG} )
309+ FetchContent_MakeAvailable(hwloc_targ)
374310
375- message (STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES} " )
376- message (STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS} " )
377- message (STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS} " )
378- message (STATUS " LIBHWLOC_API_VERSION = ${LIBHWLOC_API_VERSION} " )
379- if (WINDOWS)
380- message (STATUS " LIBHWLOC_DLL_DIRS = ${LIBHWLOC_DLL_DIRS} " )
311+ add_custom_command (
312+ COMMAND ./autogen.sh
313+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
314+ OUTPUT ${hwloc_targ_SOURCE_DIR} /configure)
315+ add_custom_command (
316+ COMMAND
317+ ./configure --prefix =${hwloc_targ_BINARY_DIR}
318+ --enable-static =yes --enable-shared=no --disable-libxml2
319+ --disable-pci --disable-levelzero --disable-opencl
320+ --disable-cuda --disable-nvml --disable-libudev --disable-rsmi
321+ CFLAGS=-fPIC CXXFLAGS=-fPIC
322+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
323+ OUTPUT ${hwloc_targ_SOURCE_DIR} /Makefile
324+ DEPENDS ${hwloc_targ_SOURCE_DIR} /configure)
325+ add_custom_command (
326+ COMMAND make
327+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
328+ OUTPUT ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la
329+ DEPENDS ${hwloc_targ_SOURCE_DIR} /Makefile)
330+ add_custom_command (
331+ COMMAND make install
332+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
333+ OUTPUT ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a
334+ DEPENDS ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la)
335+
336+ add_custom_target (hwloc_prod
337+ DEPENDS ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
338+ add_library (hwloc INTERFACE )
339+ target_link_libraries (hwloc
340+ INTERFACE ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
341+ add_dependencies (hwloc hwloc_prod)
342+
343+ set (LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR} /lib)
344+ set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
345+ set (LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
346+ set (LIBHWLOC_FOUND TRUE )
381347 endif ()
348+ endif () # UMF_LINK_HWLOC_STATICALLY
349+
350+ message (STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES} " )
351+ message (STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS} " )
352+ message (STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS} " )
353+ message (STATUS " LIBHWLOC_API_VERSION = ${LIBHWLOC_API_VERSION} " )
354+ if (WINDOWS)
355+ message (STATUS " LIBHWLOC_DLL_DIRS = ${LIBHWLOC_DLL_DIRS} " )
382356endif ()
383357
384358if (hwloc_targ_SOURCE_DIR)
@@ -533,7 +507,7 @@ if(WINDOWS AND UMF_USE_DEBUG_POSTFIX)
533507 -DUMF_BUILD_TESTS=OFF -DUMF_BUILD_GPU_TESTS=OFF
534508 -DUMF_BUILD_BENCHMARKS=OFF -DUMF_BUILD_BENCHMARKS_MT=OFF
535509 -DUMF_BUILD_EXAMPLES=OFF -DUMF_BUILD_GPU_EXAMPLES=OFF
536- -DUMF_BUILD_FUZZTESTS=OFF -DUMF_DISABLE_HWLOC= ${UMF_DISABLE_HWLOC}
510+ -DUMF_BUILD_FUZZTESTS=OFF
537511 -DUMF_LINK_HWLOC_STATICALLY=${UMF_LINK_HWLOC_STATICALLY}
538512 -DUMF_HWLOC_NAME=${UMF_HWLOC_NAME}
539513 -DUMF_INSTALL_RPATH=${UMF_INSTALL_RPATH} -DUMF_DEVELOPER_MODE=OFF
@@ -756,9 +730,7 @@ if(WINDOWS)
756730endif ()
757731
758732# set UMF_PROXY_LIB_ENABLED
759- if (UMF_DISABLE_HWLOC)
760- message (STATUS "Disabling the proxy library, because HWLOC is disabled" )
761- elseif (NOT UMF_BUILD_SHARED_LIBRARY)
733+ if (NOT UMF_BUILD_SHARED_LIBRARY)
762734 # TODO enable this scenario
763735 message (
764736 STATUS
@@ -803,7 +775,7 @@ if(UMF_BUILD_BENCHMARKS)
803775 add_subdirectory (benchmark)
804776endif ()
805777
806- if (UMF_BUILD_EXAMPLES AND NOT UMF_DISABLE_HWLOC )
778+ if (UMF_BUILD_EXAMPLES)
807779 add_subdirectory (examples)
808780endif ()
809781
0 commit comments