@@ -321,6 +321,109 @@ if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
321
321
endif ()
322
322
endif ()
323
323
324
+ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
325
+ # On Windows, also build/install debug libraries with the d suffix that are
326
+ # compiled with /MDd so users can link against these in debug builds.
327
+ include (ExternalProject)
328
+ set (URD_BINARY_DIR ${CMAKE_BINARY_DIR} /unified-runtimed)
329
+ set (URD_INSTALL_DIR ${URD_BINARY_DIR} /install )
330
+
331
+ # This creates a subbuild which can be used in dependencies with the
332
+ # unified-runtimed target. It invokes the install-unified-runtime-libraries
333
+ # target to install the UR runtime libraries.
334
+ ExternalProject_Add(unified-runtimed
335
+ SOURCE_DIR ${UNIFIED_RUNTIME_SOURCE_DIR}
336
+ BINARY_DIR ${URD_BINARY_DIR}
337
+ INSTALL_DIR ${URD_INSTALL_DIR}
338
+ INSTALL_COMMAND ${CMAKE_COMMAND}
339
+ --build <BINARY_DIR>
340
+ --target install -unified-runtime-libraries
341
+ CMAKE_CACHE_ARGS
342
+ -DCMAKE_BUILD_TYPE:STRING =Debug
343
+ -DCMAKE_INSTALL_PREFIX:STRING =<INSTALL_DIR>
344
+ # Enable d suffix on libraries
345
+ -DUR_USE_DEBUG_POSTFIX :BOOL =ON
346
+ # Don't build unnecessary targets in subbuild.
347
+ -DUR_BUILD_EXAMPLES:BOOL =OFF
348
+ -DUR_BUILD_TESTS:BOOL =OFF
349
+ -DUR_BUILD_TOOLS:BOOL =OFF
350
+ # Sanitizer layer is not supported on Windows.
351
+ -DUR_ENABLE_SYMBOLIZER:BOOL =OFF
352
+ # Inherit settings from parent build.
353
+ -DUR_ENABLE_TRACING:BOOL =${UR_ENABLE_TRACING}
354
+ -DUR_ENABLE_COMGR:BOOL =${UR_ENABLE_COMGR}
355
+ -DUR_BUILD_ADAPTER_L0:BOOL =${UR_BUILD_ADAPTER_L0}
356
+ -DUR_BUILD_ADAPTER_L0_V2:BOOL =${UR_BUILD_ADAPTER_L0_V2}
357
+ -DUR_BUILD_ADAPTER_OPENCL:BOOL =${UR_BUILD_ADAPTER_OPENCL}
358
+ -DUR_BUILD_ADAPTER_CUDA:BOOL =${UR_BUILD_ADAPTER_CUDA}
359
+ -DUR_BUILD_ADAPTER_HIP:BOOL =${UR_BUILD_ADAPTER_HIP}
360
+ -DUR_BUILD_ADAPTER_NATIVE_CPU:BOOL =${UR_BUILD_ADAPTER_NATIVE_CPU}
361
+ -DUMF_BUILD_EXAMPLES:BOOL =${UMF_BUILD_EXAMPLES}
362
+ -DUMF_BUILD_SAHRED_LIBRARY:BOOL =${UMF_BUILD_SHARED_LIBRARY}
363
+ -DUMF_LINK_HWLOC_STATICALLY:BOOL =${UMF_LINK_HWLOC_STATICALLY}
364
+ -DUMF_DISABLE_HWLOC:BOOL =${UMF_DISABLE_HWLOC}
365
+ # TODO: Enable d suffix in UMF
366
+ # -DUMF_USE_DEBUG_POSTFIX=ON
367
+ )
368
+
369
+ # Copy the debug UR runtime libraries to <build>/bin & <build>/lib for use in
370
+ # the partent build, e.g. integration testing.
371
+ set (URD_COPY_FILES)
372
+ macro (urd_copy_library_to_build library)
373
+ list (APPEND URD_COPY_FILES
374
+ ${LLVM_BINARY_DIR} /bin/${library} .dll
375
+ ${LLVM_BINARY_DIR} /lib/${library} .lib
376
+ )
377
+ add_custom_command (
378
+ OUTPUT
379
+ ${LLVM_BINARY_DIR} /bin/${library} .dll
380
+ ${LLVM_BINARY_DIR} /lib/${library} .lib
381
+ COMMAND ${CMAKE_COMMAND} -E copy
382
+ ${URD_INSTALL_DIR} /bin/${library} .dll
383
+ ${LLVM_BINARY_DIR} /bin/${library} .dll
384
+ COMMAND ${CMAKE_COMMAND} -E copy
385
+ ${URD_INSTALL_DIR} /lib/${library} .lib
386
+ ${LLVM_BINARY_DIR} /lib/${library} .lib
387
+ )
388
+ endmacro ()
389
+
390
+ urd_copy_library_to_build(ur_loaderd)
391
+ foreach (adatper ${SYCL_ENABLE_BACKENDS} )
392
+ urd_copy_library_to_build(ur_adapter_${adatper} d)
393
+ endforeach ()
394
+ # TODO: Also copy umfd.dll/umfd.lib
395
+ # urd_copy_library_to_build(umfd)
396
+
397
+ add_custom_target (unified-runtimed-copy-to-build DEPENDS ${URD_COPY_FILES} )
398
+ add_dependencies (unified-runtimed-copy-to-build unified-runtimed)
399
+
400
+ # Add the debug UR runtime libraries to the parent install.
401
+ install (
402
+ FILES ${URD_INSTALL_DIR} /bin/ur_loaderd.dll
403
+ DESTINATION "bin" COMPONENT unified-runtime-loader)
404
+ install (
405
+ FILES ${URD_INSTALL_DIR} /lib/ur_loaderd.lib
406
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT unified-runtime-loader)
407
+
408
+ foreach (adapter ${SYCL_ENABLE_BACKENDS} )
409
+ install (
410
+ FILES ${URD_INSTALL_DIR} /bin/ur_adapter_${adapter} d.dll
411
+ DESTINATION "bin" COMPONENT ur_adapter_${adapter} )
412
+ install (
413
+ FILES ${URD_INSTALL_DIR} /lib/ur_adapter_${adapter} d.lib
414
+ DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT ur_adapter_${adapter} )
415
+ add_dependencies (install -sycl-ur-adapter-${adapter} unified-runtimed)
416
+ endforeach ()
417
+
418
+ # TODO: Also install umfd.dll/umfd.lib
419
+ # install(
420
+ # FILES ${URD_INSTALL_DIR}/bin/umfd.dll
421
+ # DESTINATION "bin" COMPONENT unified-memory-framework)
422
+ # install(
423
+ # FILES ${URD_INSTALL_DIR}/lib/umfd.lib
424
+ # DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework)
425
+ endif ()
426
+
324
427
install (TARGETS umf
325
428
LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT unified-memory-framework
326
429
ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX} " COMPONENT unified-memory-framework
0 commit comments