[compiler-rt] r246199 - [CMake] Add ARCHS option to add_sanitizer_rt_symbols.

Chris Bieneman via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 27 13:07:54 PDT 2015


Author: cbieneman
Date: Thu Aug 27 15:07:54 2015
New Revision: 246199

URL: http://llvm.org/viewvc/llvm-project?rev=246199&view=rev
Log:
[CMake] Add ARCHS option to add_sanitizer_rt_symbols.

Summary:
This is another step in a multi-step refactoring to move add_sanitizer_rt_symbols in the direction of other add_* functions in compiler-rt.

Changes to CMakeLists files are all minimal except ubsan which tests the new ARCHS loop.

Further cleanup patches will follow.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D12410

Modified:
    compiler-rt/trunk/cmake/Modules/SanitizerUtils.cmake
    compiler-rt/trunk/lib/asan/CMakeLists.txt
    compiler-rt/trunk/lib/dfsan/CMakeLists.txt
    compiler-rt/trunk/lib/msan/CMakeLists.txt
    compiler-rt/trunk/lib/tsan/CMakeLists.txt
    compiler-rt/trunk/lib/ubsan/CMakeLists.txt

Modified: compiler-rt/trunk/cmake/Modules/SanitizerUtils.cmake
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/Modules/SanitizerUtils.cmake?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/cmake/Modules/SanitizerUtils.cmake (original)
+++ compiler-rt/trunk/cmake/Modules/SanitizerUtils.cmake Thu Aug 27 15:07:54 2015
@@ -4,56 +4,60 @@ set(SANITIZER_GEN_DYNAMIC_LIST
 set(SANITIZER_LINT_SCRIPT
   ${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/scripts/check_lint.sh)
 
-# Create a target "<name>-symbols" that would generate the list of symbols
-# that need to be exported from sanitizer runtime "<name>". Function
+# Create a target "<name>-<arch>-symbols" that would generate the list of
+# symbols that need to be exported from sanitizer runtime "<name>". Function
 # interceptors are exported automatically, user can also provide files with
 # symbol names that should be exported as well.
 #   add_sanitizer_rt_symbols(<name>
+#                            ARCHS <architectures>
 #                            PARENT_TARGET <convenience parent target>
 #                            EXTRA <files with extra symbols to export>)
 macro(add_sanitizer_rt_symbols name)
   cmake_parse_arguments(ARG
     ""
     "PARENT_TARGET"
-    "EXTRA"
+    "ARCHS;EXTRA"
     ${ARGN})
-  set(stamp ${CMAKE_CURRENT_BINARY_DIR}/${name}.syms-stamp)
-  set(extra_args)
-  foreach(arg ${ARG_EXTRA})
-    list(APPEND extra_args "--extra" ${arg})
-  endforeach()
-  add_custom_command(OUTPUT ${stamp}
-    COMMAND ${PYTHON_EXECUTABLE}
-      ${SANITIZER_GEN_DYNAMIC_LIST} ${extra_args} $<TARGET_FILE:${name}>
-      > $<TARGET_FILE:${name}>.syms
-    COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
-    DEPENDS ${name} ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA}
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    COMMENT "Generating exported symbols for ${name}"
-    VERBATIM)
-  add_custom_target(${name}-symbols ALL
-    DEPENDS ${stamp}
-    SOURCES ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA})
+  foreach(arch ${ARG_ARCHS})
+    set(target_name ${name}-${arch})
+    set(stamp ${CMAKE_CURRENT_BINARY_DIR}/${target_name}.syms-stamp)
+    set(extra_args)
+    foreach(arg ${ARG_EXTRA})
+      list(APPEND extra_args "--extra" ${arg})
+    endforeach()
+    add_custom_command(OUTPUT ${stamp}
+      COMMAND ${PYTHON_EXECUTABLE}
+        ${SANITIZER_GEN_DYNAMIC_LIST} ${extra_args} $<TARGET_FILE:${target_name}>
+        > $<TARGET_FILE:${target_name}>.syms
+      COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
+      DEPENDS ${target_name} ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA}
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+      COMMENT "Generating exported symbols for ${target_name}"
+      VERBATIM)
+    add_custom_target(${target_name}-symbols ALL
+      DEPENDS ${stamp}
+      SOURCES ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA})
 
-  if(NOT CMAKE_VERSION VERSION_LESS 3.0)
-    install(FILES $<TARGET_FILE:${name}>.syms
-            DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
-  else()
-    # Per-config install location.
-    if(CMAKE_CONFIGURATION_TYPES)
-      foreach(c ${CMAKE_CONFIGURATION_TYPES})
-        get_target_property(libfile ${name} LOCATION_${c})
-        install(FILES ${libfile}.syms CONFIGURATIONS ${c}
-          DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
-      endforeach()
+    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
+      install(FILES $<TARGET_FILE:${target_name}>.syms
+              DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
     else()
-      get_target_property(libfile ${name} LOCATION_${CMAKE_BUILD_TYPE})
-      install(FILES ${libfile}.syms DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
+      # Per-config install location.
+      if(CMAKE_CONFIGURATION_TYPES)
+        foreach(c ${CMAKE_CONFIGURATION_TYPES})
+          get_target_property(libfile ${target_name} LOCATION_${c})
+          install(FILES ${libfile}.syms CONFIGURATIONS ${c}
+            DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
+        endforeach()
+      else()
+        get_target_property(libfile ${target_name} LOCATION_${CMAKE_BUILD_TYPE})
+        install(FILES ${libfile}.syms DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR})
+      endif()
     endif()
-  endif()
-  if(ARG_PARENT_TARGET)
-    add_dependencies(${ARG_PARENT_TARGET} ${name}-symbols)
-  endif()
+    if(ARG_PARENT_TARGET)
+      add_dependencies(${ARG_PARENT_TARGET} ${target_name}-symbols)
+    endif()
+  endforeach()
 endmacro()
 
 macro(add_sanitizer_rt_version_list name)

Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/asan/CMakeLists.txt Thu Aug 27 15:07:54 2015
@@ -189,9 +189,11 @@ else()
       PARENT_TARGET asan)
 
     if (UNIX AND NOT ${arch} MATCHES "i386|i686")
-      add_sanitizer_rt_symbols(clang_rt.asan_cxx-${arch})
+      add_sanitizer_rt_symbols(clang_rt.asan_cxx
+        ARCHS ${arch})
       add_dependencies(asan clang_rt.asan_cxx-${arch}-symbols)
-      add_sanitizer_rt_symbols(clang_rt.asan-${arch} 
+      add_sanitizer_rt_symbols(clang_rt.asan
+        ARCHS ${arch} 
         EXTRA asan.syms.extra)
       add_dependencies(asan clang_rt.asan-${arch}-symbols)
     endif()

Modified: compiler-rt/trunk/lib/dfsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/dfsan/CMakeLists.txt?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/lib/dfsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/dfsan/CMakeLists.txt Thu Aug 27 15:07:54 2015
@@ -24,7 +24,8 @@ foreach(arch ${DFSAN_SUPPORTED_ARCH})
             $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
     CFLAGS ${DFSAN_CFLAGS}
     PARENT_TARGET dfsan)
-  add_sanitizer_rt_symbols(clang_rt.dfsan-${arch}
+  add_sanitizer_rt_symbols(clang_rt.dfsan
+    ARCHS ${arch}
     EXTRA dfsan.syms.extra)
   add_dependencies(dfsan
     clang_rt.dfsan-${arch}-symbols)

Modified: compiler-rt/trunk/lib/msan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/CMakeLists.txt?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/msan/CMakeLists.txt Thu Aug 27 15:07:54 2015
@@ -47,9 +47,11 @@ foreach(arch ${MSAN_SUPPORTED_ARCH})
   list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch}
                                      clang_rt.msan_cxx-${arch})
   if(UNIX)
-    add_sanitizer_rt_symbols(clang_rt.msan-${arch}
+    add_sanitizer_rt_symbols(clang_rt.msan
+      ARCHS ${arch}
       EXTRA msan.syms.extra)
-    add_sanitizer_rt_symbols(clang_rt.msan_cxx-${arch}
+    add_sanitizer_rt_symbols(clang_rt.msan_cxx
+      ARCHS ${arch}
       EXTRA msan.syms.extra)
     add_dependencies(msan clang_rt.msan-${arch}-symbols
                           clang_rt.msan_cxx-${arch}-symbols)

Modified: compiler-rt/trunk/lib/tsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/CMakeLists.txt?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/tsan/CMakeLists.txt Thu Aug 27 15:07:54 2015
@@ -118,9 +118,11 @@ foreach(arch ${TSAN_SUPPORTED_ARCH})
     CFLAGS ${TSAN_RTL_CFLAGS})
   list(APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-${arch}
                                      clang_rt.tsan_cxx-${arch})
-  add_sanitizer_rt_symbols(clang_rt.tsan-${arch}
+  add_sanitizer_rt_symbols(clang_rt.tsan
+    ARCHS ${arch}
     EXTRA rtl/tsan.syms.extra)
-  add_sanitizer_rt_symbols(clang_rt.tsan_cxx-${arch}
+  add_sanitizer_rt_symbols(clang_rt.tsan_cxx
+    ARCHS ${arch}
     EXTRA rtl/tsan.syms.extra)
   add_dependencies(tsan clang_rt.tsan-${arch}
                         clang_rt.tsan_cxx-${arch}

Modified: compiler-rt/trunk/lib/ubsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/CMakeLists.txt?rev=246199&r1=246198&r2=246199&view=diff
==============================================================================
--- compiler-rt/trunk/lib/ubsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/ubsan/CMakeLists.txt Thu Aug 27 15:07:54 2015
@@ -94,16 +94,18 @@ else()
       CFLAGS ${UBSAN_CXXFLAGS}
       PARENT_TARGET ubsan)
 
-    foreach(arch ${UBSAN_SUPPORTED_ARCH})
-      if (UNIX AND NOT ${arch} MATCHES "i386|i686")
-        add_sanitizer_rt_symbols(clang_rt.ubsan_standalone-${arch}
-          PARENT_TARGET ubsan
-          EXTRA ubsan.syms.extra)
-        add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx-${arch}
-          PARENT_TARGET ubsan
-          EXTRA ubsan.syms.extra)
-      endif()
-    endforeach()
+    if (UNIX)
+      set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})
+      list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386 i686)
+      add_sanitizer_rt_symbols(clang_rt.ubsan_standalone
+        ARCHS ${ARCHS_FOR_SYMBOLS}
+        PARENT_TARGET ubsan
+        EXTRA ubsan.syms.extra)
+      add_sanitizer_rt_symbols(clang_rt.ubsan_standalone_cxx
+        ARCHS ${ARCHS_FOR_SYMBOLS}
+        PARENT_TARGET ubsan
+        EXTRA ubsan.syms.extra)
+    endif()
   endif()
 endif()
 




More information about the llvm-commits mailing list