1function(find_compiler_rt_library name variable) 2 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() 7 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}) 10 execute_process( 11 COMMAND ${CLANG_COMMAND} 12 RESULT_VARIABLE HAD_ERROR 13 OUTPUT_VARIABLE LIBRARY_FILE 14 ) 15 string(STRIP "${LIBRARY_FILE}" LIBRARY_FILE) 16 file(TO_CMAKE_PATH "${LIBRARY_FILE}" LIBRARY_FILE) 17 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}") 20 set(${variable} "${LIBRARY_FILE}" PARENT_SCOPE) 21 else() 22 message(STATUS "Failed to find compiler-rt ${name} library") 23 endif() 24endfunction() 25