[llvm-commits] [compiler-rt] r160669 - /compiler-rt/trunk/lib/asan/CMakeLists.txt

Alexey Samsonov samsonov at google.com
Tue Jul 24 04:49:55 PDT 2012


Author: samsonov
Date: Tue Jul 24 06:49:55 2012
New Revision: 160669

URL: http://llvm.org/viewvc/llvm-project?rev=160669&view=rev
Log:
[ASan] hacking cmake build: after generating asan runtime, copy it to the Clang lib directory where Clang driver expects to find it.

Modified:
    compiler-rt/trunk/lib/asan/CMakeLists.txt

Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=160669&r1=160668&r2=160669&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/asan/CMakeLists.txt Tue Jul 24 06:49:55 2012
@@ -28,6 +28,9 @@
   -fno-exceptions
   -funwind-tables
   -fvisibility=hidden
+  -fno-builtin
+  -fomit-frame-pointer
+  -O3
   )
 if (SUPPORTS_NO_VARIADIC_MACROS_FLAG)
   list(APPEND ASAN_CFLAGS -Wno-variadic-macros)
@@ -38,6 +41,21 @@
   ASAN_NEEDS_SEGV=1
   )
 
+# Compute the Clang version from the LLVM version.
+string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
+       ${PACKAGE_VERSION})
+
+# Set up paths to ASan runtime that Clang driver passes to linker.
+if (APPLE)
+  # FIXME: We need to build OS X universal binary libclang_rt.asan-osx.a
+  # instead of two arch-specific binaries.
+  set(clang_lib_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/darwin)
+  list(APPEND ASAN_CFLAGS -mmacosx-version-min=10.5)
+elseif (UNIX)
+  # Assume Linux.
+  set(clang_lib_dir ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/linux)
+endif()
+
 if(CAN_TARGET_X86_64)
   add_library(clang_rt.asan-x86_64 STATIC
     ${ASAN_SOURCES}
@@ -50,6 +68,10 @@
     )
   set_property(TARGET clang_rt.asan-x86_64 APPEND PROPERTY COMPILE_DEFINITIONS
     ${ASAN_COMMON_DEFINITIONS})
+  add_custom_command (TARGET clang_rt.asan-x86_64 POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:clang_rt.asan-x86_64>
+                                        ${clang_lib_dir}/libclang_rt.asan-x86_64.a
+    COMMENT "Copying libclang_rt.asan-x86_64.a to Clang lib dir...")
 endif()
 if(CAN_TARGET_I386)
   add_library(clang_rt.asan-i386 STATIC
@@ -61,8 +83,12 @@
     ${ASAN_CFLAGS}
     ${TARGET_I386_CFLAGS}
     )
-  set_property(TARGET clang_rt.asan-x86_64 APPEND PROPERTY COMPILE_DEFINITIONS
+  set_property(TARGET clang_rt.asan-i386 APPEND PROPERTY COMPILE_DEFINITIONS
     ${ASAN_COMMON_DEFINITIONS})
+  add_custom_command (TARGET clang_rt.asan-i386 POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:clang_rt.asan-i386>
+                                        ${clang_lib_dir}/libclang_rt.asan-i386.a
+    COMMENT "Copying libclang_rt.asan-i386.a to Clang lib dir...")
 endif()
 
 if(LLVM_INCLUDE_TESTS)





More information about the llvm-commits mailing list