[Lldb-commits] [PATCH] D116853: [CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`
paperchalice created this revision. paperchalice added a reviewer: mgorny. paperchalice added a project: LLDB. Herald added a subscriber: JDevlieghere. paperchalice requested review of this revision. Herald added a subscriber: lldb-commits. Try to fix https://github.com/llvm/llvm-project/issues/108 - skip install `lldb-python-scripts` when `LLDB_BUILD_FRAMEWORK=ON` - add `@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}` to `rpath` when `LLDB_BUILD_FRAMEWORK=ON` `LLDB.framework/Resources/Python` is installed by target `lldb-python-scripts` and `liblldb`, so `cmake --install build` will fail with `CMake Error: failed to create symbolic link '~/buildspace/llvm-inst/Library/Frameworks/LLDB.framework/Resources': file already exists` The rpath seems incorrect after `ninja install`, so I add `@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}` to the rpath list. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D116853 Files: lldb/bindings/python/CMakeLists.txt lldb/tools/driver/CMakeLists.txt lldb/tools/lldb-vscode/CMakeLists.txt Index: lldb/tools/lldb-vscode/CMakeLists.txt === --- lldb/tools/lldb-vscode/CMakeLists.txt +++ lldb/tools/lldb-vscode/CMakeLists.txt @@ -57,5 +57,6 @@ "@loader_path/../../../SharedFrameworks" "@loader_path/../../System/Library/PrivateFrameworks" "@loader_path/../../Library/PrivateFrameworks" + "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}" ) endif() Index: lldb/tools/driver/CMakeLists.txt === --- lldb/tools/driver/CMakeLists.txt +++ lldb/tools/driver/CMakeLists.txt @@ -44,5 +44,6 @@ "@loader_path/../../../SharedFrameworks" "@loader_path/../../System/Library/PrivateFrameworks" "@loader_path/../../Library/PrivateFrameworks" + "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}" ) endif() Index: lldb/bindings/python/CMakeLists.txt === --- lldb/bindings/python/CMakeLists.txt +++ lldb/bindings/python/CMakeLists.txt @@ -170,9 +170,11 @@ set(python_scripts_install_target "install-${python_scripts_target}") add_custom_target(${python_scripts_target}) add_dependencies(${python_scripts_target} ${swig_target}) - install(DIRECTORY ${lldb_python_target_dir}/../ - DESTINATION ${LLDB_PYTHON_INSTALL_PATH} - COMPONENT ${python_scripts_target}) + if(NOT LLDB_BUILD_FRAMEWORK) +install(DIRECTORY ${lldb_python_target_dir}/../ +DESTINATION ${LLDB_PYTHON_INSTALL_PATH} +COMPONENT ${python_scripts_target}) + endif() if (NOT LLVM_ENABLE_IDE) add_llvm_install_targets(${python_scripts_install_target} COMPONENT ${python_scripts_target} Index: lldb/tools/lldb-vscode/CMakeLists.txt === --- lldb/tools/lldb-vscode/CMakeLists.txt +++ lldb/tools/lldb-vscode/CMakeLists.txt @@ -57,5 +57,6 @@ "@loader_path/../../../SharedFrameworks" "@loader_path/../../System/Library/PrivateFrameworks" "@loader_path/../../Library/PrivateFrameworks" + "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}" ) endif() Index: lldb/tools/driver/CMakeLists.txt === --- lldb/tools/driver/CMakeLists.txt +++ lldb/tools/driver/CMakeLists.txt @@ -44,5 +44,6 @@ "@loader_path/../../../SharedFrameworks" "@loader_path/../../System/Library/PrivateFrameworks" "@loader_path/../../Library/PrivateFrameworks" + "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}" ) endif() Index: lldb/bindings/python/CMakeLists.txt === --- lldb/bindings/python/CMakeLists.txt +++ lldb/bindings/python/CMakeLists.txt @@ -170,9 +170,11 @@ set(python_scripts_install_target "install-${python_scripts_target}") add_custom_target(${python_scripts_target}) add_dependencies(${python_scripts_target} ${swig_target}) - install(DIRECTORY ${lldb_python_target_dir}/../ - DESTINATION ${LLDB_PYTHON_INSTALL_PATH} - COMPONENT ${python_scripts_target}) + if(NOT LLDB_BUILD_FRAMEWORK) +install(DIRECTORY ${lldb_python_target_dir}/../ +DESTINATION ${LLDB_PYTHON_INSTALL_PATH} +COMPONENT ${python_scripts_target}) + endif() if (NOT LLVM_ENABLE_IDE) add_llvm_install_targets(${python_scripts_install_target} COMPONENT ${python_scripts_target} ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D116853: [CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`
paperchalice updated this revision to Diff 398569. paperchalice edited the summary of this revision. paperchalice added a comment. Install python scripts into canonical resource path. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D116853/new/ https://reviews.llvm.org/D116853 Files: lldb/bindings/python/CMakeLists.txt Index: lldb/bindings/python/CMakeLists.txt === --- lldb/bindings/python/CMakeLists.txt +++ lldb/bindings/python/CMakeLists.txt @@ -163,7 +163,7 @@ # Install the LLDB python module if(LLDB_BUILD_FRAMEWORK) -set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python) +set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python) else() set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH}) endif() Index: lldb/bindings/python/CMakeLists.txt === --- lldb/bindings/python/CMakeLists.txt +++ lldb/bindings/python/CMakeLists.txt @@ -163,7 +163,7 @@ # Install the LLDB python module if(LLDB_BUILD_FRAMEWORK) -set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python) +set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python) else() set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH}) endif() ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D116853: [CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`
paperchalice added a comment. Could you help me commit this change? Because I don't have permission. Thanks! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D116853/new/ https://reviews.llvm.org/D116853 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D141907: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice created this revision. paperchalice added reviewers: phosek, Ericson2314. Herald added a subscriber: Enna1. Herald added a project: All. paperchalice requested review of this revision. Herald added projects: clang, Sanitizers, LLDB, OpenMP, LLVM. Herald added subscribers: llvm-commits, openmp-commits, lldb-commits, Sanitizers, cfe-commits. This patch ensures all resources are installed into `CLANG_RESOURCE_DIR`. Fixes: https://github.com/llvm/llvm-project/issues/59726 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D141907 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -86,8 +86,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = std::string(CLANG_RESOURCE_DIR).empty() + ? "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING + : "/foo/bar/bin/" CLANG_RESOURCE_DIR; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + std::string(CLANG_RESOURCE_DIR).empty() + ? "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING + : "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + llvm::StringRef(CLANG_RESOURCE_DIR).empty() + ? CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING + : "bin/" CLANG_RESOURCE_DIR, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_
[Lldb-commits] [PATCH] D141907: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice updated this revision to Diff 492684. paperchalice added a comment. Use `LLVM_LIBRARY_OUTPUT_INTDIR`. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141907/new/ https://reviews.llvm.org/D141907 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -86,8 +86,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = std::string(CLANG_RESOURCE_DIR).empty() + ? "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING + : "/foo/bar/bin/" CLANG_RESOURCE_DIR; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + std::string(CLANG_RESOURCE_DIR).empty() + ? "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING + : "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + llvm::StringRef(CLANG_RESOURCE_DIR).empty() + ? CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING + : "bin/" CLANG_RESOURCE_DIR, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +7,7 @@ include(CheckIncludeFile) include(CheckCXXSourceCompiles) include(GNUInstall
[Lldb-commits] [PATCH] D136809: [CMake] Make sure all headers are installed into `CLANG_RESOURCE_DIR`
paperchalice updated this revision to Diff 474715. paperchalice added a comment. Herald added a project: LLDB. Herald added a subscriber: lldb-commits. Add cmake module to handle clang resource dir. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -79,8 +79,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = CLANG_RESOURCE_DIR[0] + ? "/foo/bar/bin/" CLANG_RESOURCE_DIR + : "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + CLANG_RESOURCE_DIR[0] + ? "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR + : "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + CLANG_RESOURCE_DIR[0] ? "bin/" CLANG_RESOURCE_DIR +: CLANG_INSTALL_LIBDIR_BASENAME + "/clang/" CLANG_VERSION_MAJOR_STRING, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +7,7 @@ include(Check
[Lldb-commits] [PATCH] D136809: [CMake] Make sure all headers are installed into `CLANG_RESOURCE_DIR`
paperchalice added inline comments. Herald added subscribers: Michael137, JDevlieghere. Comment at: clang/lib/Headers/CMakeLists.txt:285 +include(GetClangResourceDir) +get_clang_resource_dir(output_dir PREFIX ${LLVM_BINARY_DIR}/$ SUBDIR include) set(out_files) Another choice is `${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}`, but the variable `CMAKE_CFG_INTDIR` is [[ https://cmake.org/cmake/help/latest/variable/CMAKE_CFG_INTDIR.html | deprecated ]] since 3.21 Comment at: cmake/Modules/GetClangResourceDir.cmake:13 + else() +string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) +set(ret_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}) Can I always rely on `PACKAGE_VERSION`? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D136809: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice updated this revision to Diff 475696. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -79,8 +79,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = CLANG_RESOURCE_DIR[0] + ? "/foo/bar/bin/" CLANG_RESOURCE_DIR + : "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + CLANG_RESOURCE_DIR[0] + ? "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR + : "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + CLANG_RESOURCE_DIR[0] ? "bin/" CLANG_RESOURCE_DIR +: CLANG_INSTALL_LIBDIR_BASENAME + "/clang/" CLANG_VERSION_MAJOR_STRING, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +7,7 @@ include(CheckIncludeFile) include(CheckCXXSourceCompiles) include(GNUInstallDirs) +include(GetClangResourceDir) include(ExtendPath) check_include_file(unwind.h HAVE_UNWIND_H) @@ -43,9 +44,9 @@
[Lldb-commits] [PATCH] D136809: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice updated this revision to Diff 475706. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -79,8 +79,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = CLANG_RESOURCE_DIR[0] + ? "/foo/bar/bin/" CLANG_RESOURCE_DIR + : "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + CLANG_RESOURCE_DIR[0] + ? "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR + : "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + CLANG_RESOURCE_DIR[0] ? "bin/" CLANG_RESOURCE_DIR +: CLANG_INSTALL_LIBDIR_BASENAME + "/clang/" CLANG_VERSION_MAJOR_STRING, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +7,7 @@ include(CheckIncludeFile) include(CheckCXXSourceCompiles) include(GNUInstallDirs) +include(GetClangResourceDir) include(ExtendPath) check_include_file(unwind.h HAVE_UNWIND_H) @@
[Lldb-commits] [PATCH] D136809: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice added a comment. Ping @Ericson2314 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D136809: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice updated this revision to Diff 480025. paperchalice added reviewers: tstellar, MaskRay. paperchalice added a comment. Herald added a subscriber: StephenFan. Use genex `$` due to `CMAKE_CFG_INTDIR` is deprecated since cmake 3.21. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -79,8 +79,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = CLANG_RESOURCE_DIR[0] + ? "/foo/bar/bin/" CLANG_RESOURCE_DIR + : "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + CLANG_RESOURCE_DIR[0] + ? "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR + : "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + CLANG_RESOURCE_DIR[0] ? "bin/" CLANG_RESOURCE_DIR +: CLANG_INSTALL_LIBDIR_BASENAME + "/clang/" CLANG_VERSION_MAJOR_STRING, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +
[Lldb-commits] [PATCH] D136809: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected
paperchalice updated this revision to Diff 480054. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136809/new/ https://reviews.llvm.org/D136809 Files: clang/lib/Headers/CMakeLists.txt clang/lib/Tooling/CMakeLists.txt clang/runtime/CMakeLists.txt cmake/Modules/GetClangResourceDir.cmake compiler-rt/cmake/base-config-ix.cmake lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp lldb/unittests/Expression/ClangParserTest.cpp llvm/cmake/modules/LLVMExternalProjectUtils.cmake openmp/CMakeLists.txt Index: openmp/CMakeLists.txt === --- openmp/CMakeLists.txt +++ openmp/CMakeLists.txt @@ -79,8 +79,8 @@ if(${OPENMP_STANDALONE_BUILD}) set(LIBOMP_HEADERS_INSTALL_PATH "${CMAKE_INSTALL_INCLUDEDIR}") else() - string(REGEX MATCH "[0-9]+" CLANG_VERSION ${PACKAGE_VERSION}) - set(LIBOMP_HEADERS_INSTALL_PATH "${OPENMP_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include") + include(GetClangResourceDir) + get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include) endif() # Build host runtime library, after LIBOMPTARGET variables are set since they are needed Index: llvm/cmake/modules/LLVMExternalProjectUtils.cmake === --- llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -257,7 +257,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR ${PACKAGE_VERSION}) - set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + if(DEFINED CLANG_RESOURCE_DIR AND NOT CLANG_RESOURCE_DIR STREQUAL "") +set(resource_dir ${LLVM_TOOLS_BINARY_DIR}/${CLANG_RESOURCE_DIR}) + else() +set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}") + endif() set(flag_types ASM C CXX MODULE_LINKER SHARED_LINKER EXE_LINKER) foreach(type ${flag_types}) set(${type}_flag -DCMAKE_${type}_FLAGS=-resource-dir=${resource_dir}) Index: lldb/unittests/Expression/ClangParserTest.cpp === --- lldb/unittests/Expression/ClangParserTest.cpp +++ lldb/unittests/Expression/ClangParserTest.cpp @@ -7,6 +7,7 @@ //===--===// #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "Plugins/ExpressionParser/Clang/ClangHost.h" #include "TestingSupport/SubsystemRAII.h" @@ -37,12 +38,16 @@ TEST_F(ClangHostTest, ComputeClangResourceDirectory) { #if !defined(_WIN32) std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = - "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING; + std::string path_to_clang_dir = CLANG_RESOURCE_DIR[0] + ? "/foo/bar/bin/" CLANG_RESOURCE_DIR + : "/foo/bar/" LLDB_INSTALL_LIBDIR_BASENAME +"/clang/" CLANG_VERSION_MAJOR_STRING; #else std::string path_to_liblldb = "C:\\foo\\bar\\lib"; std::string path_to_clang_dir = - "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; + CLANG_RESOURCE_DIR[0] + ? "C:\\foo\\bar\\bin\\" CLANG_RESOURCE_DIR + : "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING; #endif EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); Index: lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp === --- lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -54,8 +54,11 @@ static const llvm::StringRef kResourceDirSuffixes[] = { // LLVM.org's build of LLDB uses the clang resource directory placed - // in $install_dir/lib{,64}/clang/$clang_version. - CLANG_INSTALL_LIBDIR_BASENAME "/clang/" CLANG_VERSION_MAJOR_STRING, + // in $install_dir/lib{,64}/clang/$clang_version or + // $install_dir/bin/$CLANG_RESOURCE_DIR + CLANG_RESOURCE_DIR[0] ? "bin/" CLANG_RESOURCE_DIR +: CLANG_INSTALL_LIBDIR_BASENAME + "/clang/" CLANG_VERSION_MAJOR_STRING, // swift-lldb uses the clang resource directory copied from swift, which // by default is placed in $install_dir/lib{,64}/lldb/clang. LLDB places // it there, so we use LLDB_INSTALL_LIBDIR_BASENAME. Index: compiler-rt/cmake/base-config-ix.cmake === --- compiler-rt/cmake/base-config-ix.cmake +++ compiler-rt/cmake/base-config-ix.cmake @@ -7,6 +7,7 @@ include(CheckIncludeFile) include(CheckCXXSourceCompiles) include(GNUInstallDirs) +include(GetClangResourceDir) include(ExtendPath) check_include_file(unwind.h HAVE_UNWIND_H) @@