From dce2245ba49fad419e551b0143f41431ec8e7f03 Mon Sep 17 00:00:00 2001 From: Prabhuk Date: Sat, 21 Dec 2024 17:44:45 -0800 Subject: [PATCH] [clang][driver] Cleanup UEFI toolchain driver (#111473) Updating UEFI header includes to not include system include directories, adding includes from compiler resource directory and minor cleanups. --- clang/lib/Basic/Targets/X86.h | 5 ----- clang/lib/Driver/ToolChains/UEFI.cpp | 18 ++++++++++++++++++ clang/lib/Driver/ToolChains/UEFI.h | 4 ++++ clang/lib/Lex/InitHeaderSearch.cpp | 1 + 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h index 3ed36c8fa724b..553c452d4ba3c 100644 --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -832,11 +832,6 @@ class LLVM_LIBRARY_VISIBILITY UEFIX86_64TargetInfo "i64:64-i128:128-f80:128-n8:16:32:64-S128"); } - void getTargetDefines(const LangOptions &Opts, - MacroBuilder &Builder) const override { - getOSDefines(Opts, X86TargetInfo::getTriple(), Builder); - } - BuiltinVaListKind getBuiltinVaListKind() const override { return TargetInfo::CharPtrBuiltinVaList; } diff --git a/clang/lib/Driver/ToolChains/UEFI.cpp b/clang/lib/Driver/ToolChains/UEFI.cpp index 66cbbec59246c..a9d7e7892c5a6 100644 --- a/clang/lib/Driver/ToolChains/UEFI.cpp +++ b/clang/lib/Driver/ToolChains/UEFI.cpp @@ -35,6 +35,24 @@ UEFI::UEFI(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) Tool *UEFI::buildLinker() const { return new tools::uefi::Linker(*this); } +void UEFI::AddClangSystemIncludeArgs(const ArgList &DriverArgs, + ArgStringList &CC1Args) const { + if (DriverArgs.hasArg(options::OPT_nostdinc)) + return; + + if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { + SmallString<128> Dir(getDriver().ResourceDir); + llvm::sys::path::append(Dir, "include"); + addSystemInclude(DriverArgs, CC1Args, Dir.str()); + } + + if (DriverArgs.hasArg(options::OPT_nostdlibinc)) + return; + + if (std::optional Path = getStdlibIncludePath()) + addSystemInclude(DriverArgs, CC1Args, *Path); +} + void tools::uefi::Linker::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, diff --git a/clang/lib/Driver/ToolChains/UEFI.h b/clang/lib/Driver/ToolChains/UEFI.h index a126ac32db6c6..7e038b5cb8b18 100644 --- a/clang/lib/Driver/ToolChains/UEFI.h +++ b/clang/lib/Driver/ToolChains/UEFI.h @@ -51,6 +51,10 @@ class LLVM_LIBRARY_VISIBILITY UEFI : public ToolChain { return false; } bool isPICDefaultForced() const override { return true; } + + void + AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override; }; } // namespace toolchains diff --git a/clang/lib/Lex/InitHeaderSearch.cpp b/clang/lib/Lex/InitHeaderSearch.cpp index ea02f5dfb6264..67c9d92b849ea 100644 --- a/clang/lib/Lex/InitHeaderSearch.cpp +++ b/clang/lib/Lex/InitHeaderSearch.cpp @@ -301,6 +301,7 @@ bool InitHeaderSearch::ShouldAddDefaultIncludePaths( case llvm::Triple::PS5: case llvm::Triple::RTEMS: case llvm::Triple::Solaris: + case llvm::Triple::UEFI: case llvm::Triple::WASI: case llvm::Triple::ZOS: return false;