Skip to content

Commit f347633

Browse files
committed
[Driver] move DragonFly header search path management to the driver
As has been done for other OS's. Move the header path management to the driver. Also I noticed with D89690 that the library paths were updated for GCC 8, but the C++ header path was not. So I also fixed that while here. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D158376
1 parent d267990 commit f347633

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

clang/lib/Driver/ToolChains/DragonFly.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "clang/Driver/Driver.h"
1313
#include "clang/Driver/Options.h"
1414
#include "llvm/Option/ArgList.h"
15+
#include "llvm/Support/Path.h"
1516

1617
using namespace clang::driver;
1718
using namespace clang::driver::tools;
@@ -195,6 +196,33 @@ DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple,
195196
getFilePaths().push_back("/usr/lib/gcc80");
196197
}
197198

199+
void DragonFly::AddClangSystemIncludeArgs(
200+
const llvm::opt::ArgList &DriverArgs,
201+
llvm::opt::ArgStringList &CC1Args) const {
202+
const Driver &D = getDriver();
203+
204+
if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
205+
return;
206+
207+
if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
208+
SmallString<128> Dir(D.ResourceDir);
209+
llvm::sys::path::append(Dir, "include");
210+
addSystemInclude(DriverArgs, CC1Args, Dir.str());
211+
}
212+
213+
if (DriverArgs.hasArg(options::OPT_nostdlibinc))
214+
return;
215+
216+
addExternCSystemInclude(DriverArgs, CC1Args,
217+
concat(D.SysRoot, "/usr/include"));
218+
}
219+
220+
void DragonFly::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
221+
llvm::opt::ArgStringList &CC1Args) const {
222+
addLibStdCXXIncludePaths(concat(getDriver().SysRoot, "/usr/include/c++/8.0"), "", "",
223+
DriverArgs, CC1Args);
224+
}
225+
198226
Tool *DragonFly::buildAssembler() const {
199227
return new tools::dragonfly::Assembler(*this);
200228
}

clang/lib/Driver/ToolChains/DragonFly.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ class LLVM_LIBRARY_VISIBILITY DragonFly : public Generic_ELF {
5555

5656
bool IsMathErrnoDefault() const override { return false; }
5757

58+
void
59+
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
60+
llvm::opt::ArgStringList &CC1Args) const override;
61+
void addLibStdCxxIncludePaths(
62+
const llvm::opt::ArgList &DriverArgs,
63+
llvm::opt::ArgStringList &CC1Args) const override;
64+
5865
protected:
5966
Tool *buildAssembler() const override;
6067
Tool *buildLinker() const override;

clang/lib/Lex/InitHeaderSearch.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,9 +307,6 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths(
307307
break;
308308
}
309309
break;
310-
case llvm::Triple::DragonFly:
311-
AddPath("/usr/include/c++/5.0", CXXSystem, false);
312-
break;
313310
default:
314311
break;
315312
}
@@ -319,6 +316,7 @@ bool InitHeaderSearch::ShouldAddDefaultIncludePaths(
319316
const llvm::Triple &triple) {
320317
switch (triple.getOS()) {
321318
case llvm::Triple::AIX:
319+
case llvm::Triple::DragonFly:
322320
case llvm::Triple::ELFIAMCU:
323321
case llvm::Triple::Emscripten:
324322
case llvm::Triple::FreeBSD:

0 commit comments

Comments
 (0)