[CMake] Ensure that compiler-rt is added first
authorChris Bieneman <beanz@apple.com>
Tue, 30 Aug 2016 21:29:21 +0000 (21:29 +0000)
committerChris Bieneman <beanz@apple.com>
Tue, 30 Aug 2016 21:29:21 +0000 (21:29 +0000)
This will enable other runtime projects to detect the presence of sanitizer runtimes by referring to the sanitizer targets directly.

llvm-svn: 280162

llvm/runtimes/CMakeLists.txt

index a787fc9..0ffffd6 100644 (file)
@@ -33,6 +33,21 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
     "${LLVM_BINARY_DIR}/lib/cmake/llvm"
   )
 
+  # Some of the runtimes will conditionally use the compiler-rt sanitizers
+  # to make this work smoothly we ensure that compiler-rt is added first in
+  # the list of sub-projects. This allows other sub-projects to have checks
+  # like `if(TARGET asan)` to enable building with asan.
+  foreach(entry ${runtimes})
+    if("${entry}" MATCHES "compiler-rt")
+      set(compiler_rt_path ${entry})
+      break()
+    endif()
+  endforeach()
+  if(compiler_rt_path)
+    list(REMOVE_ITEM runtimes ${compiler_rt_path})
+    list(INSERT runtimes 0 ${compiler_rt_path})
+  endif()
+
   # LLVMConfig.cmake contains a bunch of CMake variables from the LLVM build.
   # This file is installed as part of LLVM distributions, so this can be used
   # either from a build directory or an installed LLVM.