e2a664c75a
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.
65 lines
2.5 KiB
Diff
65 lines
2.5 KiB
Diff
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
|
|
|