[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