[llvm-commits] [compiler-rt] r170691 - in /compiler-rt/trunk/lib/sanitizer_common: CMakeLists.txt sanitizer_symbolizer_itanium.cc tests/CMakeLists.txt
Alexey Samsonov
samsonov at google.com
Thu Dec 20 05:24:21 PST 2012
Author: samsonov
Date: Thu Dec 20 07:24:21 2012
New Revision: 170691
URL: http://llvm.org/viewvc/llvm-project?rev=170691&view=rev
Log:
[Sanitizer] Modify CMake build rules for sanitizer_common unit tests: build them with fresh Clang for both 32- and 64-bits (if possible)
Modified:
compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt
compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc
compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
Modified: compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt?rev=170691&r1=170690&r2=170691&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt Thu Dec 20 07:24:21 2012
@@ -55,13 +55,5 @@
# 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()
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc?rev=170691&r1=170690&r2=170691&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc Thu Dec 20 07:24:21 2012
@@ -39,4 +39,4 @@
return MangledName;
}
-#endif // __APPLE__ || __linux__
+#endif // __APPLE__ || __linux__
Modified: compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt?rev=170691&r1=170690&r2=170691&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt Thu Dec 20 07:24:21 2012
@@ -1,3 +1,6 @@
+include(CompilerRTCompile)
+include(CompilerRTUnittests)
+
set(SANITIZER_UNITTESTS
sanitizer_allocator_test.cc
sanitizer_common_test.cc
@@ -12,16 +15,57 @@
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(
More information about the llvm-commits
mailing list