diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-09-29 13:18:55 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2014-09-29 13:18:55 +0000 |
commit | 44014739f2d5d33a9030f68b4621b29b7dbf88ab (patch) | |
tree | 62044714609894a5a3af05634b6a65c0e3456274 /lib/sanitizer_common/tests/CMakeLists.txt | |
parent | 8cf642b8dac6eefa2c707a67dea810629aa13e10 (diff) |
[sanitizer] Android build cleanup.
* Detect Android toolchain target arch and set correct runtime library name.
* Merged a lot of Android and non-Android code paths.
* Android is only supported in standalone build of compiler-rt now.
* Linking lsan-common in ASan-Android (makes lsan annotations work).
* Relying on -fsanitize=address linker flag when building tests (again,
unification with non-Android path).
* Runtime library moved from lib/asan to lib/linux.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@218605 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/tests/CMakeLists.txt')
-rw-r--r-- | lib/sanitizer_common/tests/CMakeLists.txt | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/lib/sanitizer_common/tests/CMakeLists.txt b/lib/sanitizer_common/tests/CMakeLists.txt index 480badda0..40725ad72 100644 --- a/lib/sanitizer_common/tests/CMakeLists.txt +++ b/lib/sanitizer_common/tests/CMakeLists.txt @@ -57,6 +57,11 @@ if(NOT MSVC) list(APPEND SANITIZER_TEST_LINK_FLAGS_COMMON --driver-mode=g++) endif() +set(SANITIZER_TEST_LINK_LIBS) +append_if(ANDROID log SANITIZER_TEST_LINK_LIBS) +# NDK r10 requires -latomic almost always. +append_if(ANDROID atomic SANITIZER_TEST_LINK_LIBS) + append_if(COMPILER_RT_HAS_LIBDL -ldl SANITIZER_TEST_LINK_FLAGS_COMMON) append_if(COMPILER_RT_HAS_LIBPTHREAD -pthread SANITIZER_TEST_LINK_FLAGS_COMMON) # x86_64 FreeBSD 9.2 additionally requires libc++ to build the tests. Also, @@ -172,20 +177,21 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID) endif() if(ANDROID) - # We assume that unit tests on Android are built in a build - # tree with fresh Clang as a host compiler. - add_executable(SanitizerTest - ${SANITIZER_UNITTESTS} - ${COMPILER_RT_GTEST_SOURCE} - $<TARGET_OBJECTS:RTSanitizerCommon.arm.android>) - set_target_compile_flags(SanitizerTest - ${SANITIZER_COMMON_CFLAGS} - ${SANITIZER_TEST_CFLAGS_COMMON}) - # Setup correct output directory and link flags. - set_target_properties(SanitizerTest PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - set_target_link_flags(SanitizerTest ${SANITIZER_TEST_LINK_FLAGS_COMMON}) - target_link_libraries(SanitizerTest log) - # Add unit test to test suite. - add_dependencies(SanitizerUnitTests SanitizerTest) + foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH}) + add_executable(SanitizerTest + ${SANITIZER_UNITTESTS} + ${COMPILER_RT_GTEST_SOURCE} + $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> + $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>) + set_target_compile_flags(SanitizerTest + ${SANITIZER_COMMON_CFLAGS} + ${SANITIZER_TEST_CFLAGS_COMMON}) + # Setup correct output directory and link flags. + set_target_properties(SanitizerTest PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set_target_link_flags(SanitizerTest ${SANITIZER_TEST_LINK_FLAGS_COMMON}) + target_link_libraries(SanitizerTest ${SANITIZER_TEST_LINK_LIBS}) + # Add unit test to test suite. + add_dependencies(SanitizerUnitTests SanitizerTest) + endforeach() endif() |