From a5ccfee2752b920815135b1dd7391c1aa5fddcf2 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Tue, 11 Aug 2015 17:16:35 +0000 Subject: [PATCH] [cmake] Add helper for finding potentially external projects I plan to use this from compiler-rt, but it's useful for any LLVM project that depends on more than just LLVM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244633 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/AddLLVM.cmake | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index f87e18bfcff..f4cb93ded59 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -717,6 +717,23 @@ macro(add_llvm_tool_subdirectory name) add_llvm_external_project(${name}) endmacro(add_llvm_tool_subdirectory) +# Finds a (potentially external) project that normally lives at +# llvm/${subdir}/${name}. For example, to find clang: +# find_llvm_external_project(tools clang CLANG_SRC) +# Returns nothing if the project is not configured to build. +function(find_llvm_external_project subdir name path_out) + canonicalize_tool_name(${name} nameUPPER) + if (NOT LLVM_TOOL_${nameUPPER}_BUILD) + set(${path_out} PARENT_SCOPE) + elseif (EXISTS LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR) + set(${path_out} LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR PARENT_SCOPE) + elseif (EXISTS ${LLVM_MAIN_SRC_DIR}/${subdir}/${name}) + set(${path_out} ${LLVM_MAIN_SRC_DIR}/${subdir}/${name} PARENT_SCOPE) + else() + set(${path_out} PARENT_SCOPE) + endif() +endfunction(find_llvm_external_project) + function(get_project_name_from_src_var var output) string(REGEX MATCH "LLVM_EXTERNAL_(.*)_SOURCE_DIR" MACHED_TOOL "${var}") -- 2.34.1