CMakeLists.txt revision 2aad7c137771f6f7a734390e09c94a13120d054a
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project# Build for the AddressSanitizer runtime support library. 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectset(ASAN_SOURCES 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_allocator.cc 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_allocator2.cc 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_fake_stack.cc 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_globals.cc 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_interceptors.cc 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_linux.cc 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_mac.cc 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_malloc_linux.cc 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_malloc_mac.cc 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_malloc_win.cc 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_new_delete.cc 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_poisoning.cc 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_posix.cc 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_report.cc 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_rtl.cc 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_stack.cc 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_stats.cc 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_thread.cc 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_thread_registry.cc 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project asan_win.cc 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ) 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectset(ASAN_DYLIB_SOURCES 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ${ASAN_SOURCES} 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dynamic/asan_interceptors_dynamic.cc 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ) 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinclude_directories(..) 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectset(ASAN_CFLAGS ${SANITIZER_COMMON_CFLAGS}) 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectif(ANDROID) 360cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn set(ASAN_COMMON_DEFINITIONS 370cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ASAN_HAS_EXCEPTIONS=1 380cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0 394a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn ASAN_NEEDS_SEGV=0 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ASAN_LOW_MEMORY=1 410cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ) 420cd6376fa14089cee42991f751962ffd7f455797Dianne Hackbornelse() 430cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn set(ASAN_COMMON_DEFINITIONS 440cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ASAN_HAS_EXCEPTIONS=1 450cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0 460cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ASAN_NEEDS_SEGV=1 474a51c20ce607c74914f90fd897f04080121ac13bDianne Hackborn ) 480cd6376fa14089cee42991f751962ffd7f455797Dianne Hackbornendif() 490cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn 500cd6376fa14089cee42991f751962ffd7f455797Dianne Hackbornset(ASAN_DYLIB_DEFINITIONS 510cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ${ASAN_COMMON_DEFINITIONS} 520cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn MAC_INTERPOSE_FUNCTIONS=1 530cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ) 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project# Architectures supported by ASan. 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectfilter_available_targets(ASAN_SUPPORTED_ARCH 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x86_64 i386) 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectset(ASAN_RUNTIME_LIBRARIES) 600cd6376fa14089cee42991f751962ffd7f455797Dianne Hackbornif(APPLE) 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project # Build universal binary on APPLE. 620cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn add_compiler_rt_osx_static_runtime(clang_rt.asan_osx 630cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn ARCH ${ASAN_SUPPORTED_ARCH} 640cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn SOURCES ${ASAN_SOURCES} 650cd6376fa14089cee42991f751962ffd7f455797Dianne Hackborn $<TARGET_OBJECTS:RTInterception.osx> 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTSanitizerCommon.osx> 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CFLAGS ${ASAN_CFLAGS} 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DEFS ${ASAN_COMMON_DEFINITIONS}) 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan_osx) 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectelseif(ANDROID) 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project add_library(clang_rt.asan-arm-android SHARED 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ${ASAN_SOURCES} 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTInterception.arm.android> 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTSanitizerCommon.arm.android> 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ) 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project set_target_compile_flags(clang_rt.asan-arm-android 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ${ASAN_CFLAGS}) 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project set_property(TARGET clang_rt.asan-arm-android APPEND PROPERTY 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project COMPILE_DEFINITIONS ${ASAN_COMMON_DEFINITIONS}) 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project target_link_libraries(clang_rt.asan-arm-android dl) 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-arm-android) 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectelse() 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project # Otherwise, build separate libraries for each target. 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project foreach(arch ${ASAN_SUPPORTED_ARCH}) 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project add_compiler_rt_static_runtime(clang_rt.asan-${arch} ${arch} 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SOURCES ${ASAN_SOURCES} 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTInterception.${arch}> 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CFLAGS ${ASAN_CFLAGS} 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DEFS ${ASAN_COMMON_DEFINITIONS}) 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-${arch}) 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project endforeach() 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectendif() 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectset(ASAN_DYNAMIC_RUNTIME_LIBRARIES) 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectif(APPLE) 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project # Build universal binary on APPLE. 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project add_compiler_rt_osx_dynamic_runtime(clang_rt.asan_osx_dynamic 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ARCH ${ASAN_SUPPORTED_ARCH} 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SOURCES ${ASAN_DYLIB_SOURCES} 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTInterception.osx> 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project $<TARGET_OBJECTS:RTSanitizerCommon.osx> 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CFLAGS ${ASAN_CFLAGS} 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DEFS ${ASAN_DYLIB_DEFINITIONS} 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LINKFLAGS "-framework Foundation") 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project list(APPEND ASAN_DYNAMIC_RUNTIME_LIBRARIES clang_rt.asan_osx_dynamic) 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectendif() 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectif(LLVM_INCLUDE_TESTS) 110ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project add_subdirectory(tests) 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectendif() 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectadd_subdirectory(lit_tests) 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project