blob: 61b7792789e7c63e58badffa1b64ecf4dd19dc4f [file] [log] [blame]
Petr Hosek313baf62018-05-17 20:35:55 +00001function(find_compiler_rt_library name variable)
Petr Hosekd630c5d2017-07-28 03:39:38 +00002 set(CLANG_COMMAND ${CMAKE_CXX_COMPILER} ${SANITIZER_COMMON_CFLAGS}
3 "--rtlib=compiler-rt" "--print-libgcc-file-name")
4 if (CMAKE_CXX_COMPILER_ID MATCHES Clang AND CMAKE_CXX_COMPILER_TARGET)
5 list(APPEND CLANG_COMMAND "--target=${CMAKE_CXX_COMPILER_TARGET}")
6 endif()
Petr Hosek0a3b1592018-11-14 00:09:26 +00007 get_property(SANITIZER_CXX_FLAGS CACHE CMAKE_CXX_FLAGS PROPERTY VALUE)
8 string(REPLACE " " ";" SANITIZER_CXX_FLAGS "${SANITIZER_CXX_FLAGS}")
9 list(APPEND CLANG_COMMAND ${SANITIZER_CXX_FLAGS})
Petr Hosekd630c5d2017-07-28 03:39:38 +000010 execute_process(
11 COMMAND ${CLANG_COMMAND}
12 RESULT_VARIABLE HAD_ERROR
13 OUTPUT_VARIABLE LIBRARY_FILE
14 )
15 string(STRIP "${LIBRARY_FILE}" LIBRARY_FILE)
Martin Storsjo8b2ba612018-11-27 09:23:15 +000016 file(TO_CMAKE_PATH "${LIBRARY_FILE}" LIBRARY_FILE)
Petr Hosekd630c5d2017-07-28 03:39:38 +000017 string(REPLACE "builtins" "${name}" LIBRARY_FILE "${LIBRARY_FILE}")
18 if (NOT HAD_ERROR AND EXISTS "${LIBRARY_FILE}")
19 message(STATUS "Found compiler-rt ${name} library: ${LIBRARY_FILE}")
Petr Hosek313baf62018-05-17 20:35:55 +000020 set(${variable} "${LIBRARY_FILE}" PARENT_SCOPE)
Petr Hosekd630c5d2017-07-28 03:39:38 +000021 else()
22 message(STATUS "Failed to find compiler-rt ${name} library")
23 endif()
24endfunction()