Skip to content

Commit aa2c701

Browse files
committed
[Driver] move Haiku header search path management to the driver
Also while here sync the header paths with the Haiku GCC configuration. Added: /boot/system/develop/headers/gnu Removed: /boot/system/develop/headers/os/arch https://github.com/haikuports/haikuports/tree/master/sys-devel/gcc/patches Reviewed By: nielx Differential Revision: https://reviews.llvm.org/D157767
1 parent 1e4d612 commit aa2c701

File tree

3 files changed

+70
-36
lines changed

3 files changed

+70
-36
lines changed

clang/lib/Driver/ToolChains/Haiku.cpp

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#include "Haiku.h"
1010
#include "CommonArgs.h"
11+
#include "clang/Config/config.h"
12+
#include "llvm/Support/Path.h"
1113

1214
using namespace clang::driver;
1315
using namespace clang::driver::toolchains;
@@ -21,6 +23,70 @@ Haiku::Haiku(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
2123

2224
}
2325

26+
void Haiku::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
27+
llvm::opt::ArgStringList &CC1Args) const {
28+
const Driver &D = getDriver();
29+
30+
if (DriverArgs.hasArg(options::OPT_nostdinc))
31+
return;
32+
33+
if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
34+
SmallString<128> Dir(D.ResourceDir);
35+
llvm::sys::path::append(Dir, "include");
36+
addSystemInclude(DriverArgs, CC1Args, Dir.str());
37+
}
38+
39+
if (DriverArgs.hasArg(options::OPT_nostdlibinc))
40+
return;
41+
42+
// Add dirs specified via 'configure --with-c-include-dirs'.
43+
StringRef CIncludeDirs(C_INCLUDE_DIRS);
44+
if (!CIncludeDirs.empty()) {
45+
SmallVector<StringRef, 5> dirs;
46+
CIncludeDirs.split(dirs, ":");
47+
for (StringRef dir : dirs) {
48+
StringRef Prefix =
49+
llvm::sys::path::is_absolute(dir) ? StringRef(D.SysRoot) : "";
50+
addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
51+
}
52+
return;
53+
}
54+
55+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/non-packaged/develop/headers");
56+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os");
57+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/app");
58+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/device");
59+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/drivers");
60+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/game");
61+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/interface");
62+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/kernel");
63+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/locale");
64+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/mail");
65+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/media");
66+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/midi");
67+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/midi2");
68+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/net");
69+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/opengl");
70+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/storage");
71+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/support");
72+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/translation");
73+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/graphics");
74+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/input_server");
75+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/mail_daemon");
76+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/registrar");
77+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/screen_saver");
78+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/add-ons/tracker");
79+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/be_apps/Deskbar");
80+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/be_apps/NetPositive");
81+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/os/be_apps/Tracker");
82+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/3rdparty");
83+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/bsd");
84+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/glibc");
85+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/gnu");
86+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers/posix");
87+
addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/boot/system/develop/headers");
88+
}
89+
2490
void Haiku::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
2591
llvm::opt::ArgStringList &CC1Args) const {
2692
addSystemInclude(DriverArgs, CC1Args,

clang/lib/Driver/ToolChains/Haiku.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class LLVM_LIBRARY_VISIBILITY Haiku : public Generic_ELF {
2626
return getTriple().getArch() == llvm::Triple::x86_64;
2727
}
2828

29+
void AddClangSystemIncludeArgs(
30+
const llvm::opt::ArgList &DriverArgs,
31+
llvm::opt::ArgStringList &CC1Args) const override;
2932
void addLibCxxIncludePaths(
3033
const llvm::opt::ArgList &DriverArgs,
3134
llvm::opt::ArgStringList &CC1Args) const override;

clang/lib/Lex/InitHeaderSearch.cpp

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -279,42 +279,6 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
279279
AddPath(P, System, false);
280280
break;
281281
}
282-
283-
case llvm::Triple::Haiku:
284-
AddPath("/boot/system/non-packaged/develop/headers", System, false);
285-
AddPath("/boot/system/develop/headers/os", System, false);
286-
AddPath("/boot/system/develop/headers/os/app", System, false);
287-
AddPath("/boot/system/develop/headers/os/arch", System, false);
288-
AddPath("/boot/system/develop/headers/os/device", System, false);
289-
AddPath("/boot/system/develop/headers/os/drivers", System, false);
290-
AddPath("/boot/system/develop/headers/os/game", System, false);
291-
AddPath("/boot/system/develop/headers/os/interface", System, false);
292-
AddPath("/boot/system/develop/headers/os/kernel", System, false);
293-
AddPath("/boot/system/develop/headers/os/locale", System, false);
294-
AddPath("/boot/system/develop/headers/os/mail", System, false);
295-
AddPath("/boot/system/develop/headers/os/media", System, false);
296-
AddPath("/boot/system/develop/headers/os/midi", System, false);
297-
AddPath("/boot/system/develop/headers/os/midi2", System, false);
298-
AddPath("/boot/system/develop/headers/os/net", System, false);
299-
AddPath("/boot/system/develop/headers/os/opengl", System, false);
300-
AddPath("/boot/system/develop/headers/os/storage", System, false);
301-
AddPath("/boot/system/develop/headers/os/support", System, false);
302-
AddPath("/boot/system/develop/headers/os/translation", System, false);
303-
AddPath("/boot/system/develop/headers/os/add-ons/graphics", System, false);
304-
AddPath("/boot/system/develop/headers/os/add-ons/input_server", System, false);
305-
AddPath("/boot/system/develop/headers/os/add-ons/mail_daemon", System, false);
306-
AddPath("/boot/system/develop/headers/os/add-ons/registrar", System, false);
307-
AddPath("/boot/system/develop/headers/os/add-ons/screen_saver", System, false);
308-
AddPath("/boot/system/develop/headers/os/add-ons/tracker", System, false);
309-
AddPath("/boot/system/develop/headers/os/be_apps/Deskbar", System, false);
310-
AddPath("/boot/system/develop/headers/os/be_apps/NetPositive", System, false);
311-
AddPath("/boot/system/develop/headers/os/be_apps/Tracker", System, false);
312-
AddPath("/boot/system/develop/headers/3rdparty", System, false);
313-
AddPath("/boot/system/develop/headers/bsd", System, false);
314-
AddPath("/boot/system/develop/headers/glibc", System, false);
315-
AddPath("/boot/system/develop/headers/posix", System, false);
316-
AddPath("/boot/system/develop/headers", System, false);
317-
break;
318282
case llvm::Triple::RTEMS:
319283
break;
320284
case llvm::Triple::Win32:
@@ -388,6 +352,7 @@ bool InitHeaderSearch::ShouldAddDefaultIncludePaths(
388352
case llvm::Triple::PS4:
389353
case llvm::Triple::PS5:
390354
case llvm::Triple::Fuchsia:
355+
case llvm::Triple::Haiku:
391356
case llvm::Triple::Hurd:
392357
case llvm::Triple::Linux:
393358
case llvm::Triple::Solaris:

0 commit comments

Comments
 (0)