Skip to content

Commit 52380ba

Browse files
committed
[MSP430] Add more search paths
* Add support for clang based install tree (used by default): <prefix> bin/clang lib/ msp430/ lib/ include/ * Exclude default system include direcories. TODO: Add tests.
1 parent 8022160 commit 52380ba

File tree

1 file changed

+14
-9
lines changed
  • src/llvm/tools/clang/lib/Driver/ToolChains

1 file changed

+14
-9
lines changed

src/llvm/tools/clang/lib/Driver/ToolChains/MSP430.cpp

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,17 @@ MSP430ToolChain::MSP430ToolChain(const Driver &D, const llvm::Triple &Triple,
115115
const ArgList &Args)
116116
: Generic_ELF(D, Triple, Args) {
117117

118+
StringRef MultilibSuf = "";
119+
118120
GCCInstallation.init(Triple, Args);
119121
if (GCCInstallation.isValid()) {
120-
StringRef MultilibSuf = GCCInstallation.getMultilib().gccSuffix();
121-
getFilePaths().push_back((computeSysRoot() + "/lib" + MultilibSuf).str());
122+
MultilibSuf = GCCInstallation.getMultilib().gccSuffix();
122123
getFilePaths().push_back(
123124
(GCCInstallation.getInstallPath() + MultilibSuf).str());
124125
getProgramPaths().push_back(
125126
(GCCInstallation.getParentLibPath() + "/../bin").str());
126127
}
128+
getFilePaths().push_back((computeSysRoot() + "/lib" + MultilibSuf).str());
127129
}
128130

129131
Tool *MSP430ToolChain::buildLinker() const {
@@ -145,6 +147,8 @@ void MSP430ToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
145147
void MSP430ToolChain::addClangTargetOptions(const ArgList &DriverArgs,
146148
ArgStringList &CC1Args,
147149
Action::OffloadKind) const {
150+
CC1Args.push_back("-nostdsysteminc");
151+
148152
const auto *MCUArg = DriverArgs.getLastArg(options::OPT_mmcu_EQ);
149153
if (!MCUArg)
150154
return;
@@ -163,13 +167,14 @@ std::string MSP430ToolChain::computeSysRoot() const {
163167
if (!getDriver().SysRoot.empty())
164168
return getDriver().SysRoot;
165169

166-
if (!GCCInstallation.isValid())
167-
return std::string();
168-
169-
StringRef LibDir = GCCInstallation.getParentLibPath();
170-
StringRef TripleStr = GCCInstallation.getTriple().str();
171-
std::string SysRootDir = LibDir.str() + "/../" + TripleStr.str();
172-
170+
std::string SysRootDir;
171+
if (GCCInstallation.isValid()) {
172+
StringRef LibDir = GCCInstallation.getParentLibPath();
173+
StringRef TripleStr = GCCInstallation.getTriple().str();
174+
SysRootDir = LibDir.str() + "/../" + TripleStr.str();
175+
} else {
176+
SysRootDir = getDriver().Dir + "/../" + getTriple().getTriple();
177+
}
173178
if (!llvm::sys::fs::exists(SysRootDir))
174179
return std::string();
175180

0 commit comments

Comments
 (0)