Skip to content

Commit a3ba9d6

Browse files
committed
[Driver] Fixes for header / library paths on Haiku
Some fixes for the header / library paths.. - Use concat macro for all paths - Correct the C++ header paths - Add library paths Differential Revision: https://reviews.llvm.org/D159414
1 parent 5db8990 commit a3ba9d6

File tree

4 files changed

+117
-35
lines changed

4 files changed

+117
-35
lines changed

clang/lib/Driver/ToolChains/Haiku.cpp

Lines changed: 70 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ using namespace llvm::opt;
2121
Haiku::Haiku(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
2222
: Generic_ELF(D, Triple, Args) {
2323

24+
getFilePaths().push_back(concat(getDriver().SysRoot, "/boot/system/lib"));
25+
getFilePaths().push_back(concat(getDriver().SysRoot, "/boot/system/develop/lib"));
2426
}
2527

2628
void Haiku::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
@@ -52,49 +54,82 @@ void Haiku::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
5254
return;
5355
}
5456

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");
57+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
58+
"/boot/system/non-packaged/develop/headers"));
59+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
60+
"/boot/system/develop/headers/os"));
61+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
62+
"/boot/system/develop/headers/os/app"));
63+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
64+
"/boot/system/develop/headers/os/device"));
65+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
66+
"/boot/system/develop/headers/os/drivers"));
67+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
68+
"/boot/system/develop/headers/os/game"));
69+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
70+
"/boot/system/develop/headers/os/interface"));
71+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
72+
"/boot/system/develop/headers/os/kernel"));
73+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
74+
"/boot/system/develop/headers/os/locale"));
75+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
76+
"/boot/system/develop/headers/os/mail"));
77+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
78+
"/boot/system/develop/headers/os/media"));
79+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
80+
"/boot/system/develop/headers/os/midi"));
81+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
82+
"/boot/system/develop/headers/os/midi2"));
83+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
84+
"/boot/system/develop/headers/os/net"));
85+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
86+
"/boot/system/develop/headers/os/opengl"));
87+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
88+
"/boot/system/develop/headers/os/storage"));
89+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
90+
"/boot/system/develop/headers/os/support"));
91+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
92+
"/boot/system/develop/headers/os/translation"));
93+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
94+
"/boot/system/develop/headers/os/add-ons/graphics"));
95+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
96+
"/boot/system/develop/headers/os/add-ons/input_server"));
97+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
98+
"/boot/system/develop/headers/os/add-ons/mail_daemon"));
99+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
100+
"/boot/system/develop/headers/os/add-ons/registrar"));
101+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
102+
"/boot/system/develop/headers/os/add-ons/screen_saver"));
103+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
104+
"/boot/system/develop/headers/os/add-ons/tracker"));
105+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
106+
"/boot/system/develop/headers/os/be_apps/Deskbar"));
107+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
108+
"/boot/system/develop/headers/os/be_apps/NetPositive"));
109+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
110+
"/boot/system/develop/headers/os/be_apps/Tracker"));
111+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
112+
"/boot/system/develop/headers/3rdparty"));
113+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
114+
"/boot/system/develop/headers/bsd"));
115+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
116+
"/boot/system/develop/headers/glibc"));
117+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
118+
"/boot/system/develop/headers/gnu"));
119+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
120+
"/boot/system/develop/headers/posix"));
121+
addSystemInclude(DriverArgs, CC1Args, concat(D.SysRoot,
122+
"/boot/system/develop/headers"));
88123
}
89124

90125
void Haiku::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
91126
llvm::opt::ArgStringList &CC1Args) const {
92127
addSystemInclude(DriverArgs, CC1Args,
93-
getDriver().SysRoot + "/system/develop/headers/c++/v1");
128+
concat(getDriver().SysRoot, "/boot/system/develop/headers/c++/v1"));
94129
}
95130

96131
void Haiku::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
97132
llvm::opt::ArgStringList &CC1Args) const {
98-
addLibStdCXXIncludePaths(getDriver().SysRoot + "/system/develop/headers/c++",
133+
addLibStdCXXIncludePaths(concat(getDriver().SysRoot, "/boot/system/develop/headers/c++"),
99134
getTriple().str(), "", DriverArgs, CC1Args);
100135
}

clang/test/Driver/Inputs/haiku_x86_64_tree/boot/system/develop/headers/c++/v1/.keep

Whitespace-only changes.

clang/test/Driver/haiku.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Check the C header paths
2+
// RUN: %clang --target=x86_64-unknown-haiku -### %s 2>&1 \
3+
// RUN: | FileCheck --check-prefix=CHECK-C-HEADER-PATH %s
4+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/non-packaged/develop/headers"
5+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os"
6+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/app"
7+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/device"
8+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/drivers"
9+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/game"
10+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/interface"
11+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/kernel"
12+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/locale"
13+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/mail"
14+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/media"
15+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/midi"
16+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/midi2"
17+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/net"
18+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/opengl"
19+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/storage"
20+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/support"
21+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/translation"
22+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/graphics"
23+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/input_server"
24+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/mail_daemon"
25+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/registrar"
26+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/screen_saver"
27+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/add-ons/tracker"
28+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/be_apps/Deskbar"
29+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/be_apps/NetPositive"
30+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/os/be_apps/Tracker"
31+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/3rdparty"
32+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/bsd"
33+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/glibc"
34+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/gnu"
35+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers/posix"
36+
// CHECK-C-HEADER-PATH: "-internal-isystem" "/boot/system/develop/headers"

clang/test/Driver/haiku.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Check the C++ header path (libstdc++)
2+
// RUN: %clang++ --target=x86_64-unknown-haiku -### %s 2>&1 \
3+
// RUN: --sysroot=%S/Inputs/haiku_x86_64_tree \
4+
// RUN: | FileCheck --check-prefix=CHECK-LIBSTDCXX-HEADER-PATH %s
5+
// CHECK-LIBSTDCXX-HEADER-PATH: "-internal-isystem" "[[SYSROOT:[^"]+]]/boot/system/develop/headers/c++"
6+
7+
// Check the C++ header path (when using libc++)
8+
// RUN: %clang++ --target=x86_64-unknown-haiku --stdlib=libc++ -### %s 2>&1 \
9+
// RUN: --sysroot=%S/Inputs/haiku_x86_64_tree \
10+
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-HEADER-PATH %s
11+
// CHECK-LIBCXX-HEADER-PATH: "-internal-isystem" "[[SYSROOT:[^"]+]]/boot/system/develop/headers/c++/v1"

0 commit comments

Comments
 (0)