diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index a787fc9b5b7..0ffffd6fbfe 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -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.