diff --git a/sycl/CMakeLists.txt b/sycl/CMakeLists.txt index 8823bc6ca870f..7dde4b4515322 100644 --- a/sycl/CMakeLists.txt +++ b/sycl/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(SYCL_ENABLE_WERROR "Treat all warnings as errors in SYCL project" OFF) +option(SYCL_DISABLE_STL_ASSERTIONS "Disable assertions in STL containers" OFF) option(SYCL_ADD_DEV_VERSION_POSTFIX "Adds -V postfix to version string" ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") @@ -248,6 +249,17 @@ function( add_common_options LIB_NAME) endif() endfunction(add_common_options) + +if (LLVM_ENABLE_ASSERTIONS AND NOT SYCL_DISABLE_STL_ASSERTIONS) + if(SYCL_USE_LIBCXX) + add_definitions(-D_LIBCPP_DEBUG=1) + set(SYCL_CLANG_EXTRA_FLAGS "${SYCL_CLANG_EXTRA_FLAGS} -D_LIBCPP_DEBUG=1") + else() + add_definitions(-D_GLIBCXX_ASSERTIONS=1) + set(SYCL_CLANG_EXTRA_FLAGS "${SYCL_CLANG_EXTRA_FLAGS} -D_GLIBCXX_ASSERTIONS=1") + endif() +endif() + set(SYCL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # SYCL runtime library diff --git a/sycl/cmake/modules/AddSYCLExecutable.cmake b/sycl/cmake/modules/AddSYCLExecutable.cmake index 31d7f032c9cea..e76e8dc2b8c48 100644 --- a/sycl/cmake/modules/AddSYCLExecutable.cmake +++ b/sycl/cmake/modules/AddSYCLExecutable.cmake @@ -19,10 +19,18 @@ macro(add_sycl_executable ARG_TARGET_NAME) list(APPEND LINKED_LIBS "${LIB_PREFIX}${_lib}${LIB_POSTFIX}") endforeach() + if (LLVM_ENABLE_ASSERTIONS AND NOT SYCL_DISABLE_STL_ASSERTIONS) + if(SYCL_USE_LIBCXX) + set(_SYCL_EXTRA_FLAGS -D_LIBCPP_DEBUG=1) + else() + set(_SYCL_EXTRA_FLAGS -D_GLIBCXX_ASSERTIONS=1) + endif() + endif() + add_custom_target(${ARG_TARGET_NAME}_exec ALL COMMAND ${DEVICE_COMPILER_EXECUTABLE} -fsycl ${ARG_SOURCES} -o ${CMAKE_CURRENT_BINARY_DIR}/${ARG_TARGET_NAME} - ${LINKED_LIBS} ${ARG_OPTIONS} + ${LINKED_LIBS} ${ARG_OPTIONS} ${_SYCL_EXTRA_FLAGS} BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${ARG_TARGET_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND_EXPAND_LISTS) diff --git a/sycl/test/lit.cfg.py b/sycl/test/lit.cfg.py index 6d06bd29918af..bb27ad2ba8b92 100644 --- a/sycl/test/lit.cfg.py +++ b/sycl/test/lit.cfg.py @@ -43,6 +43,8 @@ config.available_features.add('linux') llvm_config.with_system_environment('LD_LIBRARY_PATH') llvm_config.with_environment('LD_LIBRARY_PATH', config.sycl_libs_dir, append_path=True) + llvm_config.with_system_environment('CFLAGS') + llvm_config.with_environment('CFLAGS', config.sycl_clang_extra_flags) elif platform.system() == "Windows": config.available_features.add('windows') diff --git a/sycl/test/lit.site.cfg.py.in b/sycl/test/lit.site.cfg.py.in index a8d456eddd3b5..60f724e1c3ecf 100644 --- a/sycl/test/lit.site.cfg.py.in +++ b/sycl/test/lit.site.cfg.py.in @@ -17,6 +17,7 @@ config.cuda_toolkit_include = "@CUDA_TOOLKIT_INCLUDE@" config.sycl_tools_src_dir = "@SYCL_TOOLS_SRC_DIR@" config.llvm_build_lib_dir = "@LLVM_BUILD_LIBRARY_DIRS@" config.llvm_build_bin_dir = "@LLVM_BUILD_BINARY_DIRS@" +config.sycl_clang_extra_flags = "@SYCL_CLANG_EXTRA_FLAGS@" config.llvm_enable_projects = "@LLVM_ENABLE_PROJECTS@"