[llvm] Test workflows (PR #147552)

Kseniya Tikhomirova via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 8 08:29:34 PDT 2025


https://github.com/KseniyaTikhomirova created https://github.com/llvm/llvm-project/pull/147552

None

>From 60239fbe14271c9616355c10934b1927df53adb0 Mon Sep 17 00:00:00 2001
From: Sergey Semenov <sergey.semenov at intel.com>
Date: Fri, 14 Mar 2025 13:12:28 -0700
Subject: [PATCH 01/31] [SYCL] Add libsycl, a SYCL RT library implementation
 project

---
 libsycl/.clang-format                  |   1 +
 libsycl/.clang-tidy                    |   1 +
 libsycl/CMakeLists.txt                 | 169 +++++++++++++++
 libsycl/LICENSE.txt                    | 278 +++++++++++++++++++++++++
 libsycl/README.md                      |   5 +
 libsycl/docs/index.rst                 |  59 ++++++
 libsycl/include/sycl/detail/export.hpp |  44 ++++
 libsycl/include/sycl/platform.hpp      |  24 +++
 libsycl/include/sycl/sycl.hpp          |   9 +
 libsycl/src/CMakeLists.txt             | 160 ++++++++++++++
 libsycl/src/ld-version-script.txt      |  22 ++
 libsycl/src/platform.cpp               |  17 ++
 llvm/CMakeLists.txt                    |   2 +-
 runtimes/CMakeLists.txt                |   2 +-
 14 files changed, 791 insertions(+), 2 deletions(-)
 create mode 100644 libsycl/.clang-format
 create mode 100644 libsycl/.clang-tidy
 create mode 100644 libsycl/CMakeLists.txt
 create mode 100644 libsycl/LICENSE.txt
 create mode 100644 libsycl/README.md
 create mode 100644 libsycl/docs/index.rst
 create mode 100644 libsycl/include/sycl/detail/export.hpp
 create mode 100644 libsycl/include/sycl/platform.hpp
 create mode 100644 libsycl/include/sycl/sycl.hpp
 create mode 100644 libsycl/src/CMakeLists.txt
 create mode 100644 libsycl/src/ld-version-script.txt
 create mode 100644 libsycl/src/platform.cpp

diff --git a/libsycl/.clang-format b/libsycl/.clang-format
new file mode 100644
index 0000000000000..9b3aa8b7213b2
--- /dev/null
+++ b/libsycl/.clang-format
@@ -0,0 +1 @@
+BasedOnStyle: LLVM
diff --git a/libsycl/.clang-tidy b/libsycl/.clang-tidy
new file mode 100644
index 0000000000000..0af3553a0cad3
--- /dev/null
+++ b/libsycl/.clang-tidy
@@ -0,0 +1 @@
+Checks: '-*,clang-analyzer-*,clang-diagnostic-*,cppcoreguidelines-*,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-member-init,google-*,-cppcoreguidelines-pro-type-union-access,-google-build-using-namespace,-google-explicit-constructor,-google-runtime-references,misc-*,-misc-macro-parentheses,-misc-unused-parameters'
diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
new file mode 100644
index 0000000000000..80ff063bf8c21
--- /dev/null
+++ b/libsycl/CMakeLists.txt
@@ -0,0 +1,169 @@
+#===============================================================================
+# Setup Project
+#===============================================================================
+cmake_minimum_required(VERSION 3.20.0)
+
+set(LLVM_SUBPROJECT_TITLE "libsycl")
+
+set(LIBSYCL_SOURCE_DIR  ${CMAKE_CURRENT_SOURCE_DIR})
+set(LIBSYCL_BINARY_DIR  ${CMAKE_CURRENT_BINARY_DIR})
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+#===============================================================================
+# Setup CMake Options
+#===============================================================================
+
+option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl project" OFF)
+option(LIBSYCL_DISABLE_STL_ASSERTIONS "Disable assertions in STL containers when building libsycl" ON)
+option(LIBSYCL_ENABLE_STACK_PRINTING "Enables stack printing on crashes of SYCL applications" OFF)
+option(LIBSYCL_DEBUG_SYMBOLS "Builds SYCL runtime libraries with debug symbols" OFF)
+
+#===============================================================================
+# Configure System
+#===============================================================================
+
+set(LIBSYCL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING
+    "Path where libsycl headers should be installed.")
+set(LIBSYCL_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
+    "Path where built libsycl runtime libraries should be installed.")
+
+set(LIBSYCL_SHARED_OUTPUT_NAME "sycl" CACHE STRING "Output name for the shared libsycl runtime library.")
+
+if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+  set(LIBSYCL_TARGET_SUBDIR ${LLVM_DEFAULT_TARGET_TRIPLE})
+  if(LIBSYCL_LIBDIR_SUBDIR)
+    string(APPEND LIBSYCL_TARGET_SUBDIR /${LIBSYCL_LIBDIR_SUBDIR})
+  endif()
+  set(LIBSYCL_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBSYCL_TARGET_SUBDIR})
+  set(LIBSYCL_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LIBSYCL_TARGET_SUBDIR} CACHE STRING
+      "Path where built libsycl libraries should be installed.")
+  unset(LIBSYCL_TARGET_SUBDIR)
+else()
+  if(LLVM_LIBRARY_OUTPUT_INTDIR)
+    set(LIBSYCL_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
+  else()
+    set(LIBSYCL_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBSYCL_LIBDIR_SUFFIX})
+  endif()
+  set(LIBSYCL_INSTALL_LIBRARY_DIR lib${LIBSYCL_LIBDIR_SUFFIX} CACHE STRING
+      "Path where built libsycl libraries should be installed.")
+endif()
+
+set(LIBSYCL_INCLUDE_DIR ${LIBSYCL_SOURCE_DIR}/include)
+set(LIBSYCL_BUILD_INCLUDE_DIR ${LLVM_BINARY_DIR}/include)
+
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
+
+# The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
+# llvm/clang/lib/Driver/CMakeLists.txt.
+#
+# See doc/developer/ABIPolicyGuide.md for the meaning when in the middle of
+# development cycle.
+set(LIBSYCL_MAJOR_VERSION 0)
+set(LIBSYCL_MINOR_VERSION 1)
+set(LIBSYCL_PATCH_VERSION 0)
+set(LIBSYCL_VERSION_STRING "${LIBSYCL_MAJOR_VERSION}.${LIBSYCL_MINOR_VERSION}.${LIBSYCL_PATCH_VERSION}")
+
+#===============================================================================
+# Setup Compiler Flags
+#===============================================================================
+
+if(MSVC)
+  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+  # Skip asynchronous C++ exceptions catching and assume "extern C" functions
+  # never throw C++ exceptions.
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
+
+  # Add PDB debug information
+  list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
+  include(CheckLinkerFlag)
+  check_linker_flag(CXX "LINKER:/DEBUG" LINKER_SUPPORTS_DEBUG)
+  if(LINKER_SUPPORTS_DEBUG)
+    # sccache is not compatible with /Zi flag
+    if (CMAKE_CXX_COMPILER_LAUNCHER STREQUAL "sccache")
+      # CMake may put /Zi by default
+      if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
+        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
+      elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
+        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+      elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
+      endif()
+      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7")
+    else()
+      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi")
+    endif()
+    add_link_options("LINKER:/DEBUG")
+
+    # Enable unreferenced removal and ICF in Release mode.
+    check_linker_flag(CXX "LINKER:/OPT:REF,/OPT:ICF" LINKER_SUPPORTS_OPTS)
+    if (LINKER_SUPPORTS_OPTS AND uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE")
+      add_link_options("LINKER:/OPT:REF" "LINKER:/OPT:ICF")
+    endif()
+  endif()
+endif()
+
+# Enable all warnings by default
+if (MSVC)
+  set(CMAKE_CXX_FLAGS "/W4 ${CMAKE_CXX_FLAGS}")
+else ()
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-deprecated-declarations")
+endif()
+
+if(LIBSYCL_ENABLE_WERROR)
+  if(MSVC)
+    set(CMAKE_CXX_FLAGS "/WX ${CMAKE_CXX_FLAGS}")
+    add_definitions(
+      -wd4996 # Suppress 'function': was declared deprecated'
+    )
+  else()
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+  endif()
+endif()
+
+# This is a workaround to detect changes (add or modify) in subtree which
+# are not detected by copy_directory command.
+# TODO: detect and process remove header/directory case
+file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_INCLUDE_DIR}/sycl/*")
+
+string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
+  OUT_HEADERS_IN_SYCL_DIR "${HEADERS_IN_SYCL_DIR}")
+
+# Copy SYCL headers from sources to build directory
+add_custom_target(sycl-headers
+DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
+
+add_custom_command(
+  OUTPUT  ${OUT_HEADERS_IN_SYCL_DIR}
+  DEPENDS ${HEADERS_IN_SYCL_DIR}
+  COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
+  COMMENT "Copying SYCL headers...")
+
+message(WARNING "${LIBSYCL_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl")
+install(DIRECTORY "${LIBSYCL_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INSTALL_INCLUDE_DIR} COMPONENT sycl-headers)
+
+if (WIN32)
+  set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})
+  if (MSVC)
+    list(APPEND LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION}d)
+  endif()
+else()
+  set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME})
+endif()
+
+if (LLVM_ENABLE_ASSERTIONS AND NOT LIBSYCL_DISABLE_STL_ASSERTIONS AND NOT WIN32)
+  add_definitions(-D_GLIBCXX_ASSERTIONS=1)
+endif()
+
+add_subdirectory(src)
+
+add_custom_target(libsycl-runtime-libraries
+  DEPENDS ${LIBSYCL_RT_LIBS}
+)
\ No newline at end of file
diff --git a/libsycl/LICENSE.txt b/libsycl/LICENSE.txt
new file mode 100644
index 0000000000000..5715176572a46
--- /dev/null
+++ b/libsycl/LICENSE.txt
@@ -0,0 +1,278 @@
+==============================================================================
+The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
+==============================================================================
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+    1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+    2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+    3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+    4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+    5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+    6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+    7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+    8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+    9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+    END OF TERMS AND CONDITIONS
+
+    APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+    Copyright [yyyy] [name of copyright owner]
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+
+---- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+==============================================================================
+Software from third parties included in the LLVM Project:
+==============================================================================
+The LLVM Project contains third party software which is under different license
+terms. All such code will be identified clearly using at least one of two
+mechanisms:
+1) It will be in a separate directory tree with its own `LICENSE.txt` or
+   `LICENSE` file at the top containing the specific license and restrictions
+   which apply to that software, or
+2) It will contain specific license and restriction terms at the top of every
+   file.
+
+==============================================================================
+Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy):
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
diff --git a/libsycl/README.md b/libsycl/README.md
new file mode 100644
index 0000000000000..853eeef42c4d5
--- /dev/null
+++ b/libsycl/README.md
@@ -0,0 +1,5 @@
+This directory and its subdirectories contain source code for llvm-libsycl,
+an implementation of the SYCL runtime library.
+
+LLVM is open source software. You may freely distribute it under the terms of
+the license agreement found in LICENSE.txt.
\ No newline at end of file
diff --git a/libsycl/docs/index.rst b/libsycl/docs/index.rst
new file mode 100644
index 0000000000000..ddab108816f22
--- /dev/null
+++ b/libsycl/docs/index.rst
@@ -0,0 +1,59 @@
+.. _index:
+
+==============================
+"libsycl" SYCL runtime library
+==============================
+
+Overview
+========
+
+libsycl is an implementation of the SYCL runtime library as defined by the
+`SYCL 2020 specification <https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html>`_.
+
+libsycl runtime library and headers require C++17 support or higher.
+
+Current Status
+==============
+
+The implementation is in the very early stages of upstreaming. The first milestone is to get
+support for a simple SYCL application with device code using Unified Shared Memory:
+
+.. code-block:: c++
+
+   #include <sycl/sycl.hpp>
+   
+   class TestKernel;
+   
+   int main() {
+     sycl::queue q;
+   
+     const size_t dataSize = 32;
+     int *dataPtr = sycl::malloc_shared<int>(32, q);
+     for (int i = 0; i < dataSize; ++i)
+       dataPtr[i] = 0;
+   
+     q.submit([&](sycl::handler &cgh) {
+       cgh.parallel_for<TestKernel>(
+           sycl::range<1>(dataSize),
+           [=](sycl::id<1> idx) { dataPtr[idx] = idx[0]; });
+     });
+     q.wait();
+   
+     for (int i = 0; i < dataSize; ++i)
+       if (dataPtr[i] != i) return 1;
+   
+     free(dataPtr, q);
+   
+     return 0;
+   }
+
+This requires at least partial support of the following functionality on the libsycl side:
+  * sycl::platform class
+  * sycl::device class
+  * sycl::context class
+  * sycl::queue class
+  * sycl::handler class
+  * sycl::id and sycl::range classes
+  * Unified shared memory allocation/deallocation
+  * Program manager, an internal component for retrieving and using device images from the fat binary
+  
\ No newline at end of file
diff --git a/libsycl/include/sycl/detail/export.hpp b/libsycl/include/sycl/detail/export.hpp
new file mode 100644
index 0000000000000..5c89013b60e67
--- /dev/null
+++ b/libsycl/include/sycl/detail/export.hpp
@@ -0,0 +1,44 @@
+//==---------------- export.hpp - SYCL standard header file ----------------==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#pragma once
+
+#ifndef __SYCL_DEVICE_ONLY__
+#ifndef __SYCL_EXPORT
+#ifdef _WIN32
+
+// MSVC discourages export of classes, that use STL class in API. This
+// results in a warning, treated as compile error. Silence C4251 to workaround.
+#pragma warning(disable : 4251)
+#pragma warning(disable : 4275)
+
+#define __SYCL_DLL_LOCAL
+
+#if __SYCL_BUILD_SYCL_DLL
+#define __SYCL_EXPORT __declspec(dllexport)
+#define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllexport, deprecated(x))
+#else
+#define __SYCL_EXPORT __declspec(dllimport)
+#define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllimport, deprecated(x))
+#endif //__SYCL_BUILD_SYCL_DLL
+#else  // _WIN32
+
+#define __SYCL_DLL_LOCAL __attribute__((visibility("hidden")))
+
+#define __SYCL_EXPORT __attribute__((visibility("default")))
+#define __SYCL_EXPORT_DEPRECATED(x)                                            \
+  __attribute__((visibility("default"), deprecated(x)))
+#endif // _WIN32
+#endif // __SYCL_EXPORT
+#else
+#ifndef __SYCL_EXPORT
+#define __SYCL_EXPORT
+#define __SYCL_EXPORT_DEPRECATED(x)
+#define __SYCL_DLL_LOCAL
+#endif
+#endif // __SYCL_DEVICE_ONLY__
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
new file mode 100644
index 0000000000000..8b69168f0dabd
--- /dev/null
+++ b/libsycl/include/sycl/platform.hpp
@@ -0,0 +1,24 @@
+//==---------------- platform.hpp - SYCL platform --------------------------==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#pragma once
+
+#include <sycl/detail/export.hpp>
+
+namespace sycl {
+inline namespace _V1 {
+/// Encapsulates a SYCL platform on which kernels may be executed.
+///
+/// \ingroup sycl_api
+class __SYCL_EXPORT platform {
+public:
+  /// Constructs a SYCL platform using the default device.
+  platform();
+
+}; // class platform
+} // namespace _V1
+} // namespace sycl
diff --git a/libsycl/include/sycl/sycl.hpp b/libsycl/include/sycl/sycl.hpp
new file mode 100644
index 0000000000000..ecfb20849292b
--- /dev/null
+++ b/libsycl/include/sycl/sycl.hpp
@@ -0,0 +1,9 @@
+//==------------ sycl.hpp - SYCL2020 standard header file ------------------==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <sycl/platform.hpp>
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
new file mode 100644
index 0000000000000..a79b08450d479
--- /dev/null
+++ b/libsycl/src/CMakeLists.txt
@@ -0,0 +1,160 @@
+function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
+  # Add an optional argument so we can get the library name to
+  # link with for Windows Debug version
+  cmake_parse_arguments(ARG "" "IMPLIB_NAME" "COMPILE_OPTIONS;SOURCES" ${ARGN})
+
+  add_library(${LIB_OBJ_NAME} OBJECT ${ARG_SOURCES})
+
+  # Common compilation step setup
+  target_compile_definitions(${LIB_OBJ_NAME} PRIVATE $<$<BOOL:${MSVC}>:__SYCL_BUILD_SYCL_DLL>)
+  target_include_directories(
+    ${LIB_OBJ_NAME}
+    PRIVATE
+      ${CMAKE_CURRENT_SOURCE_DIR}
+      "${libsycl_inc_dir}"
+  )
+
+  add_library(${LIB_NAME} SHARED
+              $<TARGET_OBJECTS:${LIB_OBJ_NAME}>)
+
+  # Unlike for libsycl, for LLVMSupport we have only one version for a given build,
+  # so, we link LLVMSupport lib to matching libsycl version only.
+  if (LIBSYCL_ENABLE_STACK_PRINTING)
+    if(NOT MSVC OR (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ARG_COMPILE_OPTIONS MATCHES ".*MDd.*") OR
+      (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ARG_COMPILE_OPTIONS MATCHES ".*MDd.*"))
+        add_dependencies(${LIB_NAME} LLVMSupport)
+        target_compile_definitions(${LIB_OBJ_NAME} PUBLIC ENABLE_STACK_TRACE)
+        target_link_libraries(${LIB_NAME} PRIVATE LLVMSupport)
+    endif()
+  endif()
+
+  # TODO: Enabled for MSVC
+  if (NOT MSVC AND LIBSYCL_DEBUG_SYMBOLS)
+    separate_arguments(CMAKE_CXX_FLAGS_DEBUG_SEPARATED UNIX_COMMAND "${CMAKE_CXX_FLAGS_DEBUG}")
+    target_compile_options(${LIB_NAME} PRIVATE ${CMAKE_CXX_FLAGS_DEBUG_SEPARATED})
+  endif()
+
+  if (ARG_COMPILE_OPTIONS)
+    target_compile_options(${LIB_OBJ_NAME} PRIVATE ${ARG_COMPILE_OPTIONS})
+  endif()
+
+  add_dependencies(${LIB_OBJ_NAME}
+    sycl-headers
+  )
+
+  set_target_properties(${LIB_NAME} PROPERTIES LINKER_LANGUAGE CXX)
+
+  if (WIN32)
+    target_link_libraries(${LIB_NAME} PRIVATE shlwapi)
+    if (ARG_IMPLIB_NAME)
+      add_custom_command(
+        TARGET ${LIB_NAME} POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy
+        ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${LIB_NAME}.lib ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${ARG_IMPLIB_NAME}.lib
+        COMMENT "Creating version-agnostic copy of the import library.")
+      install(
+        FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${ARG_IMPLIB_NAME}.lib
+        DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl)
+    endif()
+  endif()
+
+  if (MSVC)
+    # Install stripped PDB
+    check_linker_flag(CXX "LINKER:/PDBSTRIPPED:${LIB_NAME}.stripped.pdb"
+                          LINKER_SUPPORTS_PDBSTRIPPED)
+    if(LINKER_SUPPORTS_PDBSTRIPPED)
+      target_link_options(${LIB_NAME}
+                          PRIVATE "LINKER:/PDBSTRIPPED:${LIB_NAME}.stripped.pdb")
+      install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.stripped.pdb"
+              DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+              RENAME "${LIB_NAME}.pdb"
+              COMPONENT ${LIB_NAME}
+              OPTIONAL)
+    endif()
+  else()
+    target_compile_options(${LIB_OBJ_NAME} PUBLIC
+                           -fvisibility=hidden -fvisibility-inlines-hidden)
+
+    # Sycl math built-in macros cause a GCC 4.6 'note' to be output repeatedly.
+    # => note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
+    # Seems to be no way to suppress it except use -Wno-psabi
+    target_compile_options(${LIB_OBJ_NAME} PUBLIC -Wno-psabi)
+
+    if (UNIX AND NOT APPLE)
+      set(linker_script "${CMAKE_CURRENT_SOURCE_DIR}/ld-version-script.txt")
+      target_link_libraries(
+          ${LIB_NAME} PRIVATE "-Wl,--version-script=${linker_script}")
+      set_target_properties(${LIB_NAME} PROPERTIES LINK_DEPENDS ${linker_script})
+    endif()
+  endif()
+
+  find_package(Threads REQUIRED)
+
+  target_link_libraries(${LIB_NAME}
+    PRIVATE
+      ${CMAKE_DL_LIBS}
+      ${CMAKE_THREAD_LIBS_INIT}
+  )
+
+  # Workaround for a bug in GCC version 5 and higher.
+  # More information https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899
+  if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND
+      CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
+    target_link_libraries(${ARGV0} PRIVATE gcc_s gcc)
+  endif()
+
+  set_target_properties(${LIB_NAME} PROPERTIES
+                        VERSION ${LIBSYCL_VERSION_STRING}
+                        SOVERSION ${LIBSYCL_VERSION_STRING})
+
+  check_cxx_compiler_flag(-Winstantiation-after-specialization
+    HAS_INST_AFTER_SPEC)
+  if (HAS_INST_AFTER_SPEC)
+    target_compile_options(${LIB_OBJ_NAME} PRIVATE
+      -Winstantiation-after-specialization)
+  endif()
+endfunction(add_sycl_rt_library)
+
+set(LIBSYCL_SOURCES
+    "platform.cpp"
+)
+
+if (MSVC)
+  # MSVC provides two incompatible build variants for its CRT: release and debug
+  # To avoid potential issues in user code we also need to provide two kinds
+  # of SYCL Runtime Library for release and debug configurations.
+  foreach(flag_var
+      CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+      CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+    string(REGEX REPLACE "/MDd" "" ${flag_var} "${${flag_var}}")
+    string(REGEX REPLACE "/MTd" "" ${flag_var} "${${flag_var}}")
+    string(REGEX REPLACE "/MD" "" ${flag_var} "${${flag_var}}")
+    string(REGEX REPLACE "/MT" "" ${flag_var} "${${flag_var}}")
+  endforeach()
+
+  set(WIN_DUPE "1")
+  add_sycl_rt_library(sycl${LIBSYCL_MAJOR_VERSION}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME sycld)
+  unset(WIN_DUPE)
+  add_library(sycld ALIAS sycl${LIBSYCL_MAJOR_VERSION}d)
+
+  set(LIBSYCL_EXTRA_OPTS "/MD")
+endif()
+
+if (WIN32)
+set(LIB_NAME "sycl${LIBSYCL_MAJOR_VERSION}")
+else()
+set(LIB_NAME "sycl")
+endif()
+# Version-agnostic name of the import library, has effect on Windows only.
+set(IMPLIB_NAME "sycl")
+
+add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${LIBSYCL_EXTRA_OPTS} SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME})
+
+if (WIN32)
+  add_library(sycl ALIAS ${LIB_NAME})
+endif()
+
+install(TARGETS ${LIBSYCL_RT_LIBS}
+  ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl
+  LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl
+  RUNTIME DESTINATION "bin" COMPONENT libsycl)
diff --git a/libsycl/src/ld-version-script.txt b/libsycl/src/ld-version-script.txt
new file mode 100644
index 0000000000000..87354ca96b77b
--- /dev/null
+++ b/libsycl/src/ld-version-script.txt
@@ -0,0 +1,22 @@
+{
+  /* Do not use extern "C++" matcher for C++ functions,                     */
+  /* because vtable and typeinfo symbols make extern "C++" patterns more    */
+  /* complicated than patterns against mangled names.                       */
+  /*                                                                        */
+  /* With extern "C++" we have to match for "vtable for sycl::foo", but */
+  /* not match for "vtable for std::__internal<sycl::foo>".             */
+
+  global:
+    /* Export everything from sycl namespace */
+    _ZNK4sycl*;  /* function */
+    _ZN4sycl*;   /* function */
+    _ZTIN4sycl*; /* typeinfo */
+    _ZTSN4sycl*; /* typeinfo name */
+    _ZTVN4sycl*; /* vtable */
+
+    /* Some functions are also in __host_std, export them as well */
+    _ZN10__host_std*;
+
+  local:
+    *;
+};
diff --git a/libsycl/src/platform.cpp b/libsycl/src/platform.cpp
new file mode 100644
index 0000000000000..0b0d2f1fa005a
--- /dev/null
+++ b/libsycl/src/platform.cpp
@@ -0,0 +1,17 @@
+//==---------------- platform.cpp - SYCL platform --------------------------==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <sycl/platform.hpp>
+
+#include <stdexcept>
+
+namespace sycl {
+inline namespace _V1 {
+platform::platform() { throw std::runtime_error("Unimplemented"); }
+} // namespace _V1
+} // namespace sycl
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index e76bc9b9ab778..8eeb9eda71138 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -175,7 +175,7 @@ endif ()
 # As we migrate runtimes to using the bootstrapping build, the set of default runtimes
 # should grow as we remove those runtimes from LLVM_ENABLE_PROJECTS above.
 set(LLVM_DEFAULT_RUNTIMES "libcxx;libcxxabi;libunwind")
-set(LLVM_SUPPORTED_RUNTIMES "libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp;llvm-libgcc;offload;flang-rt")
+set(LLVM_SUPPORTED_RUNTIMES "libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp;llvm-libgcc;offload;flang-rt;libsycl")
 set(LLVM_ENABLE_RUNTIMES "" CACHE STRING
   "Semicolon-separated list of runtimes to build, or \"all\" (${LLVM_DEFAULT_RUNTIMES}). Supported runtimes are ${LLVM_SUPPORTED_RUNTIMES}.")
 if(LLVM_ENABLE_RUNTIMES STREQUAL "all")
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 437dcb1365b18..605c908f71e99 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -36,7 +36,7 @@ list(INSERT CMAKE_MODULE_PATH 0
 # We order libraries to mirror roughly how they are layered, except that compiler-rt can depend
 # on libc++, so we put it after.
 set(LLVM_DEFAULT_RUNTIMES "libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp;offload")
-set(LLVM_SUPPORTED_RUNTIMES "${LLVM_DEFAULT_RUNTIMES};llvm-libgcc;flang-rt")
+set(LLVM_SUPPORTED_RUNTIMES "${LLVM_DEFAULT_RUNTIMES};llvm-libgcc;flang-rt;libsycl")
 set(LLVM_ENABLE_RUNTIMES "" CACHE STRING
   "Semicolon-separated list of runtimes to build, or \"all\" (${LLVM_DEFAULT_RUNTIMES}). Supported runtimes are ${LLVM_SUPPORTED_RUNTIMES}.")
 if(LLVM_ENABLE_RUNTIMES STREQUAL "all" )

>From 6a8fba675ce7f0ead0c725661ca8a5ca3b2d59e3 Mon Sep 17 00:00:00 2001
From: Sergey Semenov <sergey.semenov at intel.com>
Date: Thu, 10 Apr 2025 07:33:38 -0700
Subject: [PATCH 02/31] Apply some comments

---
 libsycl/.clang-tidy                    | 18 +++++++++++++++++-
 libsycl/CMakeLists.txt                 |  8 ++------
 libsycl/docs/index.rst                 |  7 ++++---
 libsycl/include/sycl/detail/export.hpp | 17 ++++++++++-------
 libsycl/include/sycl/platform.hpp      |  6 +++++-
 libsycl/include/sycl/sycl.hpp          |  5 +++++
 libsycl/src/CMakeLists.txt             |  7 -------
 libsycl/src/ld-version-script.txt      |  3 ---
 8 files changed, 43 insertions(+), 28 deletions(-)

diff --git a/libsycl/.clang-tidy b/libsycl/.clang-tidy
index 0af3553a0cad3..cdc7a2981a41d 100644
--- a/libsycl/.clang-tidy
+++ b/libsycl/.clang-tidy
@@ -1 +1,17 @@
-Checks: '-*,clang-analyzer-*,clang-diagnostic-*,cppcoreguidelines-*,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-member-init,google-*,-cppcoreguidelines-pro-type-union-access,-google-build-using-namespace,-google-explicit-constructor,-google-runtime-references,misc-*,-misc-macro-parentheses,-misc-unused-parameters'
+Checks: >
+  -*,
+  clang-analyzer-*,
+  clang-diagnostic-*,
+  cppcoreguidelines-*,
+  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
+  -cppcoreguidelines-pro-bounds-constant-array-index,
+  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
+  -cppcoreguidelines-pro-type-member-init,
+  -cppcoreguidelines-pro-type-union-access,
+  google-*,
+  -google-build-using-namespace,
+  -google-explicit-constructor,
+  -google-runtime-references,
+  misc-*,
+  -misc-macro-parentheses,
+  -misc-unused-parameters
diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 80ff063bf8c21..69d8d3e934634 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -120,9 +120,6 @@ endif()
 if(LIBSYCL_ENABLE_WERROR)
   if(MSVC)
     set(CMAKE_CXX_FLAGS "/WX ${CMAKE_CXX_FLAGS}")
-    add_definitions(
-      -wd4996 # Suppress 'function': was declared deprecated'
-    )
   else()
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
   endif()
@@ -130,7 +127,7 @@ endif()
 
 # This is a workaround to detect changes (add or modify) in subtree which
 # are not detected by copy_directory command.
-# TODO: detect and process remove header/directory case
+# TODO: Detect removal in the source tree and reflect in the install directory.
 file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_INCLUDE_DIR}/sycl/*")
 
 string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
@@ -138,7 +135,7 @@ string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
 
 # Copy SYCL headers from sources to build directory
 add_custom_target(sycl-headers
-DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
+  DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
 
 add_custom_command(
   OUTPUT  ${OUT_HEADERS_IN_SYCL_DIR}
@@ -146,7 +143,6 @@ add_custom_command(
   COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
   COMMENT "Copying SYCL headers...")
 
-message(WARNING "${LIBSYCL_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl")
 install(DIRECTORY "${LIBSYCL_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INSTALL_INCLUDE_DIR} COMPONENT sycl-headers)
 
 if (WIN32)
diff --git a/libsycl/docs/index.rst b/libsycl/docs/index.rst
index ddab108816f22..9348e92c4b7c8 100644
--- a/libsycl/docs/index.rst
+++ b/libsycl/docs/index.rst
@@ -39,12 +39,13 @@ support for a simple SYCL application with device code using Unified Shared Memo
      });
      q.wait();
    
+     bool error = false;
      for (int i = 0; i < dataSize; ++i)
-       if (dataPtr[i] != i) return 1;
+       if (dataPtr[i] != i) error = true;
    
      free(dataPtr, q);
    
-     return 0;
+     return error;
    }
 
 This requires at least partial support of the following functionality on the libsycl side:
@@ -55,5 +56,5 @@ This requires at least partial support of the following functionality on the lib
   * sycl::handler class
   * sycl::id and sycl::range classes
   * Unified shared memory allocation/deallocation
-  * Program manager, an internal component for retrieving and using device images from the fat binary
+  * Program manager, an internal component for retrieving and using device images from the multi-architectural binaries
   
\ No newline at end of file
diff --git a/libsycl/include/sycl/detail/export.hpp b/libsycl/include/sycl/detail/export.hpp
index 5c89013b60e67..00137cbc91a31 100644
--- a/libsycl/include/sycl/detail/export.hpp
+++ b/libsycl/include/sycl/detail/export.hpp
@@ -6,17 +6,13 @@
 //
 //===----------------------------------------------------------------------===//
 
-#pragma once
+#ifndef __LIBSYCL_DETAIL_EXPORT_HPP
+#define __LIBSYCL_DETAIL_EXPORT_HPP
 
 #ifndef __SYCL_DEVICE_ONLY__
 #ifndef __SYCL_EXPORT
 #ifdef _WIN32
 
-// MSVC discourages export of classes, that use STL class in API. This
-// results in a warning, treated as compile error. Silence C4251 to workaround.
-#pragma warning(disable : 4251)
-#pragma warning(disable : 4275)
-
 #define __SYCL_DLL_LOCAL
 
 #if __SYCL_BUILD_SYCL_DLL
@@ -26,6 +22,7 @@
 #define __SYCL_EXPORT __declspec(dllimport)
 #define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllimport, deprecated(x))
 #endif //__SYCL_BUILD_SYCL_DLL
+
 #else  // _WIN32
 
 #define __SYCL_DLL_LOCAL __attribute__((visibility("hidden")))
@@ -33,12 +30,18 @@
 #define __SYCL_EXPORT __attribute__((visibility("default")))
 #define __SYCL_EXPORT_DEPRECATED(x)                                            \
   __attribute__((visibility("default"), deprecated(x)))
+
 #endif // _WIN32
 #endif // __SYCL_EXPORT
-#else
+
+#else // __SYCL_DEVICE_ONLY__
+
 #ifndef __SYCL_EXPORT
 #define __SYCL_EXPORT
 #define __SYCL_EXPORT_DEPRECATED(x)
 #define __SYCL_DLL_LOCAL
 #endif
+
 #endif // __SYCL_DEVICE_ONLY__
+
+#endif // __LIBSYCL_DETAIL_EXPORT_HPP
\ No newline at end of file
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
index 8b69168f0dabd..a4ca97ddfa524 100644
--- a/libsycl/include/sycl/platform.hpp
+++ b/libsycl/include/sycl/platform.hpp
@@ -5,7 +5,9 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
-#pragma once
+
+#ifndef __LIBSYCL_PLATFORM_HPP
+#define __LIBSYCL_PLATFORM_HPP
 
 #include <sycl/detail/export.hpp>
 
@@ -22,3 +24,5 @@ class __SYCL_EXPORT platform {
 }; // class platform
 } // namespace _V1
 } // namespace sycl
+
+#endif // __LIBSYCL_PLATFORM_HPP
\ No newline at end of file
diff --git a/libsycl/include/sycl/sycl.hpp b/libsycl/include/sycl/sycl.hpp
index ecfb20849292b..7e7e494109212 100644
--- a/libsycl/include/sycl/sycl.hpp
+++ b/libsycl/include/sycl/sycl.hpp
@@ -6,4 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
+#ifndef __LIBSYCL_SYCL_HPP
+#define __LIBSYCL_SYCL_HPP
+
 #include <sycl/platform.hpp>
+
+#endif // __LIBSYCL_SYCL_HPP
\ No newline at end of file
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index a79b08450d479..1523561d3e0c3 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -96,13 +96,6 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
       ${CMAKE_THREAD_LIBS_INIT}
   )
 
-  # Workaround for a bug in GCC version 5 and higher.
-  # More information https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899
-  if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND
-      CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
-    target_link_libraries(${ARGV0} PRIVATE gcc_s gcc)
-  endif()
-
   set_target_properties(${LIB_NAME} PROPERTIES
                         VERSION ${LIBSYCL_VERSION_STRING}
                         SOVERSION ${LIBSYCL_VERSION_STRING})
diff --git a/libsycl/src/ld-version-script.txt b/libsycl/src/ld-version-script.txt
index 87354ca96b77b..90bfe2ac7309f 100644
--- a/libsycl/src/ld-version-script.txt
+++ b/libsycl/src/ld-version-script.txt
@@ -14,9 +14,6 @@
     _ZTSN4sycl*; /* typeinfo name */
     _ZTVN4sycl*; /* vtable */
 
-    /* Some functions are also in __host_std, export them as well */
-    _ZN10__host_std*;
-
   local:
     *;
 };

>From 8a6463fe4fd1015636910f7e0dcdd0f949d58887 Mon Sep 17 00:00:00 2001
From: Sergey Semenov <sergey.semenov at intel.com>
Date: Mon, 14 Apr 2025 07:52:16 -0700
Subject: [PATCH 03/31] A few missed changes

---
 libsycl/CMakeLists.txt     | 2 +-
 libsycl/src/CMakeLists.txt | 5 -----
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 69d8d3e934634..970423029d912 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -114,7 +114,7 @@ endif()
 if (MSVC)
   set(CMAKE_CXX_FLAGS "/W4 ${CMAKE_CXX_FLAGS}")
 else ()
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-deprecated-declarations")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
 endif()
 
 if(LIBSYCL_ENABLE_WERROR)
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index 1523561d3e0c3..d8f6303789a7d 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -75,11 +75,6 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
     target_compile_options(${LIB_OBJ_NAME} PUBLIC
                            -fvisibility=hidden -fvisibility-inlines-hidden)
 
-    # Sycl math built-in macros cause a GCC 4.6 'note' to be output repeatedly.
-    # => note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
-    # Seems to be no way to suppress it except use -Wno-psabi
-    target_compile_options(${LIB_OBJ_NAME} PUBLIC -Wno-psabi)
-
     if (UNIX AND NOT APPLE)
       set(linker_script "${CMAKE_CURRENT_SOURCE_DIR}/ld-version-script.txt")
       target_link_libraries(

>From 998fb9b945352eeced18ab85c08f27686b8295e7 Mon Sep 17 00:00:00 2001
From: Sergey Semenov <sergey.semenov at intel.com>
Date: Mon, 14 Apr 2025 08:00:47 -0700
Subject: [PATCH 04/31] Fix path

---
 libsycl/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 970423029d912..883fe46d85c9c 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -59,7 +59,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
 # The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
-# llvm/clang/lib/Driver/CMakeLists.txt.
+# clang/lib/Driver/CMakeLists.txt.
 #
 # See doc/developer/ABIPolicyGuide.md for the meaning when in the middle of
 # development cycle.

>From ca41e908f14df03cf8e46e5c441ee41ce1ff1cc9 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 20 May 2025 04:02:59 -0700
Subject: [PATCH 05/31] code-review comments fix 1

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt     |  9 +--------
 libsycl/src/CMakeLists.txt | 17 -----------------
 2 files changed, 1 insertion(+), 25 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 883fe46d85c9c..1866f437821a0 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -17,9 +17,6 @@ set(CMAKE_CXX_EXTENSIONS OFF)
 #===============================================================================
 
 option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl project" OFF)
-option(LIBSYCL_DISABLE_STL_ASSERTIONS "Disable assertions in STL containers when building libsycl" ON)
-option(LIBSYCL_ENABLE_STACK_PRINTING "Enables stack printing on crashes of SYCL applications" OFF)
-option(LIBSYCL_DEBUG_SYMBOLS "Builds SYCL runtime libraries with debug symbols" OFF)
 
 #===============================================================================
 # Configure System
@@ -27,7 +24,7 @@ option(LIBSYCL_DEBUG_SYMBOLS "Builds SYCL runtime libraries with debug symbols"
 
 set(LIBSYCL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING
     "Path where libsycl headers should be installed.")
-set(LIBSYCL_INSTALL_RUNTIME_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
+set(LIBSYCL_INSTALL_LIBRARY_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
     "Path where built libsycl runtime libraries should be installed.")
 
 set(LIBSYCL_SHARED_OUTPUT_NAME "sycl" CACHE STRING "Output name for the shared libsycl runtime library.")
@@ -154,10 +151,6 @@ else()
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME})
 endif()
 
-if (LLVM_ENABLE_ASSERTIONS AND NOT LIBSYCL_DISABLE_STL_ASSERTIONS AND NOT WIN32)
-  add_definitions(-D_GLIBCXX_ASSERTIONS=1)
-endif()
-
 add_subdirectory(src)
 
 add_custom_target(libsycl-runtime-libraries
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index d8f6303789a7d..22a688799f5d7 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -17,23 +17,6 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
   add_library(${LIB_NAME} SHARED
               $<TARGET_OBJECTS:${LIB_OBJ_NAME}>)
 
-  # Unlike for libsycl, for LLVMSupport we have only one version for a given build,
-  # so, we link LLVMSupport lib to matching libsycl version only.
-  if (LIBSYCL_ENABLE_STACK_PRINTING)
-    if(NOT MSVC OR (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ARG_COMPILE_OPTIONS MATCHES ".*MDd.*") OR
-      (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ARG_COMPILE_OPTIONS MATCHES ".*MDd.*"))
-        add_dependencies(${LIB_NAME} LLVMSupport)
-        target_compile_definitions(${LIB_OBJ_NAME} PUBLIC ENABLE_STACK_TRACE)
-        target_link_libraries(${LIB_NAME} PRIVATE LLVMSupport)
-    endif()
-  endif()
-
-  # TODO: Enabled for MSVC
-  if (NOT MSVC AND LIBSYCL_DEBUG_SYMBOLS)
-    separate_arguments(CMAKE_CXX_FLAGS_DEBUG_SEPARATED UNIX_COMMAND "${CMAKE_CXX_FLAGS_DEBUG}")
-    target_compile_options(${LIB_NAME} PRIVATE ${CMAKE_CXX_FLAGS_DEBUG_SEPARATED})
-  endif()
-
   if (ARG_COMPILE_OPTIONS)
     target_compile_options(${LIB_OBJ_NAME} PRIVATE ${ARG_COMPILE_OPTIONS})
   endif()

>From 6ba565abab34441daa720d9e4078bd6f183bf222 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 20 May 2025 04:11:43 -0700
Subject: [PATCH 06/31] update header to llvm standards

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/include/sycl/detail/export.hpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libsycl/include/sycl/detail/export.hpp b/libsycl/include/sycl/detail/export.hpp
index 00137cbc91a31..dbabdb5d5b0b2 100644
--- a/libsycl/include/sycl/detail/export.hpp
+++ b/libsycl/include/sycl/detail/export.hpp
@@ -1,10 +1,16 @@
-//==---------------- export.hpp - SYCL standard header file ----------------==//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file contains the declaration of the macroses defining attributes for
+/// exported methods.
+///
+//===----------------------------------------------------------------------===//
 
 #ifndef __LIBSYCL_DETAIL_EXPORT_HPP
 #define __LIBSYCL_DETAIL_EXPORT_HPP
@@ -23,7 +29,7 @@
 #define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllimport, deprecated(x))
 #endif //__SYCL_BUILD_SYCL_DLL
 
-#else  // _WIN32
+#else // _WIN32
 
 #define __SYCL_DLL_LOCAL __attribute__((visibility("hidden")))
 

>From 7610d784a6317df7a8c534532c984b6e34ce0af3 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 21 May 2025 03:36:44 -0700
Subject: [PATCH 07/31] fix comments part 2

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt     |  2 --
 libsycl/README.md          | 23 +++++++++++++++++++----
 libsycl/docs/index.rst     | 23 ++++++-----------------
 libsycl/src/CMakeLists.txt |  7 -------
 4 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 1866f437821a0..1474ad5c73ded 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -24,8 +24,6 @@ option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl projec
 
 set(LIBSYCL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING
     "Path where libsycl headers should be installed.")
-set(LIBSYCL_INSTALL_LIBRARY_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
-    "Path where built libsycl runtime libraries should be installed.")
 
 set(LIBSYCL_SHARED_OUTPUT_NAME "sycl" CACHE STRING "Output name for the shared libsycl runtime library.")
 
diff --git a/libsycl/README.md b/libsycl/README.md
index 853eeef42c4d5..c62ea249c57ed 100644
--- a/libsycl/README.md
+++ b/libsycl/README.md
@@ -1,5 +1,20 @@
-This directory and its subdirectories contain source code for llvm-libsycl,
-an implementation of the SYCL runtime library.
+## SYCL runtime library
 
-LLVM is open source software. You may freely distribute it under the terms of
-the license agreement found in LICENSE.txt.
\ No newline at end of file
+The libsycl subproject is an implementation of the SYCL runtime library as defined by the
+[SYCL 2020 specification](https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html).
+
+Subproject documentation is available at: [SYCL RT documentation](./docs).
+
+libsycl runtime library and headers require C++17 support or higher.
+
+### How to use DPC++
+
+TBD
+
+#### Build from sources
+
+TBD
+
+# License
+
+See [LICENSE](./LICENSE.TXT) for details.
diff --git a/libsycl/docs/index.rst b/libsycl/docs/index.rst
index 9348e92c4b7c8..b2c27841e09ee 100644
--- a/libsycl/docs/index.rst
+++ b/libsycl/docs/index.rst
@@ -1,16 +1,5 @@
 .. _index:
 
-==============================
-"libsycl" SYCL runtime library
-==============================
-
-Overview
-========
-
-libsycl is an implementation of the SYCL runtime library as defined by the
-`SYCL 2020 specification <https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html>`_.
-
-libsycl runtime library and headers require C++17 support or higher.
 
 Current Status
 ==============
@@ -49,12 +38,12 @@ support for a simple SYCL application with device code using Unified Shared Memo
    }
 
 This requires at least partial support of the following functionality on the libsycl side:
-  * sycl::platform class
-  * sycl::device class
-  * sycl::context class
-  * sycl::queue class
-  * sycl::handler class
-  * sycl::id and sycl::range classes
+  * ``sycl::platform`` class
+  * ``sycl::device`` class
+  * ``sycl::context`` class
+  * ``sycl::queue`` class
+  * ``sycl::handler`` class
+  * ``sycl::id`` and ``sycl::range`` classes
   * Unified shared memory allocation/deallocation
   * Program manager, an internal component for retrieving and using device images from the multi-architectural binaries
   
\ No newline at end of file
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index 22a688799f5d7..c449101868328 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -77,13 +77,6 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
   set_target_properties(${LIB_NAME} PROPERTIES
                         VERSION ${LIBSYCL_VERSION_STRING}
                         SOVERSION ${LIBSYCL_VERSION_STRING})
-
-  check_cxx_compiler_flag(-Winstantiation-after-specialization
-    HAS_INST_AFTER_SPEC)
-  if (HAS_INST_AFTER_SPEC)
-    target_compile_options(${LIB_OBJ_NAME} PRIVATE
-      -Winstantiation-after-specialization)
-  endif()
 endfunction(add_sycl_rt_library)
 
 set(LIBSYCL_SOURCES

>From 6b688ad0d7661b2d4a7bb90b10a2834ab283c929 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 21 May 2025 03:48:40 -0700
Subject: [PATCH 08/31] fix comments part 3

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/src/CMakeLists.txt | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index c449101868328..d4f13930b8572 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -83,6 +83,15 @@ set(LIBSYCL_SOURCES
     "platform.cpp"
 )
 
+if (WIN32)
+set(LIB_NAME "sycl${LIBSYCL_MAJOR_VERSION}")
+else()
+set(LIB_NAME "sycl")
+endif()
+
+# Version-agnostic name of the import library, has effect on Windows only.
+set(IMPLIB_NAME "sycl")
+
 if (MSVC)
   # MSVC provides two incompatible build variants for its CRT: release and debug
   # To avoid potential issues in user code we also need to provide two kinds
@@ -96,22 +105,12 @@ if (MSVC)
     string(REGEX REPLACE "/MT" "" ${flag_var} "${${flag_var}}")
   endforeach()
 
-  set(WIN_DUPE "1")
-  add_sycl_rt_library(sycl${LIBSYCL_MAJOR_VERSION}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME sycld)
-  unset(WIN_DUPE)
-  add_library(sycld ALIAS sycl${LIBSYCL_MAJOR_VERSION}d)
+  add_sycl_rt_library(${LIB_NAME}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME}d)
+  add_library(sycld ALIAS ${LIB_NAME}d)
 
   set(LIBSYCL_EXTRA_OPTS "/MD")
 endif()
 
-if (WIN32)
-set(LIB_NAME "sycl${LIBSYCL_MAJOR_VERSION}")
-else()
-set(LIB_NAME "sycl")
-endif()
-# Version-agnostic name of the import library, has effect on Windows only.
-set(IMPLIB_NAME "sycl")
-
 add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${LIBSYCL_EXTRA_OPTS} SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME})
 
 if (WIN32)

>From 0d930efc63f86fe3627a096c851a18328fb784a9 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 22 May 2025 05:55:53 -0700
Subject: [PATCH 09/31] modify versioning

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                        |  9 ++++++---
 .../sycl/detail/{export.hpp => config.hpp}    | 19 +++++++++++++++----
 libsycl/include/sycl/platform.hpp             |  8 +++++++-
 libsycl/include/sycl/sycl.hpp                 |  2 +-
 libsycl/src/version.hpp.in                    | 12 ++++++++++++
 5 files changed, 41 insertions(+), 9 deletions(-)
 rename libsycl/include/sycl/detail/{export.hpp => config.hpp} (68%)
 create mode 100644 libsycl/src/version.hpp.in

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 1474ad5c73ded..e0af10bccb65b 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -55,9 +55,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
 # The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
 # clang/lib/Driver/CMakeLists.txt.
-#
-# See doc/developer/ABIPolicyGuide.md for the meaning when in the middle of
-# development cycle.
 set(LIBSYCL_MAJOR_VERSION 0)
 set(LIBSYCL_MINOR_VERSION 1)
 set(LIBSYCL_PATCH_VERSION 0)
@@ -140,6 +137,12 @@ add_custom_command(
 
 install(DIRECTORY "${LIBSYCL_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INSTALL_INCLUDE_DIR} COMPONENT sycl-headers)
 
+configure_file("src/version.hpp.in" "${LIBSYCL_INSTALL_INCLUDE_DIR}/sycl/version.hpp")
+install(FILES
+  "${LIBSYCL_INSTALL_INCLUDE_DIR}/sycl/version.hpp"
+  DESTINATION "${LIBSYCL_INCLUDE_DIR}/sycl"
+  COMPONENT sycl-headers)
+
 if (WIN32)
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})
   if (MSVC)
diff --git a/libsycl/include/sycl/detail/export.hpp b/libsycl/include/sycl/detail/config.hpp
similarity index 68%
rename from libsycl/include/sycl/detail/export.hpp
rename to libsycl/include/sycl/detail/config.hpp
index dbabdb5d5b0b2..83e67ab9ffb85 100644
--- a/libsycl/include/sycl/detail/export.hpp
+++ b/libsycl/include/sycl/detail/config.hpp
@@ -8,12 +8,23 @@
 ///
 /// \file
 /// This file contains the declaration of the macroses defining attributes for
-/// exported methods.
+/// exported methods and defining API namespaces.
 ///
 //===----------------------------------------------------------------------===//
 
-#ifndef __LIBSYCL_DETAIL_EXPORT_HPP
-#define __LIBSYCL_DETAIL_EXPORT_HPP
+#ifndef __LIBSYCL_DETAIL_CONFIG_HPP
+#define __LIBSYCL_DETAIL_CONFIG_HPP
+
+#include <sycl/version.hpp>
+
+#define __SYCL_BEGIN_UNVERSIONED_NAMESPACE namespace sycl {
+#define __SYCL_END_UNVERSIONED_NAMESPACE }
+
+#define __SYCL_BEGIN_VERSIONED_NAMESPACE                                       \
+  __SYCL_BEGIN_UNVERSIONED_NAMESPACE inline namespace V__LIBSYCL_MAJOR_VERSION {
+#define __SYCL_END_VERSIONED_NAMESPACE                                         \
+  }                                                                            \
+  __SYCL_END_UNVERSIONED_NAMESPACE
 
 #ifndef __SYCL_DEVICE_ONLY__
 #ifndef __SYCL_EXPORT
@@ -50,4 +61,4 @@
 
 #endif // __SYCL_DEVICE_ONLY__
 
-#endif // __LIBSYCL_DETAIL_EXPORT_HPP
\ No newline at end of file
+#endif // __LIBSYCL_DETAIL_CONFIG_HPP
\ No newline at end of file
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
index a4ca97ddfa524..1b8b8a50ced1c 100644
--- a/libsycl/include/sycl/platform.hpp
+++ b/libsycl/include/sycl/platform.hpp
@@ -1,10 +1,16 @@
-//==---------------- platform.hpp - SYCL platform --------------------------==//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file contains the declaration of the Platform class, which encapsulates
+/// a single SYCL platform on which kernel functions may be executed.
+///
+//===----------------------------------------------------------------------===//
 
 #ifndef __LIBSYCL_PLATFORM_HPP
 #define __LIBSYCL_PLATFORM_HPP
diff --git a/libsycl/include/sycl/sycl.hpp b/libsycl/include/sycl/sycl.hpp
index 7e7e494109212..529ed8c3476eb 100644
--- a/libsycl/include/sycl/sycl.hpp
+++ b/libsycl/include/sycl/sycl.hpp
@@ -1,4 +1,4 @@
-//==------------ sycl.hpp - SYCL2020 standard header file ------------------==//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
diff --git a/libsycl/src/version.hpp.in b/libsycl/src/version.hpp.in
new file mode 100644
index 0000000000000..c23df94a920a2
--- /dev/null
+++ b/libsycl/src/version.hpp.in
@@ -0,0 +1,12 @@
+//==------ version.hpp --- SYCL compiler version macro ---------*- C++ -*---==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#cmakedefine __SYCL_COMPILER_VERSION ${__SYCL_COMPILER_VERSION}
+#define __LIBSYCL_MAJOR_VERSION ${SYCL_MAJOR_VERSION}
+#define __LIBSYCL_MINOR_VERSION ${SYCL_MINOR_VERSION}
+#define __LIBSYCL_PATCH_VERSION ${SYCL_PATCH_VERSION}

>From 2acca6158661a1ff5c6d6f462ebb8e109eb9a77b Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 22 May 2025 08:06:06 -0700
Subject: [PATCH 10/31] fix build

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                 |  9 +++------
 libsycl/include/sycl/detail/config.hpp |  2 +-
 libsycl/include/sycl/platform.hpp      | 13 +++++--------
 libsycl/src/CMakeLists.txt             |  2 +-
 libsycl/src/platform.cpp               | 10 +++++-----
 libsycl/src/version.hpp.in             | 16 ++++++++++------
 6 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index e0af10bccb65b..58d46217998ab 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -59,6 +59,7 @@ set(LIBSYCL_MAJOR_VERSION 0)
 set(LIBSYCL_MINOR_VERSION 1)
 set(LIBSYCL_PATCH_VERSION 0)
 set(LIBSYCL_VERSION_STRING "${LIBSYCL_MAJOR_VERSION}.${LIBSYCL_MINOR_VERSION}.${LIBSYCL_PATCH_VERSION}")
+set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING "The inline ABI namespace used by libsycl. It defaults to Vn where `n` is the current ABI version.")
 
 #===============================================================================
 # Setup Compiler Flags
@@ -129,6 +130,8 @@ string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
 add_custom_target(sycl-headers
   DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
 
+configure_file("${LIBSYCL_SOURCE_DIR}/src/version.hpp.in" "${LIBSYCL_INCLUDE_DIR}/sycl/version.hpp")
+
 add_custom_command(
   OUTPUT  ${OUT_HEADERS_IN_SYCL_DIR}
   DEPENDS ${HEADERS_IN_SYCL_DIR}
@@ -137,12 +140,6 @@ add_custom_command(
 
 install(DIRECTORY "${LIBSYCL_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INSTALL_INCLUDE_DIR} COMPONENT sycl-headers)
 
-configure_file("src/version.hpp.in" "${LIBSYCL_INSTALL_INCLUDE_DIR}/sycl/version.hpp")
-install(FILES
-  "${LIBSYCL_INSTALL_INCLUDE_DIR}/sycl/version.hpp"
-  DESTINATION "${LIBSYCL_INCLUDE_DIR}/sycl"
-  COMPONENT sycl-headers)
-
 if (WIN32)
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})
   if (MSVC)
diff --git a/libsycl/include/sycl/detail/config.hpp b/libsycl/include/sycl/detail/config.hpp
index 83e67ab9ffb85..ba203c524a734 100644
--- a/libsycl/include/sycl/detail/config.hpp
+++ b/libsycl/include/sycl/detail/config.hpp
@@ -21,7 +21,7 @@
 #define __SYCL_END_UNVERSIONED_NAMESPACE }
 
 #define __SYCL_BEGIN_VERSIONED_NAMESPACE                                       \
-  __SYCL_BEGIN_UNVERSIONED_NAMESPACE inline namespace V__LIBSYCL_MAJOR_VERSION {
+  __SYCL_BEGIN_UNVERSIONED_NAMESPACE inline namespace __LIBSYCL_ABI_NAMESPACE {
 #define __SYCL_END_VERSIONED_NAMESPACE                                         \
   }                                                                            \
   __SYCL_END_UNVERSIONED_NAMESPACE
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
index 1b8b8a50ced1c..26cbd67b15128 100644
--- a/libsycl/include/sycl/platform.hpp
+++ b/libsycl/include/sycl/platform.hpp
@@ -15,20 +15,17 @@
 #ifndef __LIBSYCL_PLATFORM_HPP
 #define __LIBSYCL_PLATFORM_HPP
 
-#include <sycl/detail/export.hpp>
+#include <sycl/detail/config.hpp>
+
+__SYCL_BEGIN_VERSIONED_NAMESPACE
 
-namespace sycl {
-inline namespace _V1 {
-/// Encapsulates a SYCL platform on which kernels may be executed.
-///
-/// \ingroup sycl_api
 class __SYCL_EXPORT platform {
 public:
   /// Constructs a SYCL platform using the default device.
   platform();
 
 }; // class platform
-} // namespace _V1
-} // namespace sycl
+
+__SYCL_END_VERSIONED_NAMESPACE
 
 #endif // __LIBSYCL_PLATFORM_HPP
\ No newline at end of file
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index d4f13930b8572..b580ab494ab90 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -11,7 +11,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
     ${LIB_OBJ_NAME}
     PRIVATE
       ${CMAKE_CURRENT_SOURCE_DIR}
-      "${libsycl_inc_dir}"
+      "${LIBSYCL_INCLUDE_DIR}"
   )
 
   add_library(${LIB_NAME} SHARED
diff --git a/libsycl/src/platform.cpp b/libsycl/src/platform.cpp
index 0b0d2f1fa005a..821e6366920d5 100644
--- a/libsycl/src/platform.cpp
+++ b/libsycl/src/platform.cpp
@@ -1,4 +1,4 @@
-//==---------------- platform.cpp - SYCL platform --------------------------==//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -10,8 +10,8 @@
 
 #include <stdexcept>
 
-namespace sycl {
-inline namespace _V1 {
+__SYCL_BEGIN_VERSIONED_NAMESPACE
+
 platform::platform() { throw std::runtime_error("Unimplemented"); }
-} // namespace _V1
-} // namespace sycl
+
+__SYCL_END_VERSIONED_NAMESPACE
diff --git a/libsycl/src/version.hpp.in b/libsycl/src/version.hpp.in
index c23df94a920a2..4a4b0942db1d2 100644
--- a/libsycl/src/version.hpp.in
+++ b/libsycl/src/version.hpp.in
@@ -1,12 +1,16 @@
-//==------ version.hpp --- SYCL compiler version macro ---------*- C++ -*---==//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
-
-#cmakedefine __SYCL_COMPILER_VERSION ${__SYCL_COMPILER_VERSION}
-#define __LIBSYCL_MAJOR_VERSION ${SYCL_MAJOR_VERSION}
-#define __LIBSYCL_MINOR_VERSION ${SYCL_MINOR_VERSION}
-#define __LIBSYCL_PATCH_VERSION ${SYCL_PATCH_VERSION}
+///
+/// \file
+/// This file contains the declaration of SYCL RT version macro.
+///
+//===----------------------------------------------------------------------===//
+#define __LIBSYCL_MAJOR_VERSION ${LIBSYCL_MAJOR_VERSION}
+#define __LIBSYCL_MINOR_VERSION ${LIBSYCL_MINOR_VERSION}
+#define __LIBSYCL_PATCH_VERSION ${LIBSYCL_PATCH_VERSION}
+#define __LIBSYCL_ABI_NAMESPACE ${LIBSYCL_ABI_NAMESPACE}
\ No newline at end of file

>From 737a405544db3dc1d93760f9db3c587f2d9038c4 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Mon, 26 May 2025 05:50:05 -0700
Subject: [PATCH 11/31] tiny text updates

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                 |  2 +-
 libsycl/docs/index.rst                 | 22 +++++++++++++++++++++-
 libsycl/include/sycl/detail/config.hpp |  2 +-
 libsycl/include/sycl/platform.hpp      |  2 +-
 libsycl/include/sycl/sycl.hpp          |  2 +-
 libsycl/src/version.hpp.in             |  2 +-
 6 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 58d46217998ab..39e2c81ebc5b4 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -153,4 +153,4 @@ add_subdirectory(src)
 
 add_custom_target(libsycl-runtime-libraries
   DEPENDS ${LIBSYCL_RT_LIBS}
-)
\ No newline at end of file
+)
diff --git a/libsycl/docs/index.rst b/libsycl/docs/index.rst
index b2c27841e09ee..cd33f0f03428d 100644
--- a/libsycl/docs/index.rst
+++ b/libsycl/docs/index.rst
@@ -1,6 +1,5 @@
 .. _index:
 
-
 Current Status
 ==============
 
@@ -46,4 +45,25 @@ This requires at least partial support of the following functionality on the lib
   * ``sycl::id`` and ``sycl::range`` classes
   * Unified shared memory allocation/deallocation
   * Program manager, an internal component for retrieving and using device images from the multi-architectural binaries
+
+To build LLVM with libsycl runtime enabled the following script can be used.
+
+.. code-block:: console
+
+  #!/bin/sh
+
+  build_llvm=`pwd`/build-llvm
+  installprefix=`pwd`/install
+  llvm=`pwd`
+  mkdir -p $build_llvm
+  mkdir -p $installprefix
+
+  cmake -G Ninja -S $llvm/llvm -B $build_llvm \
+        -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
+        -DLLVM_INSTALL_UTILS=ON \
+        -DCMAKE_INSTALL_PREFIX=$installprefix \
+        -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libsycl;libunwind" \
+        -DCMAKE_BUILD_TYPE=Release
+
+  ninja -C $build_llvm install
   
\ No newline at end of file
diff --git a/libsycl/include/sycl/detail/config.hpp b/libsycl/include/sycl/detail/config.hpp
index ba203c524a734..12d9663d5cb27 100644
--- a/libsycl/include/sycl/detail/config.hpp
+++ b/libsycl/include/sycl/detail/config.hpp
@@ -61,4 +61,4 @@
 
 #endif // __SYCL_DEVICE_ONLY__
 
-#endif // __LIBSYCL_DETAIL_CONFIG_HPP
\ No newline at end of file
+#endif // __LIBSYCL_DETAIL_CONFIG_HPP
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
index 26cbd67b15128..e23205a7a66ba 100644
--- a/libsycl/include/sycl/platform.hpp
+++ b/libsycl/include/sycl/platform.hpp
@@ -28,4 +28,4 @@ class __SYCL_EXPORT platform {
 
 __SYCL_END_VERSIONED_NAMESPACE
 
-#endif // __LIBSYCL_PLATFORM_HPP
\ No newline at end of file
+#endif // __LIBSYCL_PLATFORM_HPP
diff --git a/libsycl/include/sycl/sycl.hpp b/libsycl/include/sycl/sycl.hpp
index 529ed8c3476eb..136d97805b0cf 100644
--- a/libsycl/include/sycl/sycl.hpp
+++ b/libsycl/include/sycl/sycl.hpp
@@ -11,4 +11,4 @@
 
 #include <sycl/platform.hpp>
 
-#endif // __LIBSYCL_SYCL_HPP
\ No newline at end of file
+#endif // __LIBSYCL_SYCL_HPP
diff --git a/libsycl/src/version.hpp.in b/libsycl/src/version.hpp.in
index 4a4b0942db1d2..2468a077ce13a 100644
--- a/libsycl/src/version.hpp.in
+++ b/libsycl/src/version.hpp.in
@@ -13,4 +13,4 @@
 #define __LIBSYCL_MAJOR_VERSION ${LIBSYCL_MAJOR_VERSION}
 #define __LIBSYCL_MINOR_VERSION ${LIBSYCL_MINOR_VERSION}
 #define __LIBSYCL_PATCH_VERSION ${LIBSYCL_PATCH_VERSION}
-#define __LIBSYCL_ABI_NAMESPACE ${LIBSYCL_ABI_NAMESPACE}
\ No newline at end of file
+#define __LIBSYCL_ABI_NAMESPACE ${LIBSYCL_ABI_NAMESPACE}

>From 3179c059d3d3aa6c502b57c41c76d84820340385 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 28 May 2025 08:04:30 -0700
Subject: [PATCH 12/31] add fetching of UR

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                        |   5 +
 .../cmake/modules/FetchUnifiedRuntime.cmake   | 390 ++++++++++++++++++
 2 files changed, 395 insertions(+)
 create mode 100644 libsycl/cmake/modules/FetchUnifiedRuntime.cmake

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 39e2c81ebc5b4..8d2595c897e40 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -53,6 +53,11 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
+
+# Download dependency
+include(FetchUnifiedRuntime)
+
 # The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
 # clang/lib/Driver/CMakeLists.txt.
 set(LIBSYCL_MAJOR_VERSION 0)
diff --git a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
new file mode 100644
index 0000000000000..9828164800af1
--- /dev/null
+++ b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
@@ -0,0 +1,390 @@
+#===============================================================================
+# Fetches Unified Runtime used by SYCL language runtime to abstract SYCL open 
+# standard and vendor heterogeneous offload interfaces.
+#
+# This will in time be replaced by the new LLVM Offload interface.
+#
+# Unified Runtime is Apache 2.0 license with LLVM exceptions. 
+#
+#===============================================================================
+
+# Options to override the default behaviour of the FetchContent to include UR
+# source code.
+set(SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO
+  "" CACHE STRING "Override the Unified Runtime FetchContent repository")
+set(SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG
+  "" CACHE STRING "Override the Unified Runtime FetchContent tag")
+
+# Options to disable use of FetchContent to include Unified Runtime source code
+# to improve developer workflow.
+option(SYCL_UR_USE_FETCH_CONTENT
+  "Use FetchContent to acquire the Unified Runtime source code" ON)
+set(SYCL_UR_SOURCE_DIR
+  "" CACHE PATH "Path to root of Unified Runtime repository")
+
+option(SYCL_UR_BUILD_TESTS "Build tests for UR" OFF)
+set(UR_BUILD_TESTS "${SYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
+# UR tests require the examples to be built
+set(UR_BUILD_EXAMPLES "${SYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
+
+set(UR_EXTERNAL_DEPENDENCIES "sycl-headers" CACHE STRING
+  "List of external CMake targets for executables/libraries to depend on" FORCE)
+
+if("level_zero" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_L0 ON)
+endif()
+if("level_zero_v2" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_L0_V2 ON)
+endif()
+if("cuda" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_CUDA ON)
+endif()
+if("hip" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_HIP ON)
+endif()
+if("opencl" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_OPENCL ON)
+  set(UR_OPENCL_ICD_LOADER_LIBRARY OpenCL-ICD CACHE FILEPATH
+    "Path of the OpenCL ICD Loader library" FORCE)
+endif()
+if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
+  set(UR_BUILD_ADAPTER_NATIVE_CPU ON)
+endif()
+
+# Disable errors from warnings while building the UR.
+# And remember origin flags before doing that.
+set(CMAKE_CXX_FLAGS_BAK "${CMAKE_CXX_FLAGS}")
+if(WIN32)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX-")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX-")
+  # FIXME: Unified runtime build fails with /DUNICODE
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /UUNICODE")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /UUNICODE")
+else()
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
+endif()
+
+if(SYCL_UR_USE_FETCH_CONTENT)
+  include(FetchContent)
+
+  # The fetch_adapter_source function can be used to perform a separate content
+  # fetch for a UR adapter (backend), this allows development of adapters to be decoupled
+  # from each other.
+  #
+  # A separate content fetch will not be performed if:
+  # * The adapter name is not present in the SYCL_ENABLE_BACKENDS variable.
+  # * The repo and tag provided match the values of the
+  #   UNIFIED_RUNTIME_REPO/UNIFIED_RUNTIME_TAG variables
+  #
+  # Args:
+  #   * name - Must be the directory name of the adapter
+  #   * repo - A valid Git URL of a Unified Runtime repo
+  #   * tag - A valid Git branch/tag/commit in the Unified Runtime repo
+  function(fetch_adapter_source name repo tag)
+    if(NOT ${name} IN_LIST SYCL_ENABLE_BACKENDS)
+      return()
+    endif()
+    if(repo STREQUAL UNIFIED_RUNTIME_REPO AND
+        tag STREQUAL UNIFIED_RUNTIME_TAG)
+      # If the adapter sources are taken from the main checkout, reset the
+      # adapter specific source path.
+      string(TOUPPER ${name} NAME)
+      set(UR_ADAPTER_${NAME}_SOURCE_DIR ""
+        CACHE PATH "Path to external '${name}' adapter source dir" FORCE)
+      return()
+    endif()
+    message(STATUS
+      "Will fetch Unified Runtime ${name} adapter from ${repo} at ${tag}")
+    set(fetch-name ur-${name})
+    FetchContent_Declare(${fetch-name}
+      GIT_REPOSITORY ${repo} GIT_TAG ${tag})
+    # We don't want to add this repo to the build, only fetch its source.
+    FetchContent_Populate(${fetch-name})
+    # Get the path to the source directory
+    string(TOUPPER ${name} NAME)
+    set(source_dir_var UR_ADAPTER_${NAME}_SOURCE_DIR)
+    FetchContent_GetProperties(${fetch-name} SOURCE_DIR UR_ADAPTER_${NAME}_SOURCE_DIR)
+    # Set the variable which informs UR where to get the adapter source from.
+    set(UR_ADAPTER_${NAME}_SOURCE_DIR
+      "${UR_ADAPTER_${NAME}_SOURCE_DIR}/source/adapters/${name}"
+      CACHE PATH "Path to external '${name}' adapter source dir" FORCE)
+  endfunction()
+
+  set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
+  set(UNIFIED_RUNTIME_TAG d03f19a88e42cb98be9604ff24b61190d1e48727)
+
+  set(UMF_BUILD_EXAMPLES OFF CACHE INTERNAL "EXAMPLES")
+  # Due to the use of dependentloadflag and no installer for UMF and hwloc we need
+  # to link statically on windows
+  if(WIN32)
+    set(UMF_BUILD_SHARED_LIBRARY OFF CACHE INTERNAL "Build UMF shared library")
+    set(UMF_LINK_HWLOC_STATICALLY ON CACHE INTERNAL "static HWLOC")
+  endif()
+
+  fetch_adapter_source(level_zero
+    ${UNIFIED_RUNTIME_REPO}
+    ${UNIFIED_RUNTIME_TAG}
+  )
+
+  fetch_adapter_source(opencl
+    ${UNIFIED_RUNTIME_REPO}
+    ${UNIFIED_RUNTIME_TAG}
+  )
+
+  fetch_adapter_source(cuda
+    ${UNIFIED_RUNTIME_REPO}
+    ${UNIFIED_RUNTIME_TAG}
+  )
+
+  fetch_adapter_source(hip
+    ${UNIFIED_RUNTIME_REPO}
+    ${UNIFIED_RUNTIME_TAG}
+  )
+
+  fetch_adapter_source(native_cpu
+    ${UNIFIED_RUNTIME_REPO}
+    ${UNIFIED_RUNTIME_TAG}
+  )
+
+  if(SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO)
+    set(UNIFIED_RUNTIME_REPO "${SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO}")
+  endif()
+  if(SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG)
+    set(UNIFIED_RUNTIME_TAG "${SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG}")
+  endif()
+
+  message(STATUS "Will fetch Unified Runtime from ${UNIFIED_RUNTIME_REPO}")
+  FetchContent_Declare(unified-runtime
+    GIT_REPOSITORY    ${UNIFIED_RUNTIME_REPO}
+    GIT_TAG           ${UNIFIED_RUNTIME_TAG}
+  )
+
+  FetchContent_GetProperties(unified-runtime)
+  FetchContent_MakeAvailable(unified-runtime)
+
+  set(UNIFIED_RUNTIME_SOURCE_DIR
+    "${unified-runtime_SOURCE_DIR}" CACHE PATH
+    "Path to Unified Runtime Headers" FORCE)
+elseif(SYCL_UR_SOURCE_DIR)
+  # SYCL_UR_USE_FETCH_CONTENT is OFF and SYCL_UR_SOURCE_DIR has been set,
+  # use the external Unified Runtime source directory.
+  set(UNIFIED_RUNTIME_SOURCE_DIR
+    "${SYCL_UR_SOURCE_DIR}" CACHE PATH
+    "Path to Unified Runtime Headers" FORCE)
+  add_subdirectory(
+    ${UNIFIED_RUNTIME_SOURCE_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}/unified-runtime)
+else()
+  message(FATAL_ERROR
+    "SYCL_UR_USE_FETCH_CONTENT is disabled but no alternative Unified \
+    Runtime source directory has been provided, either:
+
+    * Set -DSYCL_UR_SOURCE_DIR=/path/to/unified-runtime
+    * Clone the UR repo in ${CMAKE_CURRENT_SOURCE_DIR}/unified-runtime")
+endif()
+
+# Restore original flags
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_BAK}")
+
+message(STATUS
+  "Using Unified Runtime source directory: ${UNIFIED_RUNTIME_SOURCE_DIR}")
+
+set(UNIFIED_RUNTIME_INCLUDE_DIR "${UNIFIED_RUNTIME_SOURCE_DIR}/include")
+set(UNIFIED_RUNTIME_SRC_INCLUDE_DIR "${UNIFIED_RUNTIME_SOURCE_DIR}/source")
+set(UNIFIED_RUNTIME_COMMON_INCLUDE_DIR "${UNIFIED_RUNTIME_SOURCE_DIR}/source/common")
+
+add_library(UnifiedRuntimeLoader ALIAS ur_loader)
+add_library(UnifiedRuntimeCommon ALIAS ur_common)
+add_library(UnifiedMemoryFramework ALIAS ur_umf)
+
+add_library(UnifiedRuntime-Headers INTERFACE)
+
+target_include_directories(UnifiedRuntime-Headers
+  INTERFACE
+    "${UNIFIED_RUNTIME_INCLUDE_DIR}"
+)
+
+find_package(Threads REQUIRED)
+
+if(TARGET UnifiedRuntimeLoader)
+  # Install the UR loader.
+  install(TARGETS ur_loader
+    LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-runtime-loader
+    ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-runtime-loader
+    RUNTIME DESTINATION "bin" COMPONENT unified-runtime-loader
+  )
+endif()
+
+add_custom_target(UnifiedRuntimeAdapters)
+
+function(add_sycl_ur_adapter NAME)
+  add_dependencies(UnifiedRuntimeAdapters ur_adapter_${NAME})
+
+  install(TARGETS ur_adapter_${NAME}
+    LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT ur_adapter_${NAME}
+    RUNTIME DESTINATION "bin" COMPONENT ur_adapter_${NAME})
+
+  set(manifest_file
+    ${CMAKE_CURRENT_BINARY_DIR}/install_manifest_ur_adapter_${NAME}.txt)
+  add_custom_command(OUTPUT ${manifest_file}
+    COMMAND "${CMAKE_COMMAND}"
+    "-DCMAKE_INSTALL_COMPONENT=ur_adapter_${NAME}"
+    -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
+    COMMENT "Deploying component ur_adapter_${NAME}"
+    USES_TERMINAL
+  )
+  add_custom_target(install-sycl-ur-adapter-${NAME}
+    DEPENDS ${manifest_file} ur_adapter_${NAME}
+  )
+
+  set_property(GLOBAL APPEND PROPERTY
+    SYCL_TOOLCHAIN_INSTALL_COMPONENTS ur_adapter_${NAME})
+endfunction()
+
+if("level_zero" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(level_zero)
+endif()
+
+if("level_zero_v2" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(level_zero_v2)
+endif()
+
+if("cuda" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(cuda)
+endif()
+
+if("hip" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(hip)
+endif()
+
+if("opencl" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(opencl)
+endif()
+
+if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
+  add_sycl_ur_adapter(native_cpu)
+
+  # Deal with OCK option
+  option(NATIVECPU_USE_OCK "Use the oneAPI Construction Kit for Native CPU" ON)
+
+  if(NATIVECPU_USE_OCK)
+    message(STATUS "Compiling Native CPU adapter with OCK support.")
+    target_compile_definitions(ur_adapter_native_cpu PRIVATE NATIVECPU_USE_OCK)
+  else()
+    message(WARNING "Compiling Native CPU adapter without OCK support.
+    Some valid SYCL programs may not build or may have low performance.")
+  endif()
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL Windows)
+  # On Windows, also build/install debug libraries with the d suffix that are
+  # compiled with /MDd so users can link against these in debug builds.
+  include(ExternalProject)
+  set(URD_BINARY_DIR ${CMAKE_BINARY_DIR}/unified-runtimed)
+  set(URD_INSTALL_DIR ${URD_BINARY_DIR}/install)
+
+  # This creates a subbuild which can be used in dependencies with the
+  # unified-runtimed target. It invokes the install-unified-runtime-libraries
+  # target to install the UR runtime libraries.
+  ExternalProject_Add(unified-runtimed
+    SOURCE_DIR ${UNIFIED_RUNTIME_SOURCE_DIR}
+    BINARY_DIR ${URD_BINARY_DIR}
+    INSTALL_DIR ${URD_INSTALL_DIR}
+    INSTALL_COMMAND ${CMAKE_COMMAND}
+      --build <BINARY_DIR> --config Debug
+      --target install-unified-runtime-libraries
+    CMAKE_CACHE_ARGS
+      -DCMAKE_BUILD_TYPE:STRING=Debug
+      -DCMAKE_INSTALL_PREFIX:STRING=<INSTALL_DIR>
+      # Enable d suffix on libraries
+      -DUR_USE_DEBUG_POSTFIX:BOOL=ON
+      # Don't build unnecessary targets in subbuild.
+      -DUR_BUILD_EXAMPLES:BOOL=OFF
+      -DUR_BUILD_TESTS:BOOL=OFF
+      -DUR_BUILD_TOOLS:BOOL=OFF
+      # Sanitizer layer is not supported on Windows.
+      -DUR_ENABLE_SYMBOLIZER:BOOL=OFF
+      # Inherit settings from parent build.
+      -DUR_ENABLE_TRACING:BOOL=${UR_ENABLE_TRACING}
+      -DUR_ENABLE_COMGR:BOOL=${UR_ENABLE_COMGR}
+      -DUR_BUILD_ADAPTER_L0:BOOL=${UR_BUILD_ADAPTER_L0}
+      -DUR_BUILD_ADAPTER_L0_V2:BOOL=${UR_BUILD_ADAPTER_L0_V2}
+      -DUR_BUILD_ADAPTER_OPENCL:BOOL=${UR_BUILD_ADAPTER_OPENCL}
+      -DUR_BUILD_ADAPTER_CUDA:BOOL=${UR_BUILD_ADAPTER_CUDA}
+      -DUR_BUILD_ADAPTER_HIP:BOOL=${UR_BUILD_ADAPTER_HIP}
+      -DUR_BUILD_ADAPTER_NATIVE_CPU:BOOL=${UR_BUILD_ADAPTER_NATIVE_CPU}
+      -DUMF_BUILD_EXAMPLES:BOOL=${UMF_BUILD_EXAMPLES}
+      -DUMF_BUILD_SHARED_LIBRARY:BOOL=${UMF_BUILD_SHARED_LIBRARY}
+      -DUMF_LINK_HWLOC_STATICALLY:BOOL=${UMF_LINK_HWLOC_STATICALLY}
+      -DUMF_DISABLE_HWLOC:BOOL=${UMF_DISABLE_HWLOC}
+      # Enable d suffix in UMF
+      -DUMF_USE_DEBUG_POSTFIX:BOOL=ON
+  )
+
+  # Copy the debug UR runtime libraries to <build>/bin & <build>/lib for use in
+  # the parent build, e.g. integration testing.
+  set(URD_COPY_FILES)
+  macro(urd_copy_library_to_build library shared)
+    if(${shared})
+      list(APPEND URD_COPY_FILES
+        ${LLVM_BINARY_DIR}/bin/${library}.dll
+      )
+      add_custom_command(
+        OUTPUT
+          ${LLVM_BINARY_DIR}/bin/${library}.dll
+        COMMAND ${CMAKE_COMMAND} -E copy
+          ${URD_INSTALL_DIR}/bin/${library}.dll
+          ${LLVM_BINARY_DIR}/bin/${library}.dll
+      )
+    endif()
+
+    list(APPEND URD_COPY_FILES
+      ${LLVM_BINARY_DIR}/lib/${library}.lib
+    )
+    add_custom_command(
+      OUTPUT
+        ${LLVM_BINARY_DIR}/lib/${library}.lib
+      COMMAND ${CMAKE_COMMAND} -E copy
+        ${URD_INSTALL_DIR}/lib/${library}.lib
+        ${LLVM_BINARY_DIR}/lib/${library}.lib
+    )
+  endmacro()
+
+  urd_copy_library_to_build(ur_loaderd "NOT;${UR_STATIC_LOADER}")
+  foreach(adapter ${SYCL_ENABLE_BACKENDS})
+    if(adapter MATCHES "level_zero")
+      set(shared "NOT;${UR_STATIC_ADAPTER_L0}")
+    else()
+      set(shared TRUE)
+    endif()
+    urd_copy_library_to_build(ur_adapter_${adapter}d "${shared}")
+  endforeach()
+  # Also copy umfd.dll/umfd.lib
+  urd_copy_library_to_build(umfd ${UMF_BUILD_SHARED_LIBRARY})
+
+  add_custom_target(unified-runtimed-build ALL DEPENDS ${URD_COPY_FILES})
+  add_dependencies(unified-runtimed-build unified-runtimed)
+
+  # Add the debug UR runtime libraries to the parent install.
+  install(
+    FILES ${URD_INSTALL_DIR}/bin/ur_loaderd.dll
+    DESTINATION "bin" COMPONENT unified-runtime-loader)
+  foreach(adapter ${SYCL_ENABLE_BACKENDS})
+    install(
+      FILES ${URD_INSTALL_DIR}/bin/ur_adapter_${adapter}d.dll
+      DESTINATION "bin" COMPONENT ur_adapter_${adapter})
+    add_dependencies(install-sycl-ur-adapter-${adapter} unified-runtimed)
+  endforeach()
+  if(UMF_BUILD_SHARED_LIBRARY)
+    # Also install umfd.dll
+    install(
+      FILES ${URD_INSTALL_DIR}/bin/umfd.dll
+      DESTINATION "bin" COMPONENT unified-memory-framework)
+  endif()
+endif()
+
+install(TARGETS umf
+  LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
+  ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
+  RUNTIME DESTINATION "bin" COMPONENT unified-memory-framework)

>From abda61122215f256ecc15ee8d8ba2b687e09250f Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 28 May 2025 08:11:14 -0700
Subject: [PATCH 13/31] fix comment

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/include/sycl/detail/config.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsycl/include/sycl/detail/config.hpp b/libsycl/include/sycl/detail/config.hpp
index 12d9663d5cb27..60fa8cfaed04c 100644
--- a/libsycl/include/sycl/detail/config.hpp
+++ b/libsycl/include/sycl/detail/config.hpp
@@ -7,7 +7,7 @@
 //===----------------------------------------------------------------------===//
 ///
 /// \file
-/// This file contains the declaration of the macroses defining attributes for
+/// This file contains the declaration of the macros defining attributes for
 /// exported methods and defining API namespaces.
 ///
 //===----------------------------------------------------------------------===//

>From 9f3093c96f9a9fa4ea533f599ed367b53939ded9 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 28 May 2025 09:04:33 -0700
Subject: [PATCH 14/31] remove 2nd build for Win

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/src/CMakeLists.txt | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index b580ab494ab90..4051bea2edbb5 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -92,31 +92,16 @@ endif()
 # Version-agnostic name of the import library, has effect on Windows only.
 set(IMPLIB_NAME "sycl")
 
-if (MSVC)
-  # MSVC provides two incompatible build variants for its CRT: release and debug
-  # To avoid potential issues in user code we also need to provide two kinds
-  # of SYCL Runtime Library for release and debug configurations.
-  foreach(flag_var
-      CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
-      CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
-    string(REGEX REPLACE "/MDd" "" ${flag_var} "${${flag_var}}")
-    string(REGEX REPLACE "/MTd" "" ${flag_var} "${${flag_var}}")
-    string(REGEX REPLACE "/MD" "" ${flag_var} "${${flag_var}}")
-    string(REGEX REPLACE "/MT" "" ${flag_var} "${${flag_var}}")
-  endforeach()
-
-  add_sycl_rt_library(${LIB_NAME}d sycld_object COMPILE_OPTIONS "/MDd" SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME}d)
-  add_library(sycld ALIAS ${LIB_NAME}d)
-
-  set(LIBSYCL_EXTRA_OPTS "/MD")
-endif()
-
 add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${LIBSYCL_EXTRA_OPTS} SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME})
 
 if (WIN32)
   add_library(sycl ALIAS ${LIB_NAME})
 endif()
 
+if (CMAKE_SYSTEM_NAME STREQUAL Windows)
+  set_target_properties(${LIB_NAME} PROPERTIES DEBUG_POSTFIX d)
+endif()
+
 install(TARGETS ${LIBSYCL_RT_LIBS}
   ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl
   LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT libsycl

>From 5157163407be9199c03437b345f38b1830110923 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Fri, 30 May 2025 05:18:27 -0700
Subject: [PATCH 15/31] fix comments, formating

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt     | 23 ++++++++++++-----------
 libsycl/README.md          |  4 ++--
 libsycl/src/CMakeLists.txt |  3 ++-
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 39e2c81ebc5b4..d5283d2c19c6f 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -8,8 +8,8 @@ set(LLVM_SUBPROJECT_TITLE "libsycl")
 set(LIBSYCL_SOURCE_DIR  ${CMAKE_CURRENT_SOURCE_DIR})
 set(LIBSYCL_BINARY_DIR  ${CMAKE_CURRENT_BINARY_DIR})
 
-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")
+set(CMAKE_CXX_STANDARD_REQUIRED YES)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
 #===============================================================================
@@ -59,7 +59,8 @@ set(LIBSYCL_MAJOR_VERSION 0)
 set(LIBSYCL_MINOR_VERSION 1)
 set(LIBSYCL_PATCH_VERSION 0)
 set(LIBSYCL_VERSION_STRING "${LIBSYCL_MAJOR_VERSION}.${LIBSYCL_MINOR_VERSION}.${LIBSYCL_PATCH_VERSION}")
-set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING "The inline ABI namespace used by libsycl. It defaults to Vn where `n` is the current ABI version.")
+set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING
+    "The inline ABI namespace used by libsycl. It defaults to Vn where `n` is the current ABI version.")
 
 #===============================================================================
 # Setup Compiler Flags
@@ -69,7 +70,7 @@ if(MSVC)
   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
   # Skip asynchronous C++ exceptions catching and assume "extern C" functions
   # never throw C++ exceptions.
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
+  append("/EHsc" CMAKE_CXX_FLAGS)
 
   # Add PDB debug information
   list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
@@ -77,6 +78,7 @@ if(MSVC)
   check_linker_flag(CXX "LINKER:/DEBUG" LINKER_SUPPORTS_DEBUG)
   if(LINKER_SUPPORTS_DEBUG)
     # sccache is not compatible with /Zi flag
+    # https://github.com/mozilla/sccache?tab=readme-ov-file#usage
     if (CMAKE_CXX_COMPILER_LAUNCHER STREQUAL "sccache")
       # CMake may put /Zi by default
       if(CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -89,9 +91,9 @@ if(MSVC)
         string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
         string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
       endif()
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7")
+      append("/Z7" CMAKE_CXX_FLAGS)
     else()
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi")
+      append("/Zi" CMAKE_CXX_FLAGS)
     endif()
     add_link_options("LINKER:/DEBUG")
 
@@ -105,22 +107,21 @@ endif()
 
 # Enable all warnings by default
 if (MSVC)
-  set(CMAKE_CXX_FLAGS "/W4 ${CMAKE_CXX_FLAGS}")
+  append("/W4" CMAKE_CXX_FLAGS)
 else ()
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  append("-Wall -Wextra" CMAKE_CXX_FLAGS)
 endif()
 
 if(LIBSYCL_ENABLE_WERROR)
   if(MSVC)
-    set(CMAKE_CXX_FLAGS "/WX ${CMAKE_CXX_FLAGS}")
+    append("/WX" CMAKE_CXX_FLAGS)
   else()
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+    append("-Werror" CMAKE_CXX_FLAGS)
   endif()
 endif()
 
 # This is a workaround to detect changes (add or modify) in subtree which
 # are not detected by copy_directory command.
-# TODO: Detect removal in the source tree and reflect in the install directory.
 file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_INCLUDE_DIR}/sycl/*")
 
 string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
diff --git a/libsycl/README.md b/libsycl/README.md
index c62ea249c57ed..c551e40dd821b 100644
--- a/libsycl/README.md
+++ b/libsycl/README.md
@@ -7,11 +7,11 @@ Subproject documentation is available at: [SYCL RT documentation](./docs).
 
 libsycl runtime library and headers require C++17 support or higher.
 
-### How to use DPC++
+### How to use libsycl with Clang
 
 TBD
 
-#### Build from sources
+#### How to build
 
 TBD
 
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index 4051bea2edbb5..afcf713d645ad 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -92,7 +92,8 @@ endif()
 # Version-agnostic name of the import library, has effect on Windows only.
 set(IMPLIB_NAME "sycl")
 
-add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${LIBSYCL_EXTRA_OPTS} SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME})
+add_sycl_rt_library(${LIB_NAME} sycl_object COMPILE_OPTIONS ${LIBSYCL_EXTRA_OPTS}
+                    SOURCES ${LIBSYCL_SOURCES} IMPLIB_NAME ${IMPLIB_NAME})
 
 if (WIN32)
   add_library(sycl ALIAS ${LIB_NAME})

>From 8005f2400e9df9ec192e3fa5b7d49833f58b5e84 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Mon, 2 Jun 2025 08:26:26 -0700
Subject: [PATCH 16/31] update names

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                        |   8 +-
 .../cmake/modules/FetchUnifiedRuntime.cmake   | 172 ++++--------------
 2 files changed, 38 insertions(+), 142 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 8d2595c897e40..197094b8860e8 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -18,6 +18,12 @@ set(CMAKE_CXX_EXTENSIONS OFF)
 
 option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl project" OFF)
 
+# If LIBSYCL_ENABLE_BACKENDS is undefined, we default to enabling OpenCL and Level
+# Zero backends.
+if (NOT DEFINED LIBSYCL_ENABLE_BACKENDS)
+  set(LIBSYCL_ENABLE_BACKENDS "opencl;level_zero;level_zero_v2" CACHE STRING "Backends enabled for SYCL")
+endif()
+
 #===============================================================================
 # Configure System
 #===============================================================================
@@ -55,7 +61,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
 
-# Download dependency
+# Download & build dependency for kernel offloading
 include(FetchUnifiedRuntime)
 
 # The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
diff --git a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
index 9828164800af1..fc7ca77de65e6 100644
--- a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
+++ b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
@@ -10,44 +10,44 @@
 
 # Options to override the default behaviour of the FetchContent to include UR
 # source code.
-set(SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO
+set(LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_REPO
   "" CACHE STRING "Override the Unified Runtime FetchContent repository")
-set(SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG
+set(LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_TAG
   "" CACHE STRING "Override the Unified Runtime FetchContent tag")
 
 # Options to disable use of FetchContent to include Unified Runtime source code
 # to improve developer workflow.
-option(SYCL_UR_USE_FETCH_CONTENT
+option(LIBSYCL_UR_USE_FETCH_CONTENT
   "Use FetchContent to acquire the Unified Runtime source code" ON)
-set(SYCL_UR_SOURCE_DIR
+set(LIBSYCL_UR_SOURCE_DIR
   "" CACHE PATH "Path to root of Unified Runtime repository")
 
-option(SYCL_UR_BUILD_TESTS "Build tests for UR" OFF)
-set(UR_BUILD_TESTS "${SYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
+option(LIBSYCL_UR_BUILD_TESTS "Build tests for UR" OFF)
+set(UR_BUILD_TESTS "${LIBSYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
 # UR tests require the examples to be built
-set(UR_BUILD_EXAMPLES "${SYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
+set(UR_BUILD_EXAMPLES "${LIBSYCL_UR_BUILD_TESTS}" CACHE BOOL "" FORCE)
 
 set(UR_EXTERNAL_DEPENDENCIES "sycl-headers" CACHE STRING
   "List of external CMake targets for executables/libraries to depend on" FORCE)
 
-if("level_zero" IN_LIST SYCL_ENABLE_BACKENDS)
+if("level_zero" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_L0 ON)
 endif()
-if("level_zero_v2" IN_LIST SYCL_ENABLE_BACKENDS)
+if("level_zero_v2" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_L0_V2 ON)
 endif()
-if("cuda" IN_LIST SYCL_ENABLE_BACKENDS)
+if("cuda" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_CUDA ON)
 endif()
-if("hip" IN_LIST SYCL_ENABLE_BACKENDS)
+if("hip" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_HIP ON)
 endif()
-if("opencl" IN_LIST SYCL_ENABLE_BACKENDS)
+if("opencl" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_OPENCL ON)
   set(UR_OPENCL_ICD_LOADER_LIBRARY OpenCL-ICD CACHE FILEPATH
     "Path of the OpenCL ICD Loader library" FORCE)
 endif()
-if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
+if("native_cpu" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_NATIVE_CPU ON)
 endif()
 
@@ -65,7 +65,7 @@ else()
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
 endif()
 
-if(SYCL_UR_USE_FETCH_CONTENT)
+if(LIBSYCL_UR_USE_FETCH_CONTENT)
   include(FetchContent)
 
   # The fetch_adapter_source function can be used to perform a separate content
@@ -73,7 +73,7 @@ if(SYCL_UR_USE_FETCH_CONTENT)
   # from each other.
   #
   # A separate content fetch will not be performed if:
-  # * The adapter name is not present in the SYCL_ENABLE_BACKENDS variable.
+  # * The adapter name is not present in the LIBSYCL_ENABLE_BACKENDS variable.
   # * The repo and tag provided match the values of the
   #   UNIFIED_RUNTIME_REPO/UNIFIED_RUNTIME_TAG variables
   #
@@ -82,7 +82,7 @@ if(SYCL_UR_USE_FETCH_CONTENT)
   #   * repo - A valid Git URL of a Unified Runtime repo
   #   * tag - A valid Git branch/tag/commit in the Unified Runtime repo
   function(fetch_adapter_source name repo tag)
-    if(NOT ${name} IN_LIST SYCL_ENABLE_BACKENDS)
+    if(NOT ${name} IN_LIST LIBSYCL_ENABLE_BACKENDS)
       return()
     endif()
     if(repo STREQUAL UNIFIED_RUNTIME_REPO AND
@@ -147,11 +147,11 @@ if(SYCL_UR_USE_FETCH_CONTENT)
     ${UNIFIED_RUNTIME_TAG}
   )
 
-  if(SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO)
-    set(UNIFIED_RUNTIME_REPO "${SYCL_UR_OVERRIDE_FETCH_CONTENT_REPO}")
+  if(LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_REPO)
+    set(UNIFIED_RUNTIME_REPO "${LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_REPO}")
   endif()
-  if(SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG)
-    set(UNIFIED_RUNTIME_TAG "${SYCL_UR_OVERRIDE_FETCH_CONTENT_TAG}")
+  if(LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_TAG)
+    set(UNIFIED_RUNTIME_TAG "${LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_TAG}")
   endif()
 
   message(STATUS "Will fetch Unified Runtime from ${UNIFIED_RUNTIME_REPO}")
@@ -166,21 +166,21 @@ if(SYCL_UR_USE_FETCH_CONTENT)
   set(UNIFIED_RUNTIME_SOURCE_DIR
     "${unified-runtime_SOURCE_DIR}" CACHE PATH
     "Path to Unified Runtime Headers" FORCE)
-elseif(SYCL_UR_SOURCE_DIR)
-  # SYCL_UR_USE_FETCH_CONTENT is OFF and SYCL_UR_SOURCE_DIR has been set,
+elseif(LIBSYCL_UR_SOURCE_DIR)
+  # LIBSYCL_UR_USE_FETCH_CONTENT is OFF and LIBSYCL_UR_SOURCE_DIR has been set,
   # use the external Unified Runtime source directory.
   set(UNIFIED_RUNTIME_SOURCE_DIR
-    "${SYCL_UR_SOURCE_DIR}" CACHE PATH
+    "${LIBSYCL_UR_SOURCE_DIR}" CACHE PATH
     "Path to Unified Runtime Headers" FORCE)
   add_subdirectory(
     ${UNIFIED_RUNTIME_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}/unified-runtime)
 else()
   message(FATAL_ERROR
-    "SYCL_UR_USE_FETCH_CONTENT is disabled but no alternative Unified \
+    "LIBSYCL_UR_USE_FETCH_CONTENT is disabled but no alternative Unified \
     Runtime source directory has been provided, either:
 
-    * Set -DSYCL_UR_SOURCE_DIR=/path/to/unified-runtime
+    * Set -DLIBSYCL_UR_SOURCE_DIR=/path/to/unified-runtime
     * Clone the UR repo in ${CMAKE_CURRENT_SOURCE_DIR}/unified-runtime")
 endif()
 
@@ -237,32 +237,29 @@ function(add_sycl_ur_adapter NAME)
   add_custom_target(install-sycl-ur-adapter-${NAME}
     DEPENDS ${manifest_file} ur_adapter_${NAME}
   )
-
-  set_property(GLOBAL APPEND PROPERTY
-    SYCL_TOOLCHAIN_INSTALL_COMPONENTS ur_adapter_${NAME})
 endfunction()
 
-if("level_zero" IN_LIST SYCL_ENABLE_BACKENDS)
+if("level_zero" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(level_zero)
 endif()
 
-if("level_zero_v2" IN_LIST SYCL_ENABLE_BACKENDS)
+if("level_zero_v2" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(level_zero_v2)
 endif()
 
-if("cuda" IN_LIST SYCL_ENABLE_BACKENDS)
+if("cuda" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(cuda)
 endif()
 
-if("hip" IN_LIST SYCL_ENABLE_BACKENDS)
+if("hip" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(hip)
 endif()
 
-if("opencl" IN_LIST SYCL_ENABLE_BACKENDS)
+if("opencl" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(opencl)
 endif()
 
-if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
+if("native_cpu" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(native_cpu)
 
   # Deal with OCK option
@@ -277,113 +274,6 @@ if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
   endif()
 endif()
 
-if(CMAKE_SYSTEM_NAME STREQUAL Windows)
-  # On Windows, also build/install debug libraries with the d suffix that are
-  # compiled with /MDd so users can link against these in debug builds.
-  include(ExternalProject)
-  set(URD_BINARY_DIR ${CMAKE_BINARY_DIR}/unified-runtimed)
-  set(URD_INSTALL_DIR ${URD_BINARY_DIR}/install)
-
-  # This creates a subbuild which can be used in dependencies with the
-  # unified-runtimed target. It invokes the install-unified-runtime-libraries
-  # target to install the UR runtime libraries.
-  ExternalProject_Add(unified-runtimed
-    SOURCE_DIR ${UNIFIED_RUNTIME_SOURCE_DIR}
-    BINARY_DIR ${URD_BINARY_DIR}
-    INSTALL_DIR ${URD_INSTALL_DIR}
-    INSTALL_COMMAND ${CMAKE_COMMAND}
-      --build <BINARY_DIR> --config Debug
-      --target install-unified-runtime-libraries
-    CMAKE_CACHE_ARGS
-      -DCMAKE_BUILD_TYPE:STRING=Debug
-      -DCMAKE_INSTALL_PREFIX:STRING=<INSTALL_DIR>
-      # Enable d suffix on libraries
-      -DUR_USE_DEBUG_POSTFIX:BOOL=ON
-      # Don't build unnecessary targets in subbuild.
-      -DUR_BUILD_EXAMPLES:BOOL=OFF
-      -DUR_BUILD_TESTS:BOOL=OFF
-      -DUR_BUILD_TOOLS:BOOL=OFF
-      # Sanitizer layer is not supported on Windows.
-      -DUR_ENABLE_SYMBOLIZER:BOOL=OFF
-      # Inherit settings from parent build.
-      -DUR_ENABLE_TRACING:BOOL=${UR_ENABLE_TRACING}
-      -DUR_ENABLE_COMGR:BOOL=${UR_ENABLE_COMGR}
-      -DUR_BUILD_ADAPTER_L0:BOOL=${UR_BUILD_ADAPTER_L0}
-      -DUR_BUILD_ADAPTER_L0_V2:BOOL=${UR_BUILD_ADAPTER_L0_V2}
-      -DUR_BUILD_ADAPTER_OPENCL:BOOL=${UR_BUILD_ADAPTER_OPENCL}
-      -DUR_BUILD_ADAPTER_CUDA:BOOL=${UR_BUILD_ADAPTER_CUDA}
-      -DUR_BUILD_ADAPTER_HIP:BOOL=${UR_BUILD_ADAPTER_HIP}
-      -DUR_BUILD_ADAPTER_NATIVE_CPU:BOOL=${UR_BUILD_ADAPTER_NATIVE_CPU}
-      -DUMF_BUILD_EXAMPLES:BOOL=${UMF_BUILD_EXAMPLES}
-      -DUMF_BUILD_SHARED_LIBRARY:BOOL=${UMF_BUILD_SHARED_LIBRARY}
-      -DUMF_LINK_HWLOC_STATICALLY:BOOL=${UMF_LINK_HWLOC_STATICALLY}
-      -DUMF_DISABLE_HWLOC:BOOL=${UMF_DISABLE_HWLOC}
-      # Enable d suffix in UMF
-      -DUMF_USE_DEBUG_POSTFIX:BOOL=ON
-  )
-
-  # Copy the debug UR runtime libraries to <build>/bin & <build>/lib for use in
-  # the parent build, e.g. integration testing.
-  set(URD_COPY_FILES)
-  macro(urd_copy_library_to_build library shared)
-    if(${shared})
-      list(APPEND URD_COPY_FILES
-        ${LLVM_BINARY_DIR}/bin/${library}.dll
-      )
-      add_custom_command(
-        OUTPUT
-          ${LLVM_BINARY_DIR}/bin/${library}.dll
-        COMMAND ${CMAKE_COMMAND} -E copy
-          ${URD_INSTALL_DIR}/bin/${library}.dll
-          ${LLVM_BINARY_DIR}/bin/${library}.dll
-      )
-    endif()
-
-    list(APPEND URD_COPY_FILES
-      ${LLVM_BINARY_DIR}/lib/${library}.lib
-    )
-    add_custom_command(
-      OUTPUT
-        ${LLVM_BINARY_DIR}/lib/${library}.lib
-      COMMAND ${CMAKE_COMMAND} -E copy
-        ${URD_INSTALL_DIR}/lib/${library}.lib
-        ${LLVM_BINARY_DIR}/lib/${library}.lib
-    )
-  endmacro()
-
-  urd_copy_library_to_build(ur_loaderd "NOT;${UR_STATIC_LOADER}")
-  foreach(adapter ${SYCL_ENABLE_BACKENDS})
-    if(adapter MATCHES "level_zero")
-      set(shared "NOT;${UR_STATIC_ADAPTER_L0}")
-    else()
-      set(shared TRUE)
-    endif()
-    urd_copy_library_to_build(ur_adapter_${adapter}d "${shared}")
-  endforeach()
-  # Also copy umfd.dll/umfd.lib
-  urd_copy_library_to_build(umfd ${UMF_BUILD_SHARED_LIBRARY})
-
-  add_custom_target(unified-runtimed-build ALL DEPENDS ${URD_COPY_FILES})
-  add_dependencies(unified-runtimed-build unified-runtimed)
-
-  # Add the debug UR runtime libraries to the parent install.
-  install(
-    FILES ${URD_INSTALL_DIR}/bin/ur_loaderd.dll
-    DESTINATION "bin" COMPONENT unified-runtime-loader)
-  foreach(adapter ${SYCL_ENABLE_BACKENDS})
-    install(
-      FILES ${URD_INSTALL_DIR}/bin/ur_adapter_${adapter}d.dll
-      DESTINATION "bin" COMPONENT ur_adapter_${adapter})
-    add_dependencies(install-sycl-ur-adapter-${adapter} unified-runtimed)
-  endforeach()
-  if(UMF_BUILD_SHARED_LIBRARY)
-    # Also install umfd.dll
-    install(
-      FILES ${URD_INSTALL_DIR}/bin/umfd.dll
-      DESTINATION "bin" COMPONENT unified-memory-framework)
-  endif()
-endif()
-
 install(TARGETS umf
   LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
   ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework

>From d7f006cb5b12e15211be4f3f27e7f606c210a8fe Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Mon, 2 Jun 2025 09:04:53 -0700
Subject: [PATCH 17/31] remove extra PDB handling

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt | 36 +-----------------------------------
 1 file changed, 1 insertion(+), 35 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index d5283d2c19c6f..2689d8c34b598 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -66,43 +66,9 @@ set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING
 # Setup Compiler Flags
 #===============================================================================
 
+# Starting CMake 3.26 this property as ON by default. With 3.20+ we still need to set it.
 if(MSVC)
   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-  # Skip asynchronous C++ exceptions catching and assume "extern C" functions
-  # never throw C++ exceptions.
-  append("/EHsc" CMAKE_CXX_FLAGS)
-
-  # Add PDB debug information
-  list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
-  include(CheckLinkerFlag)
-  check_linker_flag(CXX "LINKER:/DEBUG" LINKER_SUPPORTS_DEBUG)
-  if(LINKER_SUPPORTS_DEBUG)
-    # sccache is not compatible with /Zi flag
-    # https://github.com/mozilla/sccache?tab=readme-ov-file#usage
-    if (CMAKE_CXX_COMPILER_LAUNCHER STREQUAL "sccache")
-      # CMake may put /Zi by default
-      if(CMAKE_BUILD_TYPE STREQUAL "Debug")
-        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
-        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
-      elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
-        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
-        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
-      elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
-        string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
-        string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
-      endif()
-      append("/Z7" CMAKE_CXX_FLAGS)
-    else()
-      append("/Zi" CMAKE_CXX_FLAGS)
-    endif()
-    add_link_options("LINKER:/DEBUG")
-
-    # Enable unreferenced removal and ICF in Release mode.
-    check_linker_flag(CXX "LINKER:/OPT:REF,/OPT:ICF" LINKER_SUPPORTS_OPTS)
-    if (LINKER_SUPPORTS_OPTS AND uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE")
-      add_link_options("LINKER:/OPT:REF" "LINKER:/OPT:ICF")
-    endif()
-  endif()
 endif()
 
 # Enable all warnings by default

>From 56848acfff4d6bc9bb5dab1e55721e8792354cad Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 3 Jun 2025 03:53:05 -0700
Subject: [PATCH 18/31] fix names of macro

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/include/sycl/detail/config.hpp | 44 +++++++++++++-------------
 libsycl/include/sycl/platform.hpp      |  6 ++--
 libsycl/src/CMakeLists.txt             |  2 +-
 3 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/libsycl/include/sycl/detail/config.hpp b/libsycl/include/sycl/detail/config.hpp
index 60fa8cfaed04c..f7f7b93ee6f51 100644
--- a/libsycl/include/sycl/detail/config.hpp
+++ b/libsycl/include/sycl/detail/config.hpp
@@ -17,46 +17,46 @@
 
 #include <sycl/version.hpp>
 
-#define __SYCL_BEGIN_UNVERSIONED_NAMESPACE namespace sycl {
-#define __SYCL_END_UNVERSIONED_NAMESPACE }
+#define __LIBSYCL_BEGIN_UNVERSIONED_NAMESPACE namespace sycl {
+#define __LIBSYCL_END_UNVERSIONED_NAMESPACE }
 
-#define __SYCL_BEGIN_VERSIONED_NAMESPACE                                       \
-  __SYCL_BEGIN_UNVERSIONED_NAMESPACE inline namespace __LIBSYCL_ABI_NAMESPACE {
-#define __SYCL_END_VERSIONED_NAMESPACE                                         \
+#define __LIBSYCL_BEGIN_VERSIONED_NAMESPACE                                    \
+  __LIBSYCL_BEGIN_UNVERSIONED_NAMESPACE inline namespace __LIBSYCL_ABI_NAMESPACE {
+#define __LIBSYCL_END_VERSIONED_NAMESPACE                                      \
   }                                                                            \
-  __SYCL_END_UNVERSIONED_NAMESPACE
+  __LIBSYCL_END_UNVERSIONED_NAMESPACE
 
 #ifndef __SYCL_DEVICE_ONLY__
-#ifndef __SYCL_EXPORT
+#ifndef __LIBSYCL_EXPORT
 #ifdef _WIN32
 
-#define __SYCL_DLL_LOCAL
+#define __LIBSYCL_DLL_LOCAL
 
-#if __SYCL_BUILD_SYCL_DLL
-#define __SYCL_EXPORT __declspec(dllexport)
-#define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllexport, deprecated(x))
+#if __LIBSYCL_BUILD_SYCL_DLL
+#define __LIBSYCL_EXPORT __declspec(dllexport)
+#define __LIBSYCL_EXPORT_DEPRECATED(x) __declspec(dllexport, deprecated(x))
 #else
-#define __SYCL_EXPORT __declspec(dllimport)
-#define __SYCL_EXPORT_DEPRECATED(x) __declspec(dllimport, deprecated(x))
-#endif //__SYCL_BUILD_SYCL_DLL
+#define __LIBSYCL_EXPORT __declspec(dllimport)
+#define __LIBSYCL_EXPORT_DEPRECATED(x) __declspec(dllimport, deprecated(x))
+#endif //__LIBSYCL_BUILD_SYCL_DLL
 
 #else // _WIN32
 
-#define __SYCL_DLL_LOCAL __attribute__((visibility("hidden")))
+#define __LIBSYCL_DLL_LOCAL __attribute__((visibility("hidden")))
 
-#define __SYCL_EXPORT __attribute__((visibility("default")))
-#define __SYCL_EXPORT_DEPRECATED(x)                                            \
+#define __LIBSYCL_EXPORT __attribute__((visibility("default")))
+#define __LIBSYCL_EXPORT_DEPRECATED(x)                                         \
   __attribute__((visibility("default"), deprecated(x)))
 
 #endif // _WIN32
-#endif // __SYCL_EXPORT
+#endif // __LIBSYCL_EXPORT
 
 #else // __SYCL_DEVICE_ONLY__
 
-#ifndef __SYCL_EXPORT
-#define __SYCL_EXPORT
-#define __SYCL_EXPORT_DEPRECATED(x)
-#define __SYCL_DLL_LOCAL
+#ifndef __LIBSYCL_EXPORT
+#define __LIBSYCL_EXPORT
+#define __LIBSYCL_EXPORT_DEPRECATED(x)
+#define __LIBSYCL_DLL_LOCAL
 #endif
 
 #endif // __SYCL_DEVICE_ONLY__
diff --git a/libsycl/include/sycl/platform.hpp b/libsycl/include/sycl/platform.hpp
index e23205a7a66ba..bbfbaf7d343f5 100644
--- a/libsycl/include/sycl/platform.hpp
+++ b/libsycl/include/sycl/platform.hpp
@@ -17,15 +17,15 @@
 
 #include <sycl/detail/config.hpp>
 
-__SYCL_BEGIN_VERSIONED_NAMESPACE
+__LIBSYCL_BEGIN_VERSIONED_NAMESPACE
 
-class __SYCL_EXPORT platform {
+class __LIBSYCL_EXPORT platform {
 public:
   /// Constructs a SYCL platform using the default device.
   platform();
 
 }; // class platform
 
-__SYCL_END_VERSIONED_NAMESPACE
+__LIBSYCL_END_VERSIONED_NAMESPACE
 
 #endif // __LIBSYCL_PLATFORM_HPP
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index afcf713d645ad..d64e5dcbd623e 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -6,7 +6,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
   add_library(${LIB_OBJ_NAME} OBJECT ${ARG_SOURCES})
 
   # Common compilation step setup
-  target_compile_definitions(${LIB_OBJ_NAME} PRIVATE $<$<BOOL:${MSVC}>:__SYCL_BUILD_SYCL_DLL>)
+  target_compile_definitions(${LIB_OBJ_NAME} PRIVATE $<$<BOOL:${MSVC}>:__LIBSYCL_BUILD_SYCL_DLL>)
   target_include_directories(
     ${LIB_OBJ_NAME}
     PRIVATE

>From 0414f6d524000d5ffa53a222d72a00a98fde78bb Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 3 Jun 2025 04:41:50 -0700
Subject: [PATCH 19/31] fix src files

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/src/platform.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libsycl/src/platform.cpp b/libsycl/src/platform.cpp
index 821e6366920d5..d2c0a47ceba82 100644
--- a/libsycl/src/platform.cpp
+++ b/libsycl/src/platform.cpp
@@ -10,8 +10,8 @@
 
 #include <stdexcept>
 
-__SYCL_BEGIN_VERSIONED_NAMESPACE
+__LIBSYCL_BEGIN_VERSIONED_NAMESPACE
 
 platform::platform() { throw std::runtime_error("Unimplemented"); }
 
-__SYCL_END_VERSIONED_NAMESPACE
+__LIBSYCL_END_VERSIONED_NAMESPACE

>From 59f8e2524051e5041314cfc6aba73d8bff1fa3da Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 4 Jun 2025 04:39:40 -0700
Subject: [PATCH 20/31] fix generated files location

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt     | 24 ++++++++++++++++--------
 libsycl/src/CMakeLists.txt |  2 +-
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 2689d8c34b598..00c1229073dd8 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -46,8 +46,9 @@ else()
       "Path where built libsycl libraries should be installed.")
 endif()
 
-set(LIBSYCL_INCLUDE_DIR ${LIBSYCL_SOURCE_DIR}/include)
-set(LIBSYCL_BUILD_INCLUDE_DIR ${LLVM_BINARY_DIR}/include)
+set(LIBSYCL_INCLUDE_DIR include)
+set(LIBSYCL_BUILD_INCLUDE_DIR ${LLVM_BINARY_DIR}/${LIBSYCL_INCLUDE_DIR})
+set(LIBSYCL_SOURCE_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
@@ -62,6 +63,15 @@ set(LIBSYCL_VERSION_STRING "${LIBSYCL_MAJOR_VERSION}.${LIBSYCL_MINOR_VERSION}.${
 set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING
     "The inline ABI namespace used by libsycl. It defaults to Vn where `n` is the current ABI version.")
 
+# Generate headers
+configure_file("${LIBSYCL_SOURCE_DIR}/src/version.hpp.in" "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp")
+
+# Install generated headers.
+install(FILES
+  "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp"
+  DESTINATION "${LIBSYCL_INCLUDE_DIR}/sycl"
+  COMPONENT sycl-headers)
+
 #===============================================================================
 # Setup Compiler Flags
 #===============================================================================
@@ -88,24 +98,22 @@ endif()
 
 # This is a workaround to detect changes (add or modify) in subtree which
 # are not detected by copy_directory command.
-file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_INCLUDE_DIR}/sycl/*")
+file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl/*")
 
-string(REPLACE "${LIBSYCL_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
+string(REPLACE "${LIBSYCL_SOURCE_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
   OUT_HEADERS_IN_SYCL_DIR "${HEADERS_IN_SYCL_DIR}")
 
 # Copy SYCL headers from sources to build directory
 add_custom_target(sycl-headers
   DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
 
-configure_file("${LIBSYCL_SOURCE_DIR}/src/version.hpp.in" "${LIBSYCL_INCLUDE_DIR}/sycl/version.hpp")
-
 add_custom_command(
   OUTPUT  ${OUT_HEADERS_IN_SYCL_DIR}
   DEPENDS ${HEADERS_IN_SYCL_DIR}
-  COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
+  COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
   COMMENT "Copying SYCL headers...")
 
-install(DIRECTORY "${LIBSYCL_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INSTALL_INCLUDE_DIR} COMPONENT sycl-headers)
+install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INCLUDE_DIR}/sycl COMPONENT sycl-headers)
 
 if (WIN32)
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index d64e5dcbd623e..baec5a685e67d 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -11,7 +11,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
     ${LIB_OBJ_NAME}
     PRIVATE
       ${CMAKE_CURRENT_SOURCE_DIR}
-      "${LIBSYCL_INCLUDE_DIR}"
+      ${LIBSYCL_BUILD_INCLUDE_DIR}
   )
 
   add_library(${LIB_NAME} SHARED

>From 05723f7703d46b1118a08500fca769a6533c825b Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Wed, 4 Jun 2025 05:56:21 -0700
Subject: [PATCH 21/31] fix more comments

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 00c1229073dd8..6d49899f72fe4 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -22,8 +22,7 @@ option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl projec
 # Configure System
 #===============================================================================
 
-set(LIBSYCL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING
-    "Path where libsycl headers should be installed.")
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
 set(LIBSYCL_SHARED_OUTPUT_NAME "sycl" CACHE STRING "Output name for the shared libsycl runtime library.")
 
@@ -32,6 +31,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
   if(LIBSYCL_LIBDIR_SUBDIR)
     string(APPEND LIBSYCL_TARGET_SUBDIR /${LIBSYCL_LIBDIR_SUBDIR})
   endif()
+  cmake_path(NORMAL_PATH LIBSYCL_TARGET_SUBDIR)
   set(LIBSYCL_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBSYCL_TARGET_SUBDIR})
   set(LIBSYCL_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LIBSYCL_TARGET_SUBDIR} CACHE STRING
       "Path where built libsycl libraries should be installed.")
@@ -76,15 +76,10 @@ install(FILES
 # Setup Compiler Flags
 #===============================================================================
 
-# Starting CMake 3.26 this property as ON by default. With 3.20+ we still need to set it.
-if(MSVC)
-  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-endif()
-
 # Enable all warnings by default
-if (MSVC)
+if(MSVC)
   append("/W4" CMAKE_CXX_FLAGS)
-else ()
+else()
   append("-Wall -Wextra" CMAKE_CXX_FLAGS)
 endif()
 

>From c44530c764da01f5a7d68bbf76d847b120e05e7e Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 04:10:36 -0700
Subject: [PATCH 22/31] change build

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                        | 20 +++++++++++-
 .../cmake/modules/FetchUnifiedRuntime.cmake   | 32 -------------------
 libsycl/src/CMakeLists.txt                    |  8 +++++
 3 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 46509f075a9f8..d38f73fc97571 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -108,18 +108,36 @@ file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_SOURCE_INCLUD
 
 string(REPLACE "${LIBSYCL_SOURCE_INCLUDE_DIR}" "${LIBSYCL_BUILD_INCLUDE_DIR}"
   OUT_HEADERS_IN_SYCL_DIR "${HEADERS_IN_SYCL_DIR}")
+set(OUT_UR_HEADERS
+  ${LIBSYCL_BUILD_INCLUDE_DIR}/ur_api.h
+  ${LIBSYCL_BUILD_INCLUDE_DIR}/ur_api_funcs.def
+  ${LIBSYCL_BUILD_INCLUDE_DIR}/ur_print.hpp)
+set(UR_HEADERS_TO_COPY
+  ${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_api.h
+  ${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_api_funcs.def
+  ${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_print.hpp)
 
 # Copy SYCL headers from sources to build directory
 add_custom_target(sycl-headers
-  DEPENDS ${OUT_HEADERS_IN_SYCL_DIR})
+  DEPENDS ${OUT_HEADERS_IN_SYCL_DIR}
+          ${OUT_UR_HEADERS})
 
 add_custom_command(
   OUTPUT  ${OUT_HEADERS_IN_SYCL_DIR}
+          ${OUT_UR_HEADERS}
   DEPENDS ${HEADERS_IN_SYCL_DIR}
+          ${UR_HEADERS_TO_COPY}
   COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
+  COMMAND ${CMAKE_COMMAND} -E copy ${UR_HEADERS_TO_COPY} ${LIBSYCL_BUILD_INCLUDE_DIR}
   COMMENT "Copying SYCL headers...")
 
 install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INCLUDE_DIR}/sycl COMPONENT sycl-headers)
+install(FILES "${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_api.h" DESTINATION ${LIBSYCL_INCLUDE_DIR}
+  COMPONENT sycl-headers)
+install(FILES "${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_api_funcs.def" DESTINATION ${LIBSYCL_INCLUDE_DIR}
+  COMPONENT sycl-headers)
+install(FILES "${UNIFIED_RUNTIME_INCLUDE_DIR}/ur_print.hpp" DESTINATION ${LIBSYCL_INCLUDE_DIR}
+  COMPONENT sycl-headers)
 
 if (WIN32)
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})
diff --git a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
index fc7ca77de65e6..ef28c36de33ff 100644
--- a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
+++ b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
@@ -33,9 +33,6 @@ set(UR_EXTERNAL_DEPENDENCIES "sycl-headers" CACHE STRING
 if("level_zero" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_L0 ON)
 endif()
-if("level_zero_v2" IN_LIST LIBSYCL_ENABLE_BACKENDS)
-  set(UR_BUILD_ADAPTER_L0_V2 ON)
-endif()
 if("cuda" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_CUDA ON)
 endif()
@@ -44,11 +41,6 @@ if("hip" IN_LIST LIBSYCL_ENABLE_BACKENDS)
 endif()
 if("opencl" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   set(UR_BUILD_ADAPTER_OPENCL ON)
-  set(UR_OPENCL_ICD_LOADER_LIBRARY OpenCL-ICD CACHE FILEPATH
-    "Path of the OpenCL ICD Loader library" FORCE)
-endif()
-if("native_cpu" IN_LIST LIBSYCL_ENABLE_BACKENDS)
-  set(UR_BUILD_ADAPTER_NATIVE_CPU ON)
 endif()
 
 # Disable errors from warnings while building the UR.
@@ -142,11 +134,6 @@ if(LIBSYCL_UR_USE_FETCH_CONTENT)
     ${UNIFIED_RUNTIME_TAG}
   )
 
-  fetch_adapter_source(native_cpu
-    ${UNIFIED_RUNTIME_REPO}
-    ${UNIFIED_RUNTIME_TAG}
-  )
-
   if(LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_REPO)
     set(UNIFIED_RUNTIME_REPO "${LIBSYCL_UR_OVERRIDE_FETCH_CONTENT_REPO}")
   endif()
@@ -243,10 +230,6 @@ if("level_zero" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(level_zero)
 endif()
 
-if("level_zero_v2" IN_LIST LIBSYCL_ENABLE_BACKENDS)
-  add_sycl_ur_adapter(level_zero_v2)
-endif()
-
 if("cuda" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(cuda)
 endif()
@@ -259,21 +242,6 @@ if("opencl" IN_LIST LIBSYCL_ENABLE_BACKENDS)
   add_sycl_ur_adapter(opencl)
 endif()
 
-if("native_cpu" IN_LIST LIBSYCL_ENABLE_BACKENDS)
-  add_sycl_ur_adapter(native_cpu)
-
-  # Deal with OCK option
-  option(NATIVECPU_USE_OCK "Use the oneAPI Construction Kit for Native CPU" ON)
-
-  if(NATIVECPU_USE_OCK)
-    message(STATUS "Compiling Native CPU adapter with OCK support.")
-    target_compile_definitions(ur_adapter_native_cpu PRIVATE NATIVECPU_USE_OCK)
-  else()
-    message(WARNING "Compiling Native CPU adapter without OCK support.
-    Some valid SYCL programs may not build or may have low performance.")
-  endif()
-endif()
-
 install(TARGETS umf
   LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
   ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
diff --git a/libsycl/src/CMakeLists.txt b/libsycl/src/CMakeLists.txt
index baec5a685e67d..70d7479747abf 100644
--- a/libsycl/src/CMakeLists.txt
+++ b/libsycl/src/CMakeLists.txt
@@ -14,6 +14,13 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
       ${LIBSYCL_BUILD_INCLUDE_DIR}
   )
 
+  # Object libraries are not linked, so these "libraries" are in fact include
+  # directories
+  target_link_libraries(${LIB_OBJ_NAME}
+    PRIVATE
+      UnifiedRuntime-Headers
+  )
+
   add_library(${LIB_NAME} SHARED
               $<TARGET_OBJECTS:${LIB_OBJ_NAME}>)
 
@@ -72,6 +79,7 @@ function(add_sycl_rt_library LIB_NAME LIB_OBJ_NAME)
     PRIVATE
       ${CMAKE_DL_LIBS}
       ${CMAKE_THREAD_LIBS_INIT}
+      UnifiedRuntimeLoader
   )
 
   set_target_properties(${LIB_NAME} PROPERTIES

>From d60c7a00663ddc3cbafa1181f4d7ce664516365f Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 04:15:48 -0700
Subject: [PATCH 23/31] fix last comments

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 6d49899f72fe4..0fc2a382cc0c5 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -54,8 +54,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
-# The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
-# clang/lib/Driver/CMakeLists.txt.
 set(LIBSYCL_MAJOR_VERSION 0)
 set(LIBSYCL_MINOR_VERSION 1)
 set(LIBSYCL_PATCH_VERSION 0)
@@ -63,15 +61,6 @@ set(LIBSYCL_VERSION_STRING "${LIBSYCL_MAJOR_VERSION}.${LIBSYCL_MINOR_VERSION}.${
 set(LIBSYCL_ABI_NAMESPACE "V${LIBSYCL_MAJOR_VERSION}" CACHE STRING
     "The inline ABI namespace used by libsycl. It defaults to Vn where `n` is the current ABI version.")
 
-# Generate headers
-configure_file("${LIBSYCL_SOURCE_DIR}/src/version.hpp.in" "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp")
-
-# Install generated headers.
-install(FILES
-  "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp"
-  DESTINATION "${LIBSYCL_INCLUDE_DIR}/sycl"
-  COMPONENT sycl-headers)
-
 #===============================================================================
 # Setup Compiler Flags
 #===============================================================================
@@ -91,6 +80,19 @@ if(LIBSYCL_ENABLE_WERROR)
   endif()
 endif()
 
+#===============================================================================
+# Setup build & install rules
+#===============================================================================
+
+# Generate headers
+configure_file("${LIBSYCL_SOURCE_DIR}/src/version.hpp.in" "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp")
+
+# Install generated headers.
+install(FILES
+  "${LIBSYCL_BUILD_INCLUDE_DIR}/sycl/version.hpp"
+  DESTINATION "${LIBSYCL_INCLUDE_DIR}/sycl"
+  COMPONENT sycl-headers)
+
 # This is a workaround to detect changes (add or modify) in subtree which
 # are not detected by copy_directory command.
 file(GLOB_RECURSE HEADERS_IN_SYCL_DIR CONFIGURE_DEPENDS "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl/*")

>From 813cfc379d5312c2fe3a5817d5b3bb0d5ebc3f34 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 04:39:02 -0700
Subject: [PATCH 24/31] fix install dir

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index 0fc2a382cc0c5..a20ad3a598616 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -110,7 +110,7 @@ add_custom_command(
   COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl ${LIBSYCL_BUILD_INCLUDE_DIR}/sycl
   COMMENT "Copying SYCL headers...")
 
-install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INCLUDE_DIR}/sycl COMPONENT sycl-headers)
+install(DIRECTORY "${LIBSYCL_SOURCE_INCLUDE_DIR}/sycl" DESTINATION ${LIBSYCL_INCLUDE_DIR} COMPONENT sycl-headers)
 
 if (WIN32)
   set(LIBSYCL_RT_LIBS ${LIBSYCL_SHARED_OUTPUT_NAME}${LIBSYCL_MAJOR_VERSION})

>From fa933e086bf82092b2e6e3d71af9f9a1653ae171 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 06:13:40 -0700
Subject: [PATCH 25/31] fix build

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt                          |  2 +-
 libsycl/cmake/modules/FetchUnifiedRuntime.cmake | 16 ++++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index d38f73fc97571..b0d46ef1f1351 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -21,7 +21,7 @@ option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl projec
 # If LIBSYCL_ENABLE_BACKENDS is undefined, we default to enabling OpenCL and Level
 # Zero backends.
 if (NOT DEFINED LIBSYCL_ENABLE_BACKENDS)
-  set(LIBSYCL_ENABLE_BACKENDS "opencl;level_zero;level_zero_v2" CACHE STRING "Backends enabled for SYCL")
+  set(LIBSYCL_ENABLE_BACKENDS "opencl;level_zero" CACHE STRING "Backends enabled for SYCL")
 endif()
 
 #===============================================================================
diff --git a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
index ef28c36de33ff..2545be3530093 100644
--- a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
+++ b/libsycl/cmake/modules/FetchUnifiedRuntime.cmake
@@ -47,14 +47,14 @@ endif()
 # And remember origin flags before doing that.
 set(CMAKE_CXX_FLAGS_BAK "${CMAKE_CXX_FLAGS}")
 if(WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX-")
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX-")
-  # FIXME: Unified runtime build fails with /DUNICODE
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /UUNICODE")
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /UUNICODE")
+  append("/WX-" CMAKE_CXX_FLAGS)
+  append("/WX-" CMAKE_C_FLAGS)
+  # Unified runtime build fails with /DUNICODE
+  append("/UUNICODE" CMAKE_CXX_FLAGS)
+  append("/UUNICODE" CMAKE_C_FLAGS)
 else()
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error")
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
+  append("-Wno-error" CMAKE_CXX_FLAGS)
+  append("-Wno-error" CMAKE_C_FLAGS)
 endif()
 
 if(LIBSYCL_UR_USE_FETCH_CONTENT)
@@ -104,7 +104,7 @@ if(LIBSYCL_UR_USE_FETCH_CONTENT)
   endfunction()
 
   set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
-  set(UNIFIED_RUNTIME_TAG d03f19a88e42cb98be9604ff24b61190d1e48727)
+  set(UNIFIED_RUNTIME_TAG 851ee6a2bb5f5c34c6e48a00e0b06255044e0f03)
 
   set(UMF_BUILD_EXAMPLES OFF CACHE INTERNAL "EXAMPLES")
   # Due to the use of dependentloadflag and no installer for UMF and hwloc we need

>From 2784e63febd89338fe4ea02e0ea7e68287691d9f Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 06:32:27 -0700
Subject: [PATCH 26/31] add UR overview

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/docs/DesignDocs/UnifiedRuntime.rst | 26 ++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 libsycl/docs/DesignDocs/UnifiedRuntime.rst

diff --git a/libsycl/docs/DesignDocs/UnifiedRuntime.rst b/libsycl/docs/DesignDocs/UnifiedRuntime.rst
new file mode 100644
index 0000000000000..64081d8893c5b
--- /dev/null
+++ b/libsycl/docs/DesignDocs/UnifiedRuntime.rst
@@ -0,0 +1,26 @@
+=====================
+Unified Runtime
+=====================
+
+.. contents::
+   :local:
+
+.. _unified runtime:
+
+Overview
+========
+
+The Unified Runtime project serves as an interface layer between the SYCL
+runtime and the device-specific runtime layers which control execution on
+devices. The parts of it primarily utilized by SYCL RT are its C API, loader
+library, and the adapter libraries that implement the API for various backends.
+
+The SYCL runtime accesses the UR API via the Adapter object. Each Adapter
+object owns a ur_adapter_handle_t, which represents a UR backend (e.g. OpenCL,
+Level Zero, etc).
+
+For detailed information about the UR project including
+the API specification see the `Unified Runtime Documentation
+<https://oneapi-src.github.io/unified-runtime/core/INTRO.html>`__. You
+can find the Unified Runtime repo `here
+<https://github.com/oneapi-src/unified-runtime>`__.

>From afae9a8d5168a5e7248590afc4f5f063d8e78af7 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 06:38:27 -0700
Subject: [PATCH 27/31] fix merge confict issue

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/CMakeLists.txt | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/libsycl/CMakeLists.txt b/libsycl/CMakeLists.txt
index ee8bec87a8b5f..dc167a165edaf 100644
--- a/libsycl/CMakeLists.txt
+++ b/libsycl/CMakeLists.txt
@@ -60,16 +60,12 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBSYCL_LIBRARY_DIR})
 
-<<<<<<< HEAD
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
 
 # Download & build dependency for kernel offloading
 include(FetchUnifiedRuntime)
 
-# The change in LIBSYCL_MAJOR_VERSION must be accompanied with the same update in
-# clang/lib/Driver/CMakeLists.txt.
-=======
->>>>>>> addlibsycl
+
 set(LIBSYCL_MAJOR_VERSION 0)
 set(LIBSYCL_MINOR_VERSION 1)
 set(LIBSYCL_PATCH_VERSION 0)

>From 889d17fa752323cb9fb390ed644f1687296805c0 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Thu, 5 Jun 2025 06:39:38 -0700
Subject: [PATCH 28/31] Align folder name with libcxx

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/cmake/{modules => Modules}/FetchUnifiedRuntime.cmake | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename libsycl/cmake/{modules => Modules}/FetchUnifiedRuntime.cmake (100%)

diff --git a/libsycl/cmake/modules/FetchUnifiedRuntime.cmake b/libsycl/cmake/Modules/FetchUnifiedRuntime.cmake
similarity index 100%
rename from libsycl/cmake/modules/FetchUnifiedRuntime.cmake
rename to libsycl/cmake/Modules/FetchUnifiedRuntime.cmake

>From 7fb24ad74ff8e0caab8509a5e53bea76399823c3 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 24 Jun 2025 09:30:32 -0700
Subject: [PATCH 29/31] fix comments in docs

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 libsycl/docs/DesignDocs/UnifiedRuntime.rst | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/libsycl/docs/DesignDocs/UnifiedRuntime.rst b/libsycl/docs/DesignDocs/UnifiedRuntime.rst
index 64081d8893c5b..5f20bc67985a0 100644
--- a/libsycl/docs/DesignDocs/UnifiedRuntime.rst
+++ b/libsycl/docs/DesignDocs/UnifiedRuntime.rst
@@ -7,10 +7,7 @@ Unified Runtime
 
 .. _unified runtime:
 
-Overview
-========
-
-The Unified Runtime project serves as an interface layer between the SYCL
+The Unified Runtime (UR) project serves as an interface layer between the SYCL
 runtime and the device-specific runtime layers which control execution on
 devices. The parts of it primarily utilized by SYCL RT are its C API, loader
 library, and the adapter libraries that implement the API for various backends.

>From ed06d2e4104033380bbca47eb699945d500edd16 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 8 Jul 2025 08:15:49 -0700
Subject: [PATCH 30/31] simple linux workflow

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 .github/workflows/libsycl-build-and-test.yaml | 43 +++++++++++++++++++
 libsycl/utils/ci/actions/cleanup/action.yml   |  8 ++++
 libsycl/utils/ci/actions/cleanup/cleanup.js   |  4 ++
 libsycl/utils/ci/actions/cleanup/dummy.js     |  1 +
 4 files changed, 56 insertions(+)
 create mode 100644 .github/workflows/libsycl-build-and-test.yaml
 create mode 100644 libsycl/utils/ci/actions/cleanup/action.yml
 create mode 100644 libsycl/utils/ci/actions/cleanup/cleanup.js
 create mode 100644 libsycl/utils/ci/actions/cleanup/dummy.js

diff --git a/.github/workflows/libsycl-build-and-test.yaml b/.github/workflows/libsycl-build-and-test.yaml
new file mode 100644
index 0000000000000..f25c03a4a4890
--- /dev/null
+++ b/.github/workflows/libsycl-build-and-test.yaml
@@ -0,0 +1,43 @@
+# This file defines pre-commit CI for libsycl++.
+name: Build libsycl
+on:
+  pull_request:
+    paths:
+      - 'libsycl/**
+      - '.github/workflows/libsycl-build-and-test.yaml'
+    paths-ignore:
+      - 'libsycl/doc/**'
+      - 'libsycl/**.md'
+
+permissions:
+  contents: read # Default everything to read-only
+
+concurrency:
+  # Cancel a currently running workflow from the same PR
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
+  cancel-in-progress: true
+
+jobs:
+  build_ubuntu2204:
+    # sergey-semenov repo is set is for test purposes
+    if: github.repository_owner == 'sergey-semenov'
+    # github runners
+    runs-on: ubuntu-22.04
+    # reuse libcxx container for now
+    container: ghcr.io/llvm/libcxx-linux-builder:2b57ebb50b6d418e70382e655feaa619b558e254
+    continue-on-error: false
+    steps:
+      - uses: actions/checkout at v4
+      - name: Register cleanup after job is finished
+        uses: ./libsycl/utils/ci/actions/cleanup
+      - name: Compile
+        run: |
+          mkdir -p $GITHUB_WORKSPACE/build
+          mkdir -p $GITHUB_WORKSPACE/install
+          cmake -G Ninja -S $llvm/llvm -B $GITHUB_WORKSPACE/build \
+            -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
+            -DLLVM_INSTALL_UTILS=ON \
+            -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install \
+            -DLLVM_ENABLE_RUNTIMES="libsycl" \
+            -DCMAKE_BUILD_TYPE=Release
+          ninja -C $GITHUB_WORKSPACE/build install --verbose
diff --git a/libsycl/utils/ci/actions/cleanup/action.yml b/libsycl/utils/ci/actions/cleanup/action.yml
new file mode 100644
index 0000000000000..c040c98a6f551
--- /dev/null
+++ b/libsycl/utils/ci/actions/cleanup/action.yml
@@ -0,0 +1,8 @@
+name: 'Cleanup'
+description: 'Cleanup work directory upon job finish'
+
+runs:
+  using: 'node16'
+  main: 'dummy.js'
+  post: 'cleanup.js'
+
diff --git a/libsycl/utils/ci/actions/cleanup/cleanup.js b/libsycl/utils/ci/actions/cleanup/cleanup.js
new file mode 100644
index 0000000000000..29c002256cd68
--- /dev/null
+++ b/libsycl/utils/ci/actions/cleanup/cleanup.js
@@ -0,0 +1,4 @@
+const path = process.env.GITHUB_WORKSPACE + '/*';
+console.log('Cleaning ' + path)
+require('child_process').execSync('rm -rf ' + path);
+require('child_process').execSync('rm -rf ' + process.env.GITHUB_WORKSPACE + '/.git');
diff --git a/libsycl/utils/ci/actions/cleanup/dummy.js b/libsycl/utils/ci/actions/cleanup/dummy.js
new file mode 100644
index 0000000000000..ccc384396116d
--- /dev/null
+++ b/libsycl/utils/ci/actions/cleanup/dummy.js
@@ -0,0 +1 @@
+console.log('setup cleanup');

>From 5802716f7c2ecc8ee3c2fd3c577e6c69c2096927 Mon Sep 17 00:00:00 2001
From: "Tikhomirova, Kseniya" <kseniya.tikhomirova at intel.com>
Date: Tue, 8 Jul 2025 08:28:29 -0700
Subject: [PATCH 31/31] fix syntax in workflow

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
---
 .github/workflows/libsycl-build-and-test.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/libsycl-build-and-test.yaml b/.github/workflows/libsycl-build-and-test.yaml
index f25c03a4a4890..97d2f776211d3 100644
--- a/.github/workflows/libsycl-build-and-test.yaml
+++ b/.github/workflows/libsycl-build-and-test.yaml
@@ -3,7 +3,7 @@ name: Build libsycl
 on:
   pull_request:
     paths:
-      - 'libsycl/**
+      - 'libsycl/**'
       - '.github/workflows/libsycl-build-and-test.yaml'
     paths-ignore:
       - 'libsycl/doc/**'



More information about the llvm-commits mailing list