forked from OSchip/llvm-project
[clang] Only use major version in resource dir
This causes unnecessary churn for downstreams. For the full discussion, see https://discourse.llvm.org/t/should-we-continue-embed-the-full-llvm-version-in-lib-clang/62094 Differential Revision: https://reviews.llvm.org/D125860
This commit is contained in:
parent
baf4930fb0
commit
e1b88c8a09
|
@ -176,6 +176,11 @@ code bases.
|
|||
g(42);
|
||||
}
|
||||
|
||||
- Clang's resource dir used to include the full clang version. It will now
|
||||
include only the major version. The new resource directory is
|
||||
``$prefix/lib/clang/$CLANG_MAJOR_VERSION`` and can be queried using
|
||||
``clang -print-resource-dir``, just like before.
|
||||
|
||||
What's New in Clang |release|?
|
||||
==============================
|
||||
Some of the major new features and improvements to Clang are listed
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#define CLANG_VERSION @CLANG_VERSION@
|
||||
#define CLANG_VERSION_STRING "@CLANG_VERSION@"
|
||||
#define CLANG_VERSION_MAJOR @CLANG_VERSION_MAJOR@
|
||||
#define CLANG_VERSION_MAJOR_STRING "@CLANG_VERSION_MAJOR@"
|
||||
#define CLANG_VERSION_MINOR @CLANG_VERSION_MINOR@
|
||||
#define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@
|
||||
|
|
|
@ -182,7 +182,7 @@ std::string Driver::GetResourcesPath(StringRef BinaryPath,
|
|||
// ../lib gets us to lib/ in both cases.
|
||||
P = llvm::sys::path::parent_path(Dir);
|
||||
llvm::sys::path::append(P, CLANG_INSTALL_LIBDIR_BASENAME, "clang",
|
||||
CLANG_VERSION_STRING);
|
||||
CLANG_VERSION_MAJOR_STRING);
|
||||
}
|
||||
|
||||
return std::string(P.str());
|
||||
|
|
|
@ -281,7 +281,7 @@ set(openmp_wrapper_files
|
|||
openmp_wrappers/new
|
||||
)
|
||||
|
||||
set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
|
||||
set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR}/include)
|
||||
set(out_files)
|
||||
set(generated_files)
|
||||
|
||||
|
@ -434,7 +434,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}/include)
|
||||
set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}/include)
|
||||
|
||||
#############################################################
|
||||
# Install rules for the catch-all clang-resource-headers target
|
||||
|
|
|
@ -60,7 +60,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}/include
|
||||
-I ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION_MAJOR}/include
|
||||
-I ${CLANG_SOURCE_DIR}/include
|
||||
-I ${LLVM_BINARY_DIR}/tools/clang/include
|
||||
-I ${LLVM_BINARY_DIR}/include
|
||||
|
|
|
@ -82,9 +82,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}
|
||||
-DCOMPILER_RT_OUTPUT_DIR=${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR}
|
||||
-DCOMPILER_RT_EXEC_OUTPUT_DIR=${LLVM_RUNTIME_OUTPUT_INTDIR}
|
||||
-DCOMPILER_RT_INSTALL_PATH:PATH=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}
|
||||
-DCOMPILER_RT_INSTALL_PATH:PATH=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR}
|
||||
-DCOMPILER_RT_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
|
||||
-DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX}
|
||||
|
|
|
@ -38,14 +38,14 @@ endif()
|
|||
|
||||
if (LLVM_TREE_AVAILABLE)
|
||||
# Compute the Clang version from the LLVM version.
|
||||
# FIXME: We should be able to reuse CLANG_VERSION variable calculated
|
||||
# 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]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
|
||||
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})
|
||||
set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR})
|
||||
set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
|
||||
set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
|
||||
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"
|
||||
|
|
|
@ -55,7 +55,7 @@ static bool DefaultComputeClangResourceDirectory(FileSpec &lldb_shlib_spec,
|
|||
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_STRING,
|
||||
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.
|
||||
|
|
|
@ -38,10 +38,11 @@ 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_STRING;
|
||||
"/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_STRING;
|
||||
std::string path_to_clang_dir =
|
||||
"C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_MAJOR_STRING;
|
||||
#endif
|
||||
EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir);
|
||||
|
||||
|
|
|
@ -255,9 +255,9 @@ function(llvm_ExternalProject_Add name source_dir)
|
|||
set(llvm_config_path ${LLVM_CONFIG_PATH})
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
|
||||
string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR
|
||||
${PACKAGE_VERSION})
|
||||
set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION}")
|
||||
set(resource_dir "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION_MAJOR}")
|
||||
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})
|
||||
|
|
|
@ -109,7 +109,7 @@ static llvm::cl::opt<string> OutputLanguage(llvm::cl::Required,
|
|||
llvm::cl::value_desc("name"));
|
||||
|
||||
static const char *ResourceDir =
|
||||
CLANG_PREFIX "/lib/clang/" CLANG_VERSION_STRING;
|
||||
CLANG_PREFIX "/lib/clang/" CLANG_VERSION_MAJOR_STRING;
|
||||
|
||||
/* Does decl have an attribute of the following form?
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue