Skip to content

Commit 7a68fc2

Browse files
committed
GPU Standalone: Fix build using clang compiler with sanitizers
1 parent 5b6c485 commit 7a68fc2

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

GPU/GPUTracking/Standalone/CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ else()
6565
add_definitions(-DNDEBUG)
6666
endif()
6767
if (GPUCA_BUILD_DEBUG_SANITIZE)
68-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined -fno-sanitize=vptr") #TODO: Check why this does not work with clang
68+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined -fno-sanitize=vptr")
69+
if(CMAKE_CXX_COMPILER MATCHES "clang\\+\\+")
70+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -shared-libasan")
71+
endif()
6972
endif()
7073
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wall -Wextra -Wshadow -Wno-unused-function -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-unknown-pragmas -Wno-write-strings -Wno-vla-cxx-extension")
7174
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rdynamic -Wl,--no-undefined")
@@ -247,6 +250,13 @@ if(GPUCA_CONFIG_ROOT)
247250
endif()
248251
target_link_libraries(standalone_support PUBLIC Microsoft.GSL::GSL TPCFastTransformation)
249252

253+
if (GPUCA_BUILD_DEBUG_SANITIZE AND CMAKE_CXX_COMPILER MATCHES "clang\\+\\+")
254+
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libclang_rt.asan-x86_64.so OUTPUT_VARIABLE CLANG_ASAN_SO_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
255+
get_filename_component(CLANG_ASAN_SO_PATH "${CLANG_ASAN_SO_PATH}" DIRECTORY)
256+
get_filename_component(CLANG_ASAN_SO_PATH "${CLANG_ASAN_SO_PATH}" ABSOLUTE)
257+
target_link_options(ca PRIVATE "-Wl,-rpath,${CLANG_ASAN_SO_PATH}")
258+
endif()
259+
250260
# Installation
251261
install(TARGETS ca TPCFastTransformation standalone_support)
252262
install(FILES "cmake/makefile" DESTINATION "${CMAKE_INSTALL_PREFIX}")

0 commit comments

Comments
 (0)