[Lldb-commits] [lldb] a809720 - [lldb][NFCI] Change logic to find clang resource dir in standalone builds
Alex Langford via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 25 15:52:52 PDT 2023
Author: Alex Langford
Date: 2023-07-25T15:52:33-07:00
New Revision: a809720102fae8d1b5a7073f99f9dae9395c5f41
URL: https://github.com/llvm/llvm-project/commit/a809720102fae8d1b5a7073f99f9dae9395c5f41
DIFF: https://github.com/llvm/llvm-project/commit/a809720102fae8d1b5a7073f99f9dae9395c5f41.diff
LOG: [lldb][NFCI] Change logic to find clang resource dir in standalone builds
As of 0beffb854209a41f31beb18f9631258349a99299 there is a CMake
function to actually calculate the relative path to the clang resource
directory. Currently we have some bespoke logic that looks in a few
places, but with this new function we should be able to eliminate some
complexity here.
Also, I moved the functionality from LLDBConfig to LLDBStandalone since
it is only used in standalone builds.
Differential Revision: https://reviews.llvm.org/D156270
Added:
Modified:
lldb/cmake/modules/LLDBConfig.cmake
lldb/cmake/modules/LLDBStandalone.cmake
Removed:
################################################################################
diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
index 1393342dd5cb69..ce90ecabc6a5a5 100644
--- a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -282,30 +282,6 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
endif()
endif()
-
-# If LLDB is building against a prebuilt Clang, then the Clang resource
-# directory that LLDB is using for its embedded Clang instance needs to point
-# to the resource directory of the used Clang installation.
-if (NOT TARGET clang-resource-headers)
- set(LLDB_CLANG_RESOURCE_DIR_NAME "${LLVM_VERSION_MAJOR}")
- # Iterate over the possible places where the external resource directory
- # could be and pick the first that exists.
- foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}"
- "${LLVM_BUILD_LIBRARY_DIR}"
- "${LLVM_LIBRARY_DIR}")
- # Build the resource directory path by appending 'clang/<version number>'.
- set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}")
- if (IS_DIRECTORY "${CANDIDATE_RESOURCE_DIR}")
- set(LLDB_EXTERNAL_CLANG_RESOURCE_DIR "${CANDIDATE_RESOURCE_DIR}")
- break()
- endif()
- endforeach()
-
- if (NOT LLDB_EXTERNAL_CLANG_RESOURCE_DIR)
- message(FATAL_ERROR "Expected directory for clang-resource headers not found: ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}")
- endif()
-endif()
-
# Find Apple-specific libraries or frameworks that may be needed.
if (APPLE)
if(NOT APPLE_EMBEDDED)
diff --git a/lldb/cmake/modules/LLDBStandalone.cmake b/lldb/cmake/modules/LLDBStandalone.cmake
index e9bcabcb63dedb..fd16716d71419c 100644
--- a/lldb/cmake/modules/LLDBStandalone.cmake
+++ b/lldb/cmake/modules/LLDBStandalone.cmake
@@ -128,3 +128,16 @@ endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
+
+# If LLDB is building against a prebuilt Clang, then the Clang resource
+# directory that LLDB is using for its embedded Clang instance needs to point to
+# the resource directory of the used Clang installation.
+if (NOT TARGET clang-resource-headers)
+ include(GetClangResourceDir)
+ get_clang_resource_dir(LLDB_EXTERNAL_CLANG_RESOURCE_DIR
+ PREFIX "${Clang_DIR}/../../../")
+
+ if (NOT EXISTS ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR})
+ message(FATAL_ERROR "Expected directory for clang-resource-headers not found: ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}")
+ endif()
+endif()
More information about the lldb-commits
mailing list