Accept multiple --config options
redhat-rpm-config now adds --config to CFLAGS when the macro %toolchain is set to clang. Some packages end up adding CFLAGS twice to their compiler commands, so we need to patch clang to allow multiple --config options so that these packages won't fail to compile.
This commit is contained in:
parent
43b5ca7f2b
commit
e2a664c75a
@ -0,0 +1,64 @@
|
|||||||
|
From d970ab63e22eb5918774953da6b99ac27e5832a0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Stellard <tstellar@redhat.com>
|
||||||
|
Date: Tue, 16 Jun 2020 11:20:20 -0700
|
||||||
|
Subject: [PATCH] Driver: Accept multiple --config options if filenames are the
|
||||||
|
same
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
We're trying to use the --config options to pass distro specific
|
||||||
|
options for Fedora via the CFLAGS variable. However, some projects
|
||||||
|
end up using the CFLAGS variable multiple times in their command line,
|
||||||
|
which leads to an error when --config is used.
|
||||||
|
|
||||||
|
This patch resolves this issue by allowing more than one --config option
|
||||||
|
on the command line as long as the file names are the same.
|
||||||
|
|
||||||
|
Reviewers: sepavloff, hfinkel
|
||||||
|
|
||||||
|
Reviewed By: sepavloff
|
||||||
|
|
||||||
|
Subscribers: cfe-commits, llvm-commits
|
||||||
|
|
||||||
|
Tags: #clang
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D81424
|
||||||
|
---
|
||||||
|
clang/lib/Driver/Driver.cpp | 8 ++++++--
|
||||||
|
clang/test/Driver/config-file.c | 5 +++++
|
||||||
|
2 files changed, 11 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
|
||||||
|
index 3add665..a8442d2 100644
|
||||||
|
--- a/clang/lib/Driver/Driver.cpp
|
||||||
|
+++ b/clang/lib/Driver/Driver.cpp
|
||||||
|
@@ -833,8 +833,12 @@ bool Driver::loadConfigFile() {
|
||||||
|
std::vector<std::string> ConfigFiles =
|
||||||
|
CLOptions->getAllArgValues(options::OPT_config);
|
||||||
|
if (ConfigFiles.size() > 1) {
|
||||||
|
- Diag(diag::err_drv_duplicate_config);
|
||||||
|
- return true;
|
||||||
|
+ if (!std::all_of(
|
||||||
|
+ ConfigFiles.begin(), ConfigFiles.end(),
|
||||||
|
+ [ConfigFiles](std::string s) { return s == ConfigFiles[0]; })) {
|
||||||
|
+ Diag(diag::err_drv_duplicate_config);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ConfigFiles.empty()) {
|
||||||
|
diff --git a/clang/test/Driver/config-file.c b/clang/test/Driver/config-file.c
|
||||||
|
index 04127d4..fde7260 100644
|
||||||
|
--- a/clang/test/Driver/config-file.c
|
||||||
|
+++ b/clang/test/Driver/config-file.c
|
||||||
|
@@ -71,3 +71,8 @@
|
||||||
|
// RUN: %clang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config config-4 -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-PRECEDENCE
|
||||||
|
// CHECK-PRECEDENCE: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg
|
||||||
|
// CHECK-PRECEDENCE: -Wall
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+//--- Duplicate --config options are allowed if the value is the same
|
||||||
|
+// RUN: %clang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config config-4 --config config-4 -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-SAME-CONFIG
|
||||||
|
+// CHECK-SAME-CONFIG: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
@ -4,7 +4,7 @@
|
|||||||
%global min_ver 0
|
%global min_ver 0
|
||||||
%global patch_ver 0
|
%global patch_ver 0
|
||||||
#%%global rc_ver 6
|
#%%global rc_ver 6
|
||||||
%global baserelease 4
|
%global baserelease 5
|
||||||
|
|
||||||
%global clang_tools_binaries \
|
%global clang_tools_binaries \
|
||||||
%{_bindir}/clang-apply-replacements \
|
%{_bindir}/clang-apply-replacements \
|
||||||
@ -102,6 +102,7 @@ Patch14: 0001-clang-fix-undefined-behaviour-in-RawComment-getForma.patch
|
|||||||
|
|
||||||
# Not Upstream
|
# Not Upstream
|
||||||
Patch15: 0001-clang-Don-t-install-static-libraries.patch
|
Patch15: 0001-clang-Don-t-install-static-libraries.patch
|
||||||
|
Patch16: 0001-Driver-Accept-multiple-config-options-if-filenames-a.patch
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
@ -253,6 +254,7 @@ pathfix.py -i %{__python3} -pn \
|
|||||||
%patch13 -p2 -b .unwind-all
|
%patch13 -p2 -b .unwind-all
|
||||||
%patch14 -p2 -b .clangd
|
%patch14 -p2 -b .clangd
|
||||||
%patch15 -p2 -b .no-install-static
|
%patch15 -p2 -b .no-install-static
|
||||||
|
%patch16 -p2 -b .config-multiple
|
||||||
|
|
||||||
mv ../%{clang_tools_srcdir} tools/extra
|
mv ../%{clang_tools_srcdir} tools/extra
|
||||||
|
|
||||||
@ -480,6 +482,9 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} ninja check-all -C _build || \
|
|||||||
|
|
||||||
%endif
|
%endif
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jun 08 2020 Tom Stellard <tstellar@redhat.com> - 10.0.0-5
|
||||||
|
- Accept multiple --config options
|
||||||
|
|
||||||
* Wed Jun 3 2020 Dan Čermák <dan.cermak@cgc-instruments.com> - 10.0.0-4
|
* Wed Jun 3 2020 Dan Čermák <dan.cermak@cgc-instruments.com> - 10.0.0-4
|
||||||
- Add symlink to %%{_libdir}/clang/%%{maj_ver} for persistent access to the resource directory accross minor version bumps
|
- Add symlink to %%{_libdir}/clang/%%{maj_ver} for persistent access to the resource directory accross minor version bumps
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user