[compiler-rt] 39aa0f5 - [CMake] Ensure `CLANG_RESOURCE_DIR` is respected.

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 3 00:16:51 PDT 2023


broken on this bot https://lab.llvm.org/buildbot/#/builders/236/builds/4459

On Fri, 2 Jun 2023 at 23:30, Tom Stellard via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

>
> Author: paperchalice
> Date: 2023-06-02T23:29:44-07:00
> New Revision: 39aa0f5c434b463520ac39a8dbe933ee8c4c5ea7
>
> URL:
> https://github.com/llvm/llvm-project/commit/39aa0f5c434b463520ac39a8dbe933ee8c4c5ea7
> DIFF:
> https://github.com/llvm/llvm-project/commit/39aa0f5c434b463520ac39a8dbe933ee8c4c5ea7.diff
>
> LOG: [CMake] Ensure `CLANG_RESOURCE_DIR` is respected.
>
> Added:
>
>
> Modified:
>     clang/lib/Headers/CMakeLists.txt
>     clang/lib/Tooling/CMakeLists.txt
>     clang/runtime/CMakeLists.txt
>     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
>
> Removed:
>
>
>
>
> ################################################################################
> diff  --git a/clang/lib/Headers/CMakeLists.txt
> b/clang/lib/Headers/CMakeLists.txt
> index bbd3d0f2d719a..f2ee2e036deb9 100644
> --- a/clang/lib/Headers/CMakeLists.txt
> +++ b/clang/lib/Headers/CMakeLists.txt
> @@ -298,7 +298,8 @@ set(openmp_wrapper_files
>    openmp_wrappers/new
>  )
>
> -set(output_dir
> ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR}/include)
> +include(GetClangResourceDir)
> +get_clang_resource_dir(output_dir PREFIX ${LLVM_LIBRARY_OUTPUT_INTDIR}/..
> SUBDIR include)
>  set(out_files)
>  set(generated_files)
>
> @@ -456,7 +457,7 @@ add_header_target("openmp-resource-headers"
> ${openmp_wrapper_files})
>  add_header_target("windows-resource-headers" ${windows_only_files})
>  add_header_target("utility-resource-headers" ${utility_files})
>
> -set(header_install_dir
> lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
> +get_clang_resource_dir(header_install_dir SUBDIR include)
>
>  #############################################################
>  # Install rules for the catch-all clang-resource-headers target
>
> diff  --git a/clang/lib/Tooling/CMakeLists.txt
> b/clang/lib/Tooling/CMakeLists.txt
> index e4ce43762d6b6..aff39e4de13c0 100644
> --- a/clang/lib/Tooling/CMakeLists.txt
> +++ b/clang/lib/Tooling/CMakeLists.txt
> @@ -53,6 +53,8 @@ else()
>      list(APPEND implicitDirs -I ${implicitDir})
>    endforeach()
>
> +  include(GetClangResourceDir)
> +  get_clang_resource_dir(resource_dir PREFIX ${LLVM_BINARY_DIR})
>    add_custom_command(
>        COMMENT Generate ASTNodeAPI.json
>        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ASTNodeAPI.json
> @@ -61,7 +63,7 @@ else()
>        $<TARGET_FILE:clang-ast-dump>
>          # Skip this in debug mode because parsing AST.h is too slow
>          --skip-processing=${skip_expensive_processing}
> -        -I ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION_MAJOR}/include
> +        -I ${resource_dir}/include
>          -I ${CLANG_SOURCE_DIR}/include
>          -I ${LLVM_BINARY_DIR}/tools/clang/include
>          -I ${LLVM_BINARY_DIR}/include
>
> diff  --git a/clang/runtime/CMakeLists.txt b/clang/runtime/CMakeLists.txt
> index 94b5d783ce361..2dd305428c9ac 100644
> --- a/clang/runtime/CMakeLists.txt
> +++ b/clang/runtime/CMakeLists.txt
> @@ -66,6 +66,9 @@ if(LLVM_BUILD_EXTERNAL_COMPILER_RT AND EXISTS
> ${COMPILER_RT_SRC_ROOT}/)
>      list(APPEND compiler_rt_configure_deps LLVMTestingSupport)
>    endif()
>
> +  include(GetClangResourceDir)
> +  get_clang_resource_dir(output_resource_dir PREFIX ${LLVM_BINARY_DIR})
> +  get_clang_resource_dir(install_resource_dir)
>    ExternalProject_Add(compiler-rt
>      DEPENDS llvm-config clang ${compiler_rt_configure_deps}
>      PREFIX ${COMPILER_RT_PREFIX}
> @@ -82,9 +85,9 @@ if(LLVM_BUILD_EXTERNAL_COMPILER_RT AND EXISTS
> ${COMPILER_RT_SRC_ROOT}/)
>
> -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
>
> -DLLVM_CONFIG_PATH=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-config
>                 -DLLVM_LIT_ARGS=${LLVM_LIT_ARGS}
> -
>  -DCOMPILER_RT_OUTPUT_DIR=${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR}
> +               -DCOMPILER_RT_OUTPUT_DIR=${output_resource_dir}
>                 -DCOMPILER_RT_EXEC_OUTPUT_DIR=${LLVM_RUNTIME_OUTPUT_INTDIR}
> -
>  -DCOMPILER_RT_INSTALL_PATH:PATH=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}
> +               -DCOMPILER_RT_INSTALL_PATH:PATH=${install_resource_dir}
>                 -DCOMPILER_RT_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
>                 -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
>                 -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX}
>
> diff  --git a/compiler-rt/cmake/base-config-ix.cmake
> b/compiler-rt/cmake/base-config-ix.cmake
> index c6e95055b0028..ede8428c39382 100644
> --- a/compiler-rt/cmake/base-config-ix.cmake
> +++ b/compiler-rt/cmake/base-config-ix.cmake
> @@ -7,6 +7,7 @@ include(BuiltinTests)
>  include(CheckIncludeFile)
>  include(CheckCXXSourceCompiles)
>  include(GNUInstallDirs)
> +include(GetClangResourceDir)
>  include(ExtendPath)
>  include(CompilerRTDarwinUtils)
>
> @@ -38,15 +39,10 @@ if (LLVM_LIBRARY_OUTPUT_INTDIR AND
> LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSIO
>  endif()
>
>  if (LLVM_TREE_AVAILABLE)
> -  # Compute the Clang version from the LLVM version.
> -  # FIXME: We should be able to reuse CLANG_VERSION_MAJOR variable
> calculated
> -  #        in Clang cmake files, instead of copying the rules here.
> -  string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR
> -         ${PACKAGE_VERSION})
>    # Setup the paths where compiler-rt runtimes and headers should be
> stored.
> -  set(COMPILER_RT_OUTPUT_DIR
> ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR})
> +  get_clang_resource_dir(COMPILER_RT_OUTPUT_DIR PREFIX
> ${LLVM_LIBRARY_OUTPUT_INTDIR}/..)
>    set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
> -  set(COMPILER_RT_INSTALL_PATH
> lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
> +  get_clang_resource_dir(COMPILER_RT_INSTALL_PATH)
>    option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit
> tests."
>           ${LLVM_INCLUDE_TESTS})
>    option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
>
> diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp
> b/lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp
> index ae4dcc05256e7..3bb303c0e1931 100644
> --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp
> +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangHost.cpp
> @@ -10,6 +10,7 @@
>
>  #include "clang/Basic/Version.h"
>  #include "clang/Config/config.h"
> +#include "clang/Driver/Driver.h"
>
>  #include "llvm/ADT/StringRef.h"
>  #include "llvm/ADT/Twine.h"
> @@ -51,11 +52,14 @@ static bool
> DefaultComputeClangResourceDirectory(FileSpec &lldb_shlib_spec,
>    Log *log = GetLog(LLDBLog::Host);
>    std::string raw_path = lldb_shlib_spec.GetPath();
>    llvm::StringRef parent_dir = llvm::sys::path::parent_path(raw_path);
> +  const std::string clang_resource_path =
> +      clang::driver::Driver::GetResourcesPath("bin/lldb",
> CLANG_RESOURCE_DIR);
>
>    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_path,
>        // 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.
> @@ -82,7 +86,8 @@ static bool
> DefaultComputeClangResourceDirectory(FileSpec &lldb_shlib_spec,
>  }
>
>  bool lldb_private::ComputeClangResourceDirectory(FileSpec
> &lldb_shlib_spec,
> -                                         FileSpec &file_spec, bool
> verify) {
> +                                                 FileSpec &file_spec,
> +                                                 bool verify) {
>  #if !defined(__APPLE__)
>    return DefaultComputeClangResourceDirectory(lldb_shlib_spec, file_spec,
>                                                verify);
>
> diff  --git a/lldb/unittests/Expression/ClangParserTest.cpp
> b/lldb/unittests/Expression/ClangParserTest.cpp
> index e5d90b25bf430..ed5ee323b7d20 100644
> --- a/lldb/unittests/Expression/ClangParserTest.cpp
> +++ b/lldb/unittests/Expression/ClangParserTest.cpp
> @@ -7,6 +7,8 @@
>
>  //===----------------------------------------------------------------------===//
>
>  #include "clang/Basic/Version.h"
> +#include "clang/Config/config.h"
> +#include "clang/Driver/Driver.h"
>
>  #include "Plugins/ExpressionParser/Clang/ClangHost.h"
>  #include "TestingSupport/SubsystemRAII.h"
> @@ -37,13 +39,11 @@ static std::string ComputeClangResourceDir(std::string
> lldb_shlib_path,
>  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;
>  #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 path_to_liblldb = "C:\\foo\\bar\\lib\\";
>  #endif
> +  std::string path_to_clang_dir = clang::driver::Driver::GetResourcesPath(
> +      path_to_liblldb + "liblldb", CLANG_RESOURCE_DIR);
>    EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir);
>
>    // The path doesn't really exist, so setting verify to true should make
>
> diff  --git a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
> b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
> index 44af6c1462bde..4b5b600307ec9 100644
> --- a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
> +++ b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake
> @@ -280,7 +280,11 @@ function(llvm_ExternalProject_Add name source_dir)
>      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})
>
> diff  --git a/openmp/CMakeLists.txt b/openmp/CMakeLists.txt
> index 04678cbd4f33d..c1efcaf80b54d 100644
> --- a/openmp/CMakeLists.txt
> +++ b/openmp/CMakeLists.txt
> @@ -90,8 +90,8 @@ option(OPENMP_ENABLE_LIBOMP_PROFILING "Enable time
> profiling for libomp." OFF)
>  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
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230603/b78389a0/attachment.html>


More information about the llvm-commits mailing list