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 // ::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 #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*}