-
Notifications
You must be signed in to change notification settings - Fork 0
[SYCL] Add libsycl, a SYCL RT library implementation project #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 18 commits
60239fb
6a8fba6
8a6463f
998fb9b
43a1bc2
ca41e90
6ba565a
7610d78
6b688ad
0d930ef
2acca61
737a405
abda611
9f3093c
5157163
d7f006c
56848ac
0414f6d
59f8e25
05723f7
d60c7a0
813cfc3
3a023e4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| BasedOnStyle: LLVM |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +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, | ||
| -cppcoreguidelines-pro-type-union-access, | ||
| google-*, | ||
| -google-build-using-namespace, | ||
| -google-explicit-constructor, | ||
| -google-runtime-references, | ||
| misc-*, | ||
| -misc-macro-parentheses, | ||
| -misc-unused-parameters |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,123 @@ | ||
| #=============================================================================== | ||
| # 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 CACHE STRING "C++ standard to conform to") | ||
| set(CMAKE_CXX_STANDARD_REQUIRED YES) | ||
| set(CMAKE_CXX_EXTENSIONS OFF) | ||
|
|
||
| #=============================================================================== | ||
| # Setup CMake Options | ||
| #=============================================================================== | ||
|
|
||
| option(LIBSYCL_ENABLE_WERROR "Treat all warnings as errors in the libsycl project" OFF) | ||
|
|
||
| #=============================================================================== | ||
| # Configure System | ||
| #=============================================================================== | ||
|
|
||
| set(LIBSYCL_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING | ||
| "Path where libsycl headers 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}) | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| 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 | ||
| # clang/lib/Driver/CMakeLists.txt. | ||
KseniyaTikhomirova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 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 | ||
| #=============================================================================== | ||
|
|
||
| # 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) | ||
KseniyaTikhomirova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| append("/W4" CMAKE_CXX_FLAGS) | ||
| else () | ||
| append("-Wall -Wextra" CMAKE_CXX_FLAGS) | ||
| endif() | ||
|
|
||
| if(LIBSYCL_ENABLE_WERROR) | ||
| if(MSVC) | ||
| append("/WX" CMAKE_CXX_FLAGS) | ||
| else() | ||
| 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. | ||
| 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}) | ||
|
|
||
| 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 | ||
| COMMENT "Copying SYCL headers...") | ||
KseniyaTikhomirova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| 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() | ||
|
|
||
| add_subdirectory(src) | ||
|
|
||
| add_custom_target(libsycl-runtime-libraries | ||
| DEPENDS ${LIBSYCL_RT_LIBS} | ||
| ) | ||
Uh oh!
There was an error while loading. Please reload this page.