[llvm-commits] [compiler-rt] r172829 - in /compiler-rt/trunk: CMakeLists.txt lib/CMakeLists.txt lib/asan/CMakeLists.txt lib/interception/CMakeLists.txt lib/sanitizer_common/CMakeLists.txt lib/ubsan/CMakeLists.txt
Alexey Samsonov
samsonov at google.com
Fri Jan 18 08:51:07 PST 2013
Author: samsonov
Date: Fri Jan 18 10:51:07 2013
New Revision: 172829
URL: http://llvm.org/viewvc/llvm-project?rev=172829&view=rev
Log:
CMake: Generalize build rules for different arches for sanitizer_common, asan, ubsan
Modified:
compiler-rt/trunk/CMakeLists.txt
compiler-rt/trunk/lib/CMakeLists.txt
compiler-rt/trunk/lib/asan/CMakeLists.txt
compiler-rt/trunk/lib/interception/CMakeLists.txt
compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt
compiler-rt/trunk/lib/ubsan/CMakeLists.txt
Modified: compiler-rt/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/CMakeLists.txt?rev=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/CMakeLists.txt (original)
+++ compiler-rt/trunk/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -124,6 +124,11 @@
list(APPEND SANITIZER_COMMON_CFLAGS -mmacosx-version-min=10.5)
endif()
+# Architectures supported by Sanitizer runtimes. Specific sanitizers may
+# support only subset of these (e.g. TSan works on x86_64 only).
+filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
+ x86_64 i386)
+
# Compute the Clang version from the LLVM version.
# FIXME: We should be able to reuse CLANG_VERSION variable calculated
# in Clang cmake files, instead of copying the rules here.
Modified: compiler-rt/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/CMakeLists.txt?rev=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/lib/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -6,9 +6,11 @@
add_subdirectory(asan)
add_subdirectory(interception)
add_subdirectory(sanitizer_common)
- add_subdirectory(ubsan)
+ if(NOT ANDROID)
+ add_subdirectory(ubsan)
+ endif
endif()
-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID)
# ThreadSanitizer and MemorySanitizer are supported on Linux only.
add_subdirectory(tsan)
add_subdirectory(msan)
Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/asan/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -52,6 +52,10 @@
MAC_INTERPOSE_FUNCTIONS=1
)
+# Architectures supported by ASan.
+filter_available_targets(ASAN_SUPPORTED_ARCH
+ x86_64 i386)
+
set(ASAN_RUNTIME_LIBRARIES)
if(APPLE)
# Build universal binary on APPLE.
@@ -61,9 +65,8 @@
$<TARGET_OBJECTS:RTSanitizerCommon.osx>
)
set_target_compile_flags(clang_rt.asan_osx ${ASAN_CFLAGS})
- filter_available_targets(ASAN_TARGETS x86_64 i386)
set_target_properties(clang_rt.asan_osx PROPERTIES
- OSX_ARCHITECTURES "${ASAN_TARGETS}")
+ OSX_ARCHITECTURES "${ASAN_SUPPORTED_ARCH}")
list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan_osx)
elseif(ANDROID)
add_library(clang_rt.asan-arm-android SHARED
@@ -78,28 +81,15 @@
list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-arm-android)
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_x86_64)
- add_library(clang_rt.asan-x86_64 STATIC
- ${ASAN_SOURCES}
- $<TARGET_OBJECTS:RTInterception.x86_64>
- $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
- )
- set_target_compile_flags(clang_rt.asan-x86_64
- ${ASAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
- )
- list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-x86_64)
- endif()
- if(CAN_TARGET_i386)
- add_library(clang_rt.asan-i386 STATIC
+ foreach(arch ${ASAN_SUPPORTED_ARCH})
+ add_library(clang_rt.asan-${arch} STATIC
${ASAN_SOURCES}
- $<TARGET_OBJECTS:RTInterception.i386>
- $<TARGET_OBJECTS:RTSanitizerCommon.i386>
- )
- set_target_compile_flags(clang_rt.asan-i386
- ${ASAN_CFLAGS} ${TARGET_i386_CFLAGS}
- )
- list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-i386)
- endif()
+ $<TARGET_OBJECTS:RTInterception.${arch}>
+ $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>)
+ set_target_compile_flags(clang_rt.asan-${arch}
+ ${ASAN_CFLAGS} ${TARGET_${arch}_CFLAGS})
+ list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-${arch})
+ endforeach()
endif()
set_property(TARGET ${ASAN_RUNTIME_LIBRARIES} APPEND PROPERTY
@@ -115,10 +105,9 @@
$<TARGET_OBJECTS:RTSanitizerCommon.osx>
)
set_target_compile_flags(clang_rt.asan_osx_dynamic ${ASAN_CFLAGS})
- filter_available_targets(ASAN_TARGETS x86_64 i386)
set_target_properties(clang_rt.asan_osx_dynamic PROPERTIES
COMPILE_DEFINITIONS "${ASAN_DYLIB_DEFINITIONS}"
- OSX_ARCHITECTURES "${ASAN_TARGETS}"
+ OSX_ARCHITECTURES "${ASAN_SUPPORTED_ARCH}"
LINK_FLAGS "-framework Foundation")
list(APPEND ASAN_DYNAMIC_RUNTIME_LIBRARIES clang_rt.asan_osx_dynamic)
endif()
Modified: compiler-rt/trunk/lib/interception/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/interception/CMakeLists.txt?rev=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/lib/interception/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/interception/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -24,21 +24,16 @@
# Build universal binary on APPLE.
add_library(RTInterception.osx OBJECT ${INTERCEPTION_SOURCES})
set_target_compile_flags(RTInterception.osx ${INTERCEPTION_CFLAGS})
- filter_available_targets(INTERCEPTION_TARGETS x86_64 i386)
set_target_properties(RTInterception.osx PROPERTIES
- OSX_ARCHITECTURES "${INTERCEPTION_TARGETS}")
+ OSX_ARCHITECTURES "${SANITIZER_COMMON_SUPPORTED_ARCH}")
elseif(ANDROID)
add_library(RTInterception.arm.android OBJECT ${INTERCEPTION_SOURCES})
set_target_compile_flags(RTInterception.arm.android
${INTERCEPTION_CFLAGS})
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_x86_64)
- add_compiler_rt_object_library(RTInterception x86_64
+ foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH})
+ add_compiler_rt_object_library(RTInterception ${arch}
SOURCES ${INTERCEPTION_SOURCES} CFLAGS ${INTERCEPTION_CFLAGS})
- endif()
- if (CAN_TARGET_i386)
- add_compiler_rt_object_library(RTInterception i386
- SOURCES ${INTERCEPTION_SOURCES} CFLAGS ${INTERCEPTION_CFLAGS})
- endif()
+ endforeach()
endif()
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=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -54,9 +54,8 @@
# Build universal binary on APPLE.
add_library(RTSanitizerCommon.osx OBJECT ${SANITIZER_SOURCES})
set_target_compile_flags(RTSanitizerCommon.osx ${SANITIZER_CFLAGS})
- filter_available_targets(SANITIZER_TARGETS x86_64 i386)
set_target_properties(RTSanitizerCommon.osx PROPERTIES
- OSX_ARCHITECTURES "${SANITIZER_TARGETS}")
+ OSX_ARCHITECTURES "${SANITIZER_COMMON_SUPPORTED_ARCH}")
list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
elseif(ANDROID)
add_library(RTSanitizerCommon.arm.android OBJECT ${SANITIZER_SOURCES})
@@ -65,16 +64,11 @@
list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android)
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_x86_64)
- add_compiler_rt_object_library(RTSanitizerCommon x86_64
+ foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH})
+ add_compiler_rt_object_library(RTSanitizerCommon ${arch}
SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
- list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64)
- endif()
- if(CAN_TARGET_i386)
- add_compiler_rt_object_library(RTSanitizerCommon i386
- SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
- list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386)
- endif()
+ list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch})
+ endforeach()
endif()
# Unit tests for common sanitizer runtime.
Modified: compiler-rt/trunk/lib/ubsan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/CMakeLists.txt?rev=172829&r1=172828&r2=172829&view=diff
==============================================================================
--- compiler-rt/trunk/lib/ubsan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/ubsan/CMakeLists.txt Fri Jan 18 10:51:07 2013
@@ -12,6 +12,9 @@
set(UBSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS})
+filter_available_targets(UBSAN_SUPPORTED_ARCH
+ x86_64 i386)
+
set(UBSAN_RUNTIME_LIBRARIES)
if(APPLE)
@@ -21,32 +24,21 @@
$<TARGET_OBJECTS:RTSanitizerCommon.osx>
)
set_target_compile_flags(clang_rt.ubsan_osx ${UBSAN_CFLAGS})
- filter_available_targets(UBSAN_TARGETS x86_64 i386)
set_target_properties(clang_rt.ubsan_osx PROPERTIES
- OSX_ARCHITECTURES "${UBSAN_TARGETS}")
+ OSX_ARCHITECTURES "${UBSAN_SUPPORTED_ARCH}")
list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan_osx)
else()
# Build separate libraries for each target.
- if(CAN_TARGET_x86_64)
- add_library(clang_rt.ubsan-x86_64 STATIC
- ${UBSAN_SOURCES}
- $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
- )
- set_target_compile_flags(clang_rt.ubsan-x86_64
- ${UBSAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
- )
- list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-x86_64)
- endif()
- if(CAN_TARGET_i386)
- add_library(clang_rt.ubsan-i386 STATIC
+ foreach(arch ${UBSAN_SUPPORTED_ARCH})
+ add_library(clang_rt.ubsan-${arch} STATIC
${UBSAN_SOURCES}
- $<TARGET_OBJECTS:RTSanitizerCommon.i386>
+ $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
)
- set_target_compile_flags(clang_rt.ubsan-i386
- ${UBSAN_CFLAGS} ${TARGET_i386_CFLAGS}
+ set_target_compile_flags(clang_rt.ubsan-${arch}
+ ${UBSAN_CFLAGS} ${TARGET_${arch}_CFLAGS}
)
- list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-i386)
- endif()
+ list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-${arch})
+ endforeach()
endif()
More information about the llvm-commits
mailing list