CMakeLists.txt revision 544bdfb538d082109194952ce66907b917eb8d51
1# Build for the undefined behavior sanitizer runtime support library. 2 3set(UBSAN_SOURCES 4 ubsan_diag.cc 5 ubsan_handlers.cc 6 ubsan_value.cc 7 ) 8 9set(UBSAN_CXX_SOURCES 10 ubsan_handlers_cxx.cc 11 ubsan_type_hash.cc 12 ) 13 14include_directories(..) 15 16set(UBSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 17 18filter_available_targets(UBSAN_SUPPORTED_ARCH 19 x86_64 i386) 20 21set(UBSAN_RUNTIME_LIBRARIES) 22 23if(APPLE) 24 # Build universal binary on APPLE. 25 add_compiler_rt_osx_static_runtime(clang_rt.ubsan_osx 26 ARCH ${UBSAN_SUPPORTED_ARCH} 27 SOURCES ${UBSAN_SOURCES} ${UBSAN_CXX_SOURCES} 28 $<TARGET_OBJECTS:RTSanitizerCommon.osx> 29 CFLAGS ${UBSAN_CFLAGS}) 30 list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan_osx) 31else() 32 # Build separate libraries for each target. 33 foreach(arch ${UBSAN_SUPPORTED_ARCH}) 34 # Main UBSan runtime. 35 add_compiler_rt_static_runtime(clang_rt.ubsan-${arch} ${arch} 36 SOURCES ${UBSAN_SOURCES} 37 CFLAGS ${UBSAN_CFLAGS}) 38 # C++-specific parts of UBSan runtime. Requires a C++ ABI library. 39 add_compiler_rt_static_runtime(clang_rt.ubsan_cxx-${arch} ${arch} 40 SOURCES ${UBSAN_CXX_SOURCES} 41 CFLAGS ${UBSAN_CFLAGS}) 42 list(APPEND UBSAN_RUNTIME_LIBRARIES 43 clang_rt.san-${arch} 44 clang_rt.ubsan-${arch} 45 clang_rt.ubsan_cxx-${arch}) 46 if (UNIX AND NOT ${arch} STREQUAL "i386") 47 add_sanitizer_rt_symbols(clang_rt.ubsan-${arch} ubsan.syms.extra) 48 add_sanitizer_rt_symbols(clang_rt.ubsan_cxx-${arch} ubsan.syms.extra) 49 list(APPEND UBSAN_RUNTIME_LIBRARIES 50 clang_rt.ubsan-${arch}-symbols 51 clang_rt.ubsan_cxx-${arch}-symbols) 52 endif() 53 endforeach() 54endif() 55 56add_subdirectory(lit_tests) 57