CMakeLists.txt revision 43b4b9c18a7a588a60b9d976391ad8e2f5f9a309
1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov# Build for the undefined behavior sanitizer runtime support library. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovset(UBSAN_SOURCES 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ubsan_diag.cc 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ubsan_handlers.cc 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ubsan_handlers_cxx.cc 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ubsan_type_hash.cc 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ubsan_value.cc 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinclude_directories(..) 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovset(UBSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovfilter_available_targets(UBSAN_SUPPORTED_ARCH 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov x86_64 i386) 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovset(UBSAN_RUNTIME_LIBRARIES) 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovif(APPLE) 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov # Build universal binary on APPLE. 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov add_library(clang_rt.ubsan_osx STATIC 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ${UBSAN_SOURCES} 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov $<TARGET_OBJECTS:RTSanitizerCommon.osx> 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_target_compile_flags(clang_rt.ubsan_osx ${UBSAN_CFLAGS}) 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_target_properties(clang_rt.ubsan_osx PROPERTIES 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OSX_ARCHITECTURES "${UBSAN_SUPPORTED_ARCH}") 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan_osx) 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovelse() 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov # Build separate libraries for each target. 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov foreach(arch ${UBSAN_SUPPORTED_ARCH}) 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov add_library(clang_rt.ubsan-${arch} STATIC 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ${UBSAN_SOURCES} 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_target_compile_flags(clang_rt.ubsan-${arch} 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ${UBSAN_CFLAGS} ${TARGET_${arch}_CFLAGS} 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ) 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-${arch}) 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov endforeach() 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovendif() 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovset_property(TARGET ${UBSAN_RUNTIME_LIBRARIES} APPEND PROPERTY 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov COMPILE_DEFINITIONS ${UBSAN_COMMON_DEFINITIONS}) 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovadd_clang_compiler_rt_libraries(${UBSAN_RUNTIME_LIBRARIES}) 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovadd_subdirectory(lit_tests) 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov