diff options
author | 2021-04-22 11:51:24 +0200 | |
---|---|---|
committer | 2022-09-20 08:30:21 +0200 | |
commit | b64154059ee61e98e5801f9d4fcf5e6ce9337adc (patch) | |
tree | 1b39127be033c209ec4664e2dd96c92558df2f20 | |
parent | [llvm] [llvm-config] Clean up exported values (diff) | |
download | llvm-project-b64154059ee61e98e5801f9d4fcf5e6ce9337adc.tar.gz llvm-project-b64154059ee61e98e5801f9d4fcf5e6ce9337adc.tar.bz2 llvm-project-b64154059ee61e98e5801f9d4fcf5e6ce9337adc.zip |
[clang] Apply Gentoo's prefix-dirs.patch
This mirrors cmake-*-prefix-dirs.patch
It add EPREFIX to search paths for c/cxx headers.
It also adds EPREFIX/MacOSX.sdk to search paths for c and Frameworks.
Assumes that c++ lib and headers will be installed in the prefix.
Also, a couple of args are populated by inspecting the SDK,
so, default to EPREFIX/MacOSX.sdk when the sysroot is not specified.
(This does NOT set sysroot).
Gentoo-Component: clang
-rw-r--r-- | clang/lib/Driver/ToolChains/Darwin.cpp | 12 | ||||
-rw-r--r-- | clang/lib/Lex/InitHeaderSearch.cpp | 3 |
2 files changed, 13 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index bada811daadf..f8e8204015ed 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -2038,9 +2038,11 @@ Optional<DarwinSDKInfo> parseSDKSettings(llvm::vfs::FileSystem &VFS, const ArgList &Args, const Driver &TheDriver) { const Arg *A = Args.getLastArg(options::OPT_isysroot); +#if 0 if (!A) return None; - StringRef isysroot = A->getValue(); +#endif + StringRef isysroot = A ? A->getValue() : "@GENTOO_PORTAGE_EPREFIX@/MacOSX.sdk"; auto SDKInfoOrErr = parseDarwinSDKInfo(VFS, isysroot); if (!SDKInfoOrErr) { llvm::consumeError(SDKInfoOrErr.takeError()); @@ -2264,13 +2266,14 @@ llvm::StringRef DarwinClang::GetHeaderSysroot(const llvm::opt::ArgList &DriverAr return DriverArgs.getLastArgValue(options::OPT_isysroot); if (!getDriver().SysRoot.empty()) return getDriver().SysRoot; - return "/"; + return "@GENTOO_PORTAGE_EPREFIX@/"; } void DarwinClang::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const { const Driver &D = getDriver(); + // Sysroot is effectively Gentoo EPREFIX when -isysroot/-sysroot is not defined llvm::StringRef Sysroot = GetHeaderSysroot(DriverArgs); bool NoStdInc = DriverArgs.hasArg(options::OPT_nostdinc); @@ -2312,6 +2315,10 @@ void DarwinClang::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs SmallString<128> P(Sysroot); llvm::sys::path::append(P, "usr", "include"); addExternCSystemInclude(DriverArgs, CC1Args, P.str()); + // And add <sysroot>/MacOSX.sdk/usr/include. + SmallString<128> Psdk(Sysroot); + llvm::sys::path::append(Psdk, "MacOSX.sdk", "usr", "include"); + addExternCSystemInclude(DriverArgs, CC1Args, Psdk.str()); } } @@ -2360,6 +2367,7 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs( DriverArgs.hasArg(options::OPT_nostdincxx)) return; + // Sysroot is effectively Gentoo EPREFIX when -isysroot/-sysroot is not defined llvm::StringRef Sysroot = GetHeaderSysroot(DriverArgs); switch (GetCXXStdlibType(DriverArgs)) { diff --git a/clang/lib/Lex/InitHeaderSearch.cpp b/clang/lib/Lex/InitHeaderSearch.cpp index 158b5667151f..847e5f695ced 100644 --- a/clang/lib/Lex/InitHeaderSearch.cpp +++ b/clang/lib/Lex/InitHeaderSearch.cpp @@ -460,6 +460,9 @@ void InitHeaderSearch::AddDefaultIncludePaths(const LangOptions &Lang, // All header search logic is handled in the Driver for Darwin. if (triple.isOSDarwin()) { if (HSOpts.UseStandardSystemIncludes) { + // Add Gentoo Prefix framework dirs first + AddPath("@GENTOO_PORTAGE_EPREFIX@/MacOSX.sdk/System/Library/Frameworks", System, true); + AddPath("@GENTOO_PORTAGE_EPREFIX@/MacOSX.sdk/Library/Frameworks", System, true); // Add the default framework include paths on Darwin. AddPath("/System/Library/Frameworks", System, true); AddPath("/Library/Frameworks", System, true); |