use DEFAULT_SYSROOT

llvm-svn: 154792
This commit is contained in:
Sebastian Pop 2012-04-16 04:16:43 +00:00
parent 5c9e18443d
commit 980920a321
7 changed files with 32 additions and 15 deletions

View File

@ -66,6 +66,10 @@ set(CLANG_RESOURCE_DIR "" CACHE STRING
set(C_INCLUDE_DIRS "" CACHE STRING
"Colon separated list of directories clang will search for headers.")
set(GCC_INSTALL_PREFIX "" CACHE PATH "Directory where gcc is installed." )
set(DEFAULT_SYSROOT "" CACHE PATH
"Default <path> to all compiler invocations for --sysroot=<path>." )
set(CLANG_VENDOR "" CACHE STRING
"Vendor-specific text for showing with version information.")

View File

@ -4,8 +4,11 @@
/* Relative directory for resource files */
#define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"
/* Directory where gcc is installed. */
#define GCC_INSTALL_PREFIX "${GCC_INSTALL_PREFIX}"
/* Directories clang will search for headers */
#define C_INCLUDE_DIRS "${C_INCLUDE_DIRS}"
/* Default <path> to all compiler invocations for --sysroot=<path>. */
#define DEFAULT_SYSROOT "${DEFAULT_SYSROOT}"
/* Directory where gcc is installed. */
#define GCC_INSTALL_PREFIX "${GCC_INSTALL_PREFIX}"

View File

@ -9,13 +9,16 @@
/* Relative directory for resource files */
#undef CLANG_RESOURCE_DIR
/* Directory where gcc is installed. */
#undef GCC_INSTALL_PREFIX
/* Directories clang will search for headers */
#undef C_INCLUDE_DIRS
/* Linker version detected at compile time. */
#undef HOST_LINK_VERSION
/* Default <path> to all compiler invocations for --sysroot=<path>. */
#undef DEFAULT_SYSROOT
/* Directory where gcc is installed. */
#undef GCC_INSTALL_PREFIX
#endif

View File

@ -92,6 +92,9 @@ public:
return FailureResultFiles;
}
/// Returns the sysroot path.
StringRef getSysRoot() const;
/// getArgsForToolChain - Return the derived argument list for the
/// tool chain \arg TC (or the default tool chain, if TC is not
/// specified).

View File

@ -230,3 +230,7 @@ void Compilation::initCompilationForDiagnostics(void) {
Redirects[1] = new const llvm::sys::Path();
Redirects[2] = new const llvm::sys::Path();
}
StringRef Compilation::getSysRoot(void) const {
return getDriver().SysRoot;
}

View File

@ -49,8 +49,8 @@ Driver::Driver(StringRef ClangExecutable,
bool IsProduction,
DiagnosticsEngine &Diags)
: Opts(createDriverOptTable()), Diags(Diags),
ClangExecutable(ClangExecutable), UseStdLib(true),
DefaultTargetTriple(DefaultTargetTriple),
ClangExecutable(ClangExecutable), SysRoot(DEFAULT_SYSROOT),
UseStdLib(true), DefaultTargetTriple(DefaultTargetTriple),
DefaultImageName(DefaultImageName),
DriverTitle("clang \"gcc-compatible\" driver"),
CCPrintOptionsFilename(0), CCPrintHeadersFilename(0),
@ -660,9 +660,7 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
llvm::outs() << "\n";
llvm::outs() << "libraries: =" << ResourceDir;
std::string sysroot;
if (Arg *A = C.getArgs().getLastArg(options::OPT__sysroot_EQ))
sysroot = A->getValue(C.getArgs());
StringRef sysroot = C.getSysRoot();
for (ToolChain::path_list::const_iterator it = TC.getFilePaths().begin(),
ie = TC.getFilePaths().end(); it != ie; ++it) {

View File

@ -377,10 +377,11 @@ void Clang::AddPreprocessingOptions(Compilation &C,
// If we have a --sysroot, and don't have an explicit -isysroot flag, add an
// -isysroot to the CC1 invocation.
if (Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
StringRef sysroot = C.getSysRoot();
if (sysroot != "") {
if (!Args.hasArg(options::OPT_isysroot)) {
CmdArgs.push_back("-isysroot");
CmdArgs.push_back(A->getValue(Args));
CmdArgs.push_back(C.getArgs().MakeArgString(sysroot));
}
}
@ -4016,9 +4017,10 @@ void darwin::Link::AddLinkArgs(Compilation &C,
// Give --sysroot= preference, over the Apple specific behavior to also use
// --isysroot as the syslibroot.
if (const Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
StringRef sysroot = C.getSysRoot();
if (sysroot != "") {
CmdArgs.push_back("-syslibroot");
CmdArgs.push_back(A->getValue(Args));
CmdArgs.push_back(C.getArgs().MakeArgString(sysroot));
} else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
CmdArgs.push_back("-syslibroot");
CmdArgs.push_back(A->getValue(Args));