diff options
| author | Alexey Samsonov <samsonov@google.com> | 2012-12-20 13:24:21 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2012-12-20 13:24:21 +0000 |
| commit | 01674dfc8f1ff52d33ecafe0e9564db0bf53f871 (patch) | |
| tree | 3c6d46f5ee34eeff8fdf95259a81c00a515feda1 | |
| parent | 5e9e51874e108189d98e1aab6a9708edeaf0fa38 (diff) | |
| download | bcm5719-llvm-01674dfc8f1ff52d33ecafe0e9564db0bf53f871.tar.gz bcm5719-llvm-01674dfc8f1ff52d33ecafe0e9564db0bf53f871.zip | |
[Sanitizer] Modify CMake build rules for sanitizer_common unit tests: build them with fresh Clang for both 32- and 64-bits (if possible)
llvm-svn: 170691
3 files changed, 52 insertions, 16 deletions
diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/CMakeLists.txt index c9eff4db7ae..fb01f27c874 100644 --- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt +++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt @@ -55,13 +55,5 @@ endif() # Unit tests for common sanitizer runtime. if(LLVM_INCLUDE_TESTS) - # Build stand-alone static sanitizer runtime for use in unit tests. - add_library(RTSanitizerCommon.test STATIC ${SANITIZER_SOURCES}) - # Build test library with debug info. - set_target_compile_flags(RTSanitizerCommon.test - ${SANITIZER_CFLAGS} -g) - set_target_properties(RTSanitizerCommon.test PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - add_subdirectory(tests) endif() diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc index 8f71546a817..43862949292 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc @@ -39,4 +39,4 @@ const char *__sanitizer::Demangle(const char *MangledName) { return MangledName; } -#endif // __APPLE__ || __linux__ +#endif // __APPLE__ || __linux__ diff --git a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt index 3baa08bc20d..9a0d611407e 100644 --- a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt +++ b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt @@ -1,3 +1,6 @@ +include(CompilerRTCompile) +include(CompilerRTUnittests) + set(SANITIZER_UNITTESTS sanitizer_allocator_test.cc sanitizer_common_test.cc @@ -12,16 +15,57 @@ set(SANITIZER_UNITTESTS include_directories(..) include_directories(../..) -# Unittest target. +# Sanitizer_common unit tests testsuite. add_custom_target(SanitizerUnitTests) set_target_properties(SanitizerUnitTests PROPERTIES FOLDER "Sanitizer unittests") -add_unittest(SanitizerUnitTests SanitizerUnitTest ${SANITIZER_UNITTESTS}) -# Link with sanitizer runtime. -target_link_libraries(SanitizerUnitTest RTSanitizerCommon.test) -# Build unit tests with debug info. -set_property(TARGET SanitizerUnitTest APPEND_STRING - PROPERTY COMPILE_FLAGS " -g -Werror") + +# Adds sanitizer tests for architecture. +macro(add_sanitizer_tests_for_arch arch) + get_target_flags_for_arch(${arch} TARGET_FLAGS) + set(SANITIZER_TEST_SOURCES ${SANITIZER_UNITTESTS} + ${COMPILER_RT_GTEST_SOURCE}) + set(SANITIZER_TEST_CFLAGS ${COMPILER_RT_GTEST_INCLUDE_CFLAGS} + -I${COMPILER_RT_SOURCE_DIR}/include + -I${COMPILER_RT_SOURCE_DIR}/lib + -I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common + -O2 -g ${TARGET_FLAGS}) + set(SANITIZER_TEST_LINK_FLAGS -lstdc++ -lpthread ${TARGET_FLAGS}) + set(SANITIZER_TEST_OBJECTS) + foreach(source ${SANITIZER_TEST_SOURCES}) + get_filename_component(basename ${source} NAME) + set(output_obj "${basename}.${arch}.o") + clang_compile(${output_obj} ${source} + CFLAGS ${SANITIZER_TEST_CFLAGS} + DEPS gtest ${SANITIZER_RUNTIME_LIBRARIES}) + list(APPEND SANITIZER_TEST_OBJECTS ${output_obj}) + endforeach() + # Add static library which contains sanitizer_common + # object files for given arch. + set(SANITIZER_COMMON_LIB "RTSanitizerCommon.test.${arch}") + add_library(${SANITIZER_COMMON_LIB} STATIC + $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>) + set_target_properties(${SANITIZER_COMMON_LIB} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set(SANITIZER_COMMON_LIB_NAME "lib${SANITIZER_COMMON_LIB}.a") + add_custom_target(${SANITIZER_COMMON_LIB_NAME} + DEPENDS ${SANITIZER_COMMON_LIB}) + # Add unittest target. + set(SANITIZER_TEST_NAME "Sanitizer-${arch}-Test") + add_compiler_rt_test(SanitizerUnitTests ${SANITIZER_TEST_NAME} + OBJECTS ${SANITIZER_TEST_OBJECTS} + ${SANITIZER_COMMON_LIB_NAME} + LINK_FLAGS ${SANITIZER_TEST_LINK_FLAGS}) +endmacro() + +if("${CMAKE_HOST_SYSTEM}" STREQUAL "${CMAKE_SYSTEM}" AND UNIX AND NOT ANDROID) + if(CAN_TARGET_X86_64) + add_sanitizer_tests_for_arch(x86_64) + endif() + if(CAN_TARGET_I386) + add_sanitizer_tests_for_arch(i386) + endif() +endif() # Run unittests as a part of lit testsuite. configure_lit_site_cfg( |

