aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Paulo <rpaulo@FreeBSD.org>2010-08-21 15:46:33 +0000
committerRui Paulo <rpaulo@FreeBSD.org>2010-08-21 15:46:33 +0000
commit2aedda247be1141625c91bb67bc39b759cfe6c6f (patch)
treebc78e170af6efa67e3a43a704e4fa05f39f60844
parentad8a0e422ce574dae5276cdbe9baef6e30f0f12c (diff)
downloadsrc-2aedda247be1141625c91bb67bc39b759cfe6c6f.tar.gz
src-2aedda247be1141625c91bb67bc39b759cfe6c6f.zip
Modify clang so that when TOOLS_PREFIX is defined we register the
CLANG_PREFIX macro. This changes the default header search path when we are building clang as part of cross-tools. Submitted by: Dimitry Andric <dimitry at andric.com> Reviewed by: freebsd-current
Notes
Notes: svn path=/head/; revision=211573
-rw-r--r--contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp10
-rw-r--r--contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp23
-rw-r--r--lib/clang/clang.build.mk4
3 files changed, 25 insertions, 12 deletions
diff --git a/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp b/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
index a78d1536fa1e..350659016200 100644
--- a/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
+++ b/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
@@ -26,6 +26,10 @@
#include <cstdlib> // ::getenv
+#ifndef CLANG_PREFIX
+#define CLANG_PREFIX
+#endif
+
using namespace clang::driver;
using namespace clang::driver::toolchains;
@@ -869,11 +873,9 @@ FreeBSD::FreeBSD(const HostInfo &Host, const llvm::Triple& Triple, bool Lib32)
getProgramPaths().push_back(getDriver().Dir + "/../libexec");
getProgramPaths().push_back("/usr/libexec");
if (Lib32) {
- getFilePaths().push_back(getDriver().Dir + "/../lib32");
- getFilePaths().push_back("/usr/lib32");
+ getFilePaths().push_back(CLANG_PREFIX "/usr/lib32");
} else {
- getFilePaths().push_back(getDriver().Dir + "/../lib");
- getFilePaths().push_back("/usr/lib");
+ getFilePaths().push_back(CLANG_PREFIX "/usr/lib");
}
}
diff --git a/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp b/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
index fcfee71266b3..91871484fdee 100644
--- a/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
+++ b/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
@@ -30,6 +30,9 @@
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#endif
+#ifndef CLANG_PREFIX
+#define CLANG_PREFIX
+#endif
using namespace clang;
using namespace clang::frontend;
@@ -408,9 +411,10 @@ static bool getWindowsSDKDir(std::string &path) {
void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
const HeaderSearchOptions &HSOpts) {
-#if 0 /* Remove unneeded include paths. */
// FIXME: temporary hack: hard-coded paths.
- AddPath("/usr/local/include", System, true, false, false);
+#ifndef __FreeBSD__
+ AddPath(CLANG_PREFIX "/usr/local/include", System, true, false, false);
+#endif
// Builtin includes use #include_next directives and should be positioned
// just prior C include dirs.
@@ -421,7 +425,6 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
P.appendComponent("include");
AddPath(P.str(), System, false, false, false, /*IgnoreSysRoot=*/ true);
}
-#endif
// Add dirs specified via 'configure --with-c-include-dirs'.
llvm::StringRef CIncludeDirs(C_INCLUDE_DIRS);
@@ -518,13 +521,15 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
case llvm::Triple::MinGW32:
AddPath("c:/mingw/include", System, true, false, false);
break;
+ case llvm::Triple::FreeBSD:
+ AddPath(CLANG_PREFIX "/usr/include/clang/" CLANG_VERSION_STRING,
+ System, false, false, false);
+ break;
default:
break;
}
- AddPath("/usr/include/clang/" CLANG_VERSION_STRING,
- System, false, false, false);
- AddPath("/usr/include", System, false, false, false);
+ AddPath(CLANG_PREFIX "/usr/include", System, false, false, false);
}
void InitHeaderSearch::
@@ -726,8 +731,10 @@ AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple) {
case llvm::Triple::FreeBSD:
// FreeBSD 8.0
// FreeBSD 7.3
- AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple);
- AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2/backward", "", "", "", triple);
+ AddGnuCPlusPlusIncludePaths(CLANG_PREFIX "/usr/include/c++/4.2",
+ "", "", "", triple);
+ AddGnuCPlusPlusIncludePaths(CLANG_PREFIX "/usr/include/c++/4.2/backward",
+ "", "", "", triple);
break;
case llvm::Triple::Minix:
AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3",
diff --git a/lib/clang/clang.build.mk b/lib/clang/clang.build.mk
index 6351edae213c..86384dbf6ade 100644
--- a/lib/clang/clang.build.mk
+++ b/lib/clang/clang.build.mk
@@ -28,6 +28,10 @@ LLVM_REQUIRES_RTTI=
CFLAGS+=-fno-rtti
.endif
+.ifdef TOOLS_PREFIX
+CFLAGS+=-DCLANG_PREFIX=\"${TOOLS_PREFIX}\"
+.endif
+
.PATH: ${LLVM_SRCS}/${SRCDIR}
TBLGEN=tblgen ${CFLAGS:M-I*}