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