Skip to content

Commit

Permalink
[DPWBS-1496] Add default library search paths
Browse files Browse the repository at this point in the history
  • Loading branch information
Edgar Solymosi authored and konstantinschwarz committed Jun 17, 2020
1 parent 6acedf0 commit 4454217
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 0 deletions.
40 changes: 40 additions & 0 deletions clang/lib/Driver/ToolChains/HighTec.cpp
Expand Up @@ -32,6 +32,44 @@ HighTec::HighTec(const Driver &D, const llvm::Triple &Triple,
getProgramPaths().push_back(getDriver().getInstalledDir());
if (getDriver().getInstalledDir() != getDriver().Dir)
getProgramPaths().push_back(getDriver().Dir);

if (Triple.getArch() == llvm::Triple::tricore) {
auto FilePath = [&](const Multilib &M) -> std::vector<std::string> {
std::vector<std::string> FP;
SmallString<128> P(llvm::sys::path::parent_path(D.Dir));
llvm::sys::path::append(P, "tricore", "lib", M.gccSuffix());
FP.emplace_back(std::string(P.str()));
return FP;
};

Multilibs.push_back(
Multilib("tc161", "tc161", "tc161", 1).flag("+march=tc161"));
Multilibs.push_back(
Multilib("tc162", "tc162", "tc162", 2).flag("+march=tc162"));
Multilibs.push_back(
Multilib("tc18", "tc18", "tc18", 3).flag("+march=tc18"));

Multilibs.FilterOut([&](const Multilib &M) {
std::vector<std::string> RD = FilePath(M);
return std::all_of(RD.begin(), RD.end(),
[&](std::string P) { return !getVFS().exists(P);
});
});

StringRef MArch = Args.getLastArgValue(options::OPT_march_EQ);
Multilib::flags_list Flags;
addMultilibFlag(MArch == "tc161", "march=tc161", Flags);
addMultilibFlag(MArch == "tc162", "march=tc162", Flags);
addMultilibFlag(MArch == "tc18", "march=tc18", Flags);
Multilibs.setFilePathsCallback(FilePath);

if (Multilibs.select(Flags, SelectedMultilib))
if (!SelectedMultilib.isDefault())
if (const auto &PathsCallback = Multilibs.filePathsCallback())
for (const auto &Path : PathsCallback(SelectedMultilib))
// Prepend the multilib path to ensure it takes the precedence.
getFilePaths().insert(getFilePaths().begin(), Path);
}
}

Tool *HighTec::buildLinker() const { return new tools::hightec::Linker(*this); }
Expand Down Expand Up @@ -105,6 +143,8 @@ void hightec::Linker::ConstructJob(Compilation &C, const JobAction &JA,

auto &TC = static_cast<const toolchains::HighTec &>(getToolChain());

TC.AddFilePathLibArgs(Args, CmdArgs);

AddLinkerInputs(TC, Inputs, Args, CmdArgs, JA);

CmdArgs.push_back("-o");
Expand Down
Empty file.
Empty file.
Empty file.
21 changes: 21 additions & 0 deletions clang/test/Driver/hightec.c
Expand Up @@ -25,3 +25,24 @@
// CHECK-NOSTDLIBINC: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
// CHECK-NOSTDLIBINC: "[[RESOURCE_DIR]]{{/|\\\\}}include"
// CHECK-NOSTDLIBINC-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}include"

// RUN: %clang %s -### --target=tricore -march=tc161 \
// RUN: -ccc-install-dir %S/Inputs/basic_htc_tree/bin 2>&1 \
// RUN: | FileCheck -check-prefixes=CHECK-TC161 %s
// CHECK-TC161: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc161
// CHECK-TC161-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc162
// CHECK-TC161-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc18

// RUN: %clang %s -### --target=tricore -march=tc162 \
// RUN: -ccc-install-dir %S/Inputs/basic_htc_tree/bin 2>&1 \
// RUN: | FileCheck -check-prefixes=CHECK-TC162 %s
// CHECK-TC162: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc162
// CHECK-TC162-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc161
// CHECK-TC162-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc18

// RUN: %clang %s -### --target=tricore -march=tc18 \
// RUN: -ccc-install-dir %S/Inputs/basic_htc_tree/bin 2>&1 \
// RUN: | FileCheck -check-prefixes=CHECK-TC18 %s
// CHECK-TC18: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc18
// CHECK-TC18-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc161
// CHECK-TC18-NOT: "[[SYSROOT:[^"]+]]{{/|\\\\}}tricore{{/|\\\\}}lib{{/|\\\\}}tc162

0 comments on commit 4454217

Please sign in to comment.