@@ -72,10 +72,6 @@ umf_option(UMF_BUILD_BENCHMARKS_MT "Build UMF multithreaded benchmarks" OFF)
72
72
umf_option(UMF_BUILD_EXAMPLES "Build UMF examples" ON )
73
73
umf_option(UMF_BUILD_GPU_EXAMPLES "Build UMF GPU examples" OFF )
74
74
umf_option(UMF_BUILD_FUZZTESTS "Build UMF fuzz tests" OFF )
75
- umf_option(
76
- UMF_DISABLE_HWLOC
77
- "Disable hwloc and UMF features requiring it (OS provider, memtargets, topology discovery)"
78
- OFF )
79
75
umf_option(
80
76
UMF_LINK_HWLOC_STATICALLY
81
77
"Link UMF with HWLOC library statically (proxy library will be disabled on Windows+Debug build)"
@@ -249,7 +245,7 @@ else()
249
245
)
250
246
endif ()
251
247
252
- if (NOT UMF_DISABLE_HWLOC AND ( NOT UMF_LINK_HWLOC_STATICALLY) )
248
+ if (NOT UMF_LINK_HWLOC_STATICALLY)
253
249
pkg_check_modules(LIBHWLOC hwloc>=2.3.0)
254
250
if (NOT LIBHWLOC_FOUND)
255
251
find_package (LIBHWLOC 2.3.0 COMPONENTS hwloc)
@@ -267,108 +263,93 @@ if(NOT UMF_DISABLE_HWLOC AND (NOT UMF_LINK_HWLOC_STATICALLY))
267
263
endif ()
268
264
endif ()
269
265
270
- if (UMF_LINK_HWLOC_STATICALLY AND LINUX )
271
- find_program (AUTORECONF_EXECUTABLE autoreconf )
272
- if ( NOT AUTORECONF_EXECUTABLE )
273
- message (WARNING "autoreconf is not installed. Disabling hwloc." )
274
- set (UMF_DISABLE_HWLOC ON )
275
- set (UMF_LINK_HWLOC_STATICALLY OFF )
266
+ if (UMF_LINK_HWLOC_STATICALLY)
267
+ if ( NOT DEFINED UMF_HWLOC_REPO )
268
+ set (UMF_HWLOC_REPO "https://github.com/open-mpi/hwloc.git" )
269
+ endif ( )
270
+ if ( NOT DEFINED UMF_HWLOC_TAG )
271
+ set (UMF_HWLOC_TAG hwloc-2.10.0 )
276
272
endif ()
277
- endif ()
278
273
279
- if (UMF_DISABLE_HWLOC)
280
- message (STATUS "hwloc is disabled, hence OS provider, memtargets, "
281
- "topology discovery, examples won't be available!" )
282
- else ()
283
- if (UMF_LINK_HWLOC_STATICALLY)
284
- if (NOT DEFINED UMF_HWLOC_REPO)
285
- set (UMF_HWLOC_REPO "https://github.com/open-mpi/hwloc.git" )
286
- endif ()
274
+ message (
275
+ STATUS "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG} )"
276
+ )
287
277
288
- if (NOT DEFINED UMF_HWLOC_TAG)
289
- set (UMF_HWLOC_TAG hwloc-2.10.0)
278
+ if (WINDOWS)
279
+ set (HWLOC_ENABLE_TESTING OFF )
280
+ set (HWLOC_SKIP_LSTOPO ON )
281
+ set (HWLOC_SKIP_TOOLS ON )
282
+ set (HWLOC_SKIP_INCLUDES ON )
283
+
284
+ FetchContent_Declare(
285
+ hwloc_targ
286
+ GIT_REPOSITORY ${UMF_HWLOC_REPO}
287
+ GIT_TAG ${UMF_HWLOC_TAG}
288
+ SOURCE_SUBDIR contrib/windows-cmake/)
289
+ FetchContent_MakeAvailable(hwloc_targ)
290
+
291
+ set (HWLOC_LIB_PATH "" )
292
+ if (CMAKE_GENERATOR STREQUAL "NMake Makefiles" )
293
+ set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /hwloc.lib" )
294
+ else ()
295
+ set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /lib/hwloc.lib" )
290
296
endif ()
291
- message (
292
- STATUS
293
- "Will fetch hwloc from ${UMF_HWLOC_REPO} (tag: ${UMF_HWLOC_TAG} )"
294
- )
295
297
296
- if (WINDOWS)
297
- set (HWLOC_ENABLE_TESTING OFF )
298
- set (HWLOC_SKIP_LSTOPO ON )
299
- set (HWLOC_SKIP_TOOLS ON )
300
- set (HWLOC_SKIP_INCLUDES ON )
301
-
302
- FetchContent_Declare(
303
- hwloc_targ
304
- GIT_REPOSITORY ${UMF_HWLOC_REPO}
305
- GIT_TAG ${UMF_HWLOC_TAG}
306
- SOURCE_SUBDIR contrib/windows-cmake/)
307
- FetchContent_MakeAvailable(hwloc_targ)
308
-
309
- set (HWLOC_LIB_PATH "" )
310
- if (CMAKE_GENERATOR STREQUAL "NMake Makefiles" )
311
- set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /hwloc.lib" )
312
- else ()
313
- set (HWLOC_LIB_PATH "${hwloc_targ_BINARY_DIR} /lib/hwloc.lib" )
314
- endif ()
315
-
316
- get_filename_component (LIBHWLOC_LIBRARY_DIRS ${HWLOC_LIB_PATH}
317
- DIRECTORY )
318
- set (LIBHWLOC_LIBRARIES ${HWLOC_LIB_PATH} )
319
- set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
320
- else () # not Windows
321
- FetchContent_Declare(
322
- hwloc_targ
323
- GIT_REPOSITORY ${UMF_HWLOC_REPO}
324
- GIT_TAG ${UMF_HWLOC_TAG} )
325
- FetchContent_MakeAvailable(hwloc_targ)
326
-
327
- add_custom_command (
328
- COMMAND ./autogen.sh
329
- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
330
- OUTPUT ${hwloc_targ_SOURCE_DIR} /configure)
331
- add_custom_command (
332
- COMMAND
333
- ./configure --prefix =${hwloc_targ_BINARY_DIR}
334
- --enable-static =yes --enable-shared=no --disable-libxml2
335
- --disable-pci --disable-levelzero --disable-opencl
336
- --disable-cuda --disable-nvml --disable-libudev
337
- --disable-rsmi CFLAGS=-fPIC CXXFLAGS=-fPIC
338
- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
339
- OUTPUT ${hwloc_targ_SOURCE_DIR} /Makefile
340
- DEPENDS ${hwloc_targ_SOURCE_DIR} /configure)
341
- add_custom_command (
342
- COMMAND make
343
- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
344
- OUTPUT ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la
345
- DEPENDS ${hwloc_targ_SOURCE_DIR} /Makefile)
346
- add_custom_command (
347
- COMMAND make install
348
- WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
349
- OUTPUT ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a
350
- DEPENDS ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la)
351
-
352
- add_custom_target (hwloc_prod
353
- DEPENDS ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
354
- add_library (hwloc INTERFACE )
355
- target_link_libraries (
356
- hwloc INTERFACE ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
357
- add_dependencies (hwloc hwloc_prod)
358
-
359
- set (LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR} /lib)
360
- set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
361
- set (LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
362
- endif ()
363
- endif () # UMF_LINK_HWLOC_STATICALLY
298
+ get_filename_component (LIBHWLOC_LIBRARY_DIRS ${HWLOC_LIB_PATH}
299
+ DIRECTORY )
300
+ set (LIBHWLOC_LIBRARIES ${HWLOC_LIB_PATH} )
301
+ set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
302
+ else () # not Windows
303
+ FetchContent_Declare(
304
+ hwloc_targ
305
+ GIT_REPOSITORY ${UMF_HWLOC_REPO}
306
+ GIT_TAG ${UMF_HWLOC_TAG} )
307
+ FetchContent_MakeAvailable(hwloc_targ)
364
308
365
- message (STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES} " )
366
- message (STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS} " )
367
- message (STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS} " )
368
- message (STATUS " LIBHWLOC_API_VERSION = ${LIBHWLOC_API_VERSION} " )
369
- if (WINDOWS)
370
- message (STATUS " LIBHWLOC_DLL_DIRS = ${LIBHWLOC_DLL_DIRS} " )
309
+ add_custom_command (
310
+ COMMAND ./autogen.sh
311
+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
312
+ OUTPUT ${hwloc_targ_SOURCE_DIR} /configure)
313
+ add_custom_command (
314
+ COMMAND
315
+ ./configure --prefix =${hwloc_targ_BINARY_DIR}
316
+ --enable-static =yes --enable-shared=no --disable-libxml2
317
+ --disable-pci --disable-levelzero --disable-opencl
318
+ --disable-cuda --disable-nvml --disable-libudev --disable-rsmi
319
+ CFLAGS=-fPIC CXXFLAGS=-fPIC
320
+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
321
+ OUTPUT ${hwloc_targ_SOURCE_DIR} /Makefile
322
+ DEPENDS ${hwloc_targ_SOURCE_DIR} /configure)
323
+ add_custom_command (
324
+ COMMAND make
325
+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
326
+ OUTPUT ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la
327
+ DEPENDS ${hwloc_targ_SOURCE_DIR} /Makefile)
328
+ add_custom_command (
329
+ COMMAND make install
330
+ WORKING_DIRECTORY ${hwloc_targ_SOURCE_DIR}
331
+ OUTPUT ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a
332
+ DEPENDS ${hwloc_targ_SOURCE_DIR} /lib/libhwloc.la)
333
+
334
+ add_custom_target (hwloc_prod
335
+ DEPENDS ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
336
+ add_library (hwloc INTERFACE )
337
+ target_link_libraries (hwloc
338
+ INTERFACE ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
339
+ add_dependencies (hwloc hwloc_prod)
340
+
341
+ set (LIBHWLOC_LIBRARY_DIRS ${hwloc_targ_BINARY_DIR} /lib)
342
+ set (LIBHWLOC_INCLUDE_DIRS ${hwloc_targ_BINARY_DIR} /include )
343
+ set (LIBHWLOC_LIBRARIES ${hwloc_targ_BINARY_DIR} /lib/libhwloc.a)
371
344
endif ()
345
+ endif () # UMF_LINK_HWLOC_STATICALLY
346
+
347
+ message (STATUS " LIBHWLOC_LIBRARIES = ${LIBHWLOC_LIBRARIES} " )
348
+ message (STATUS " LIBHWLOC_INCLUDE_DIRS = ${LIBHWLOC_INCLUDE_DIRS} " )
349
+ message (STATUS " LIBHWLOC_LIBRARY_DIRS = ${LIBHWLOC_LIBRARY_DIRS} " )
350
+ message (STATUS " LIBHWLOC_API_VERSION = ${LIBHWLOC_API_VERSION} " )
351
+ if (WINDOWS)
352
+ message (STATUS " LIBHWLOC_DLL_DIRS = ${LIBHWLOC_DLL_DIRS} " )
372
353
endif ()
373
354
374
355
if (hwloc_targ_SOURCE_DIR)
@@ -463,7 +444,7 @@ if(WINDOWS AND UMF_USE_DEBUG_POSTFIX)
463
444
-DUMF_BUILD_TESTS=OFF -DUMF_BUILD_GPU_TESTS=OFF
464
445
-DUMF_BUILD_BENCHMARKS=OFF -DUMF_BUILD_BENCHMARKS_MT=OFF
465
446
-DUMF_BUILD_EXAMPLES=OFF -DUMF_BUILD_GPU_EXAMPLES=OFF
466
- -DUMF_BUILD_FUZZTESTS=OFF -DUMF_DISABLE_HWLOC= ${UMF_DISABLE_HWLOC}
447
+ -DUMF_BUILD_FUZZTESTS=OFF
467
448
-DUMF_LINK_HWLOC_STATICALLY=${UMF_LINK_HWLOC_STATICALLY}
468
449
-DUMF_HWLOC_NAME=${UMF_HWLOC_NAME}
469
450
-DUMF_INSTALL_RPATH=${UMF_INSTALL_RPATH} -DUMF_DEVELOPER_MODE=OFF
@@ -648,9 +629,7 @@ if(WINDOWS)
648
629
endif ()
649
630
650
631
# set UMF_PROXY_LIB_ENABLED
651
- if (UMF_DISABLE_HWLOC)
652
- message (STATUS "Disabling the proxy library, because HWLOC is disabled" )
653
- elseif (NOT UMF_BUILD_SHARED_LIBRARY)
632
+ if (NOT UMF_BUILD_SHARED_LIBRARY)
654
633
# TODO enable this scenario
655
634
message (
656
635
STATUS
@@ -707,7 +686,7 @@ if(UMF_BUILD_BENCHMARKS)
707
686
add_subdirectory (benchmark)
708
687
endif ()
709
688
710
- if (UMF_BUILD_EXAMPLES AND NOT UMF_DISABLE_HWLOC )
689
+ if (UMF_BUILD_EXAMPLES)
711
690
add_subdirectory (examples)
712
691
endif ()
713
692
0 commit comments