forked from OSchip/llvm-project
Add very limited support for GCC's '-B' flag. This allows us to support unusual
toolchain configurations and is a small step toward FreeBSD support. llvm-svn: 99159
This commit is contained in:
parent
77eede5776
commit
8455924303
|
@ -64,6 +64,12 @@ public:
|
|||
/// The path to the compiler resource directory.
|
||||
std::string ResourceDir;
|
||||
|
||||
/// A prefix directory used to emulated a limited subset of GCC's '-Bprefix'
|
||||
/// functionality.
|
||||
/// FIXME: This type of customization should be removed in favor of the
|
||||
/// universal driver when it is ready.
|
||||
std::string PrefixDir;
|
||||
|
||||
/// Default host triple.
|
||||
std::string DefaultHostTriple;
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ def ccc_ : Joined<"-ccc-">, Group<ccc_Group>, Flags<[Unsupported]>;
|
|||
def _HASH_HASH_HASH : Flag<"-###">, Flags<[DriverOption]>,
|
||||
HelpText<"Print the commands to run for this compilation">;
|
||||
def A : JoinedOrSeparate<"-A">;
|
||||
def B : JoinedOrSeparate<"-B">, Flags<[Unsupported]>;
|
||||
def B : JoinedOrSeparate<"-B">;
|
||||
def CC : Flag<"-CC">;
|
||||
def C : Flag<"-C">;
|
||||
def D : JoinedOrSeparate<"-D">, Group<CompileOnly_Group>;
|
||||
|
|
|
@ -172,6 +172,8 @@ Compilation *Driver::BuildCompilation(int argc, const char **argv) {
|
|||
HostTriple = A->getValue(*Args);
|
||||
if (const Arg *A = Args->getLastArg(options::OPT_ccc_install_dir))
|
||||
Dir = A->getValue(*Args);
|
||||
if (const Arg *A = Args->getLastArg(options::OPT_B))
|
||||
PrefixDir = A->getValue(*Args);
|
||||
|
||||
Host = GetHostInfo(HostTriple);
|
||||
|
||||
|
@ -1088,6 +1090,15 @@ const char *Driver::GetNamedOutputPath(Compilation &C,
|
|||
}
|
||||
|
||||
std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {
|
||||
// Respect a limited subset of the '-Bprefix' functionality in GCC by
|
||||
// attempting to use this prefix when lokup up program paths.
|
||||
if (!PrefixDir.empty()) {
|
||||
llvm::sys::Path P(PrefixDir);
|
||||
P.appendComponent(Name);
|
||||
if (P.exists())
|
||||
return P.str();
|
||||
}
|
||||
|
||||
const ToolChain::path_list &List = TC.getFilePaths();
|
||||
for (ToolChain::path_list::const_iterator
|
||||
it = List.begin(), ie = List.end(); it != ie; ++it) {
|
||||
|
@ -1102,6 +1113,15 @@ std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {
|
|||
|
||||
std::string Driver::GetProgramPath(const char *Name, const ToolChain &TC,
|
||||
bool WantFile) const {
|
||||
// Respect a limited subset of the '-Bprefix' functionality in GCC by
|
||||
// attempting to use this prefix when lokup up program paths.
|
||||
if (!PrefixDir.empty()) {
|
||||
llvm::sys::Path P(PrefixDir);
|
||||
P.appendComponent(Name);
|
||||
if (WantFile ? P.exists() : P.canExecute())
|
||||
return P.str();
|
||||
}
|
||||
|
||||
const ToolChain::path_list &List = TC.getProgramPaths();
|
||||
for (ToolChain::path_list::const_iterator
|
||||
it = List.begin(), ie = List.end(); it != ie; ++it) {
|
||||
|
|
Loading…
Reference in New Issue