Index: include/clang/Basic/Version.h =================================================================== --- include/clang/Basic/Version.h +++ include/clang/Basic/Version.h @@ -22,21 +22,28 @@ /// \brief Helper macro for CLANG_VERSION_STRING. #define CLANG_MAKE_VERSION_STRING2(X) #X -#ifdef CLANG_VERSION_PATCHLEVEL /// \brief Helper macro for CLANG_VERSION_STRING. -#define CLANG_MAKE_VERSION_STRING(X,Y,Z) CLANG_MAKE_VERSION_STRING2(X.Y.Z) +#define CLANG_MAKE_VERSION_STRING_MAJOR_MINOR_PATCH(X,Y,Z) \ + CLANG_MAKE_VERSION_STRING2(X.Y.Z) -/// \brief A string that describes the Clang version number, e.g., "1.0". -#define CLANG_VERSION_STRING \ - CLANG_MAKE_VERSION_STRING(CLANG_VERSION_MAJOR,CLANG_VERSION_MINOR, \ - CLANG_VERSION_PATCHLEVEL) -#else /// \brief Helper macro for CLANG_VERSION_STRING. -#define CLANG_MAKE_VERSION_STRING(X,Y) CLANG_MAKE_VERSION_STRING2(X.Y) +#define CLANG_MAKE_VERSION_STRING_MAJOR_MINOR(X,Y) \ + CLANG_MAKE_VERSION_STRING2(X.Y) + +/// \brief A string that describes the Clang version number, e.g., "1.0.0". +#define CLANG_VERSION_STRING_MAJOR_MINOR_PATCH \ + CLANG_MAKE_VERSION_STRING_MAJOR_MINOR_PATCH(CLANG_VERSION_MAJOR, \ + CLANG_VERSION_MINOR, \ + CLANG_VERSION_PATCHLEVEL) /// \brief A string that describes the Clang version number, e.g., "1.0". -#define CLANG_VERSION_STRING \ - CLANG_MAKE_VERSION_STRING(CLANG_VERSION_MAJOR,CLANG_VERSION_MINOR) +#define CLANG_VERSION_STRING_MAJOR_MINOR \ + CLANG_MAKE_VERSION_STRING_MAJOR_MINOR(CLANG_VERSION_MAJOR,CLANG_VERSION_MINOR) + +#ifdef CLANG_VERSION_PATCHLEVEL +#define CLANG_VERSION_STRING CLANG_VERSION_STRING_MAJOR_MINOR_PATCH +#else +#define CLANG_VERSION_STRING CLANG_VERSION_STRING_MAJOR_MINOR #endif namespace clang { Index: lib/Frontend/InitHeaderSearch.cpp =================================================================== --- lib/Frontend/InitHeaderSearch.cpp +++ lib/Frontend/InitHeaderSearch.cpp @@ -14,6 +14,7 @@ #include "clang/Frontend/Utils.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/LangOptions.h" +#include "clang/Basic/Version.h" #include "clang/Config/config.h" // C_INCLUDE_DIRS #include "clang/Lex/HeaderSearch.h" #include "clang/Lex/HeaderSearchOptions.h" @@ -242,6 +243,12 @@ // Builtin includes use #include_next directives and should be positioned // just prior C include dirs. if (HSOpts.UseBuiltinIncludes) { + // On FreeBSD the include path is not resource-dir-relative. + if (os == llvm::Triple::FreeBSD) { + AddPath("/usr/include/clang/" CLANG_VERSION_STRING_MAJOR_MINOR, + ExternCSystem, false); + } + // Ignore the sys root, we *always* look for clang headers relative to // supplied path. SmallString<128> P = StringRef(HSOpts.ResourceDir);