clang 20.0.0git
|
See also MultilibSetBuilder for combining multilibs into a set. More...
#include "clang/Driver/Multilib.h"
Classes | |
struct | FlagMatcher |
Uses regular expressions to simplify flags used for multilib selection. More... | |
Public Types | |
using | multilib_list = std::vector< Multilib > |
using | const_iterator = multilib_list::const_iterator |
using | IncludeDirsFunc = std::function< std::vector< std::string >(const Multilib &M)> |
using | FilterCallback = llvm::function_ref< bool(const Multilib &)> |
Public Member Functions | |
MultilibSet ()=default | |
MultilibSet (multilib_list &&Multilibs, SmallVector< FlagMatcher > &&FlagMatchers={}, SmallVector< custom_flag::Declaration > &&CustomFlagDecls={}) | |
const multilib_list & | getMultilibs () |
MultilibSet & | FilterOut (FilterCallback F) |
Filter out some subset of the Multilibs using a user defined callback. | |
void | push_back (const Multilib &M) |
Add a completed Multilib to the set. | |
const_iterator | begin () const |
const_iterator | end () const |
std::pair< Multilib::flags_list, SmallVector< StringRef > > | processCustomFlags (const Driver &D, const Multilib::flags_list &Flags) const |
Process custom flags from Flags and returns an expanded flags list and a list of macro defines. | |
bool | select (const Driver &D, const Multilib::flags_list &Flags, llvm::SmallVectorImpl< Multilib > &, llvm::SmallVector< StringRef > *=nullptr) const |
Select compatible variants,. | |
unsigned | size () const |
llvm::StringSet | expandFlags (const Multilib::flags_list &) const |
Get the given flags plus flags found by matching them against the FlagMatchers and choosing the Flags of each accordingly. | |
LLVM_DUMP_METHOD void | dump () const |
void | print (raw_ostream &OS) const |
MultilibSet & | setIncludeDirsCallback (IncludeDirsFunc F) |
const IncludeDirsFunc & | includeDirsCallback () const |
MultilibSet & | setFilePathsCallback (IncludeDirsFunc F) |
const IncludeDirsFunc & | filePathsCallback () const |
Static Public Member Functions | |
static llvm::ErrorOr< MultilibSet > | parseYaml (llvm::MemoryBufferRef, llvm::SourceMgr::DiagHandlerTy=nullptr, void *DiagHandlerCtxt=nullptr) |
See also MultilibSetBuilder for combining multilibs into a set.
Definition at line 129 of file Multilib.h.
using clang::driver::MultilibSet::const_iterator = multilib_list::const_iterator |
Definition at line 132 of file Multilib.h.
using clang::driver::MultilibSet::FilterCallback = llvm::function_ref<bool(const Multilib &)> |
Definition at line 135 of file Multilib.h.
using clang::driver::MultilibSet::IncludeDirsFunc = std::function<std::vector<std::string>(const Multilib &M)> |
Definition at line 133 of file Multilib.h.
using clang::driver::MultilibSet::multilib_list = std::vector<Multilib> |
Definition at line 131 of file Multilib.h.
|
default |
Referenced by parseYaml().
|
inline |
Definition at line 154 of file Multilib.h.
|
inline |
Definition at line 168 of file Multilib.h.
LLVM_DUMP_METHOD void MultilibSet::dump | ( | ) | const |
Definition at line 513 of file Multilib.cpp.
References print().
|
inline |
Definition at line 169 of file Multilib.h.
llvm::StringSet MultilibSet::expandFlags | ( | const Multilib::flags_list & | InFlags | ) | const |
Get the given flags plus flags found by matching them against the FlagMatchers and choosing the Flags of each accordingly.
The select method calls this method so in most cases it's not necessary to call it directly.
Definition at line 274 of file Multilib.cpp.
References clang::Result.
Referenced by clang::driver::Driver::HandleImmediateArgs(), and select().
|
inline |
Definition at line 206 of file Multilib.h.
Referenced by clang::driver::toolchains::Generic_GCC::AddMultilibPaths(), addMultilibsFilePaths(), and clang::driver::toolchains::Fuchsia::Fuchsia().
MultilibSet & MultilibSet::FilterOut | ( | FilterCallback | F | ) |
Filter out some subset of the Multilibs using a user defined callback.
Definition at line 88 of file Multilib.cpp.
Referenced by findAndroidArmMultilibs(), findCSKYMultilibs(), findMipsAndroidMultilibs(), findMipsCsMultilibs(), findMipsImgMultilibs(), findMipsMtiMultilibs(), findRISCVBareMetalMultilibs(), and clang::driver::toolchains::Fuchsia::Fuchsia().
|
inline |
Definition at line 160 of file Multilib.h.
|
inline |
Definition at line 199 of file Multilib.h.
Referenced by clang::driver::toolchains::MipsLLVMToolChain::AddClangSystemIncludeArgs(), clang::driver::toolchains::Solaris::AddClangSystemIncludeArgs(), clang::driver::toolchains::MipsLLVMToolChain::addLibCxxIncludePaths(), and clang::driver::toolchains::Generic_GCC::AddMultilibIncludeArgs().
|
static |
Definition at line 483 of file Multilib.cpp.
References MultilibSet().
Referenced by findMultilibsFromYAML().
void MultilibSet::print | ( | raw_ostream & | OS | ) | const |
Definition at line 517 of file Multilib.cpp.
Referenced by dump(), and clang::driver::operator<<().
std::pair< Multilib::flags_list, SmallVector< StringRef > > MultilibSet::processCustomFlags | ( | const Driver & | D, |
const Multilib::flags_list & | Flags | ||
) | const |
Process custom flags from Flags
and returns an expanded flags list and a list of macro defines.
Returns a pair where:
Definition at line 153 of file Multilib.cpp.
References D, DiagnoseUnclaimedMultilibCustomFlags(), clang::driver::custom_flag::ValueDetail::MacroDefines, clang::driver::custom_flag::ValueDetail::Name, clang::driver::custom_flag::Prefix, clang::Result, and size().
Referenced by select().
void MultilibSet::push_back | ( | const Multilib & | M | ) |
Add a completed Multilib to the set.
Definition at line 93 of file Multilib.cpp.
Referenced by findOHOSMuslMultilibs(), and clang::driver::toolchains::Fuchsia::Fuchsia().
bool MultilibSet::select | ( | const Driver & | D, |
const Multilib::flags_list & | Flags, | ||
llvm::SmallVectorImpl< Multilib > & | Selected, | ||
llvm::SmallVector< StringRef > * | CustomFlagMacroDefines = nullptr |
||
) | const |
Select compatible variants,.
Definition at line 218 of file Multilib.cpp.
References D, expandFlags(), and processCustomFlags().
Referenced by findAndroidArmMultilibs(), findCSKYMultilibs(), findMipsAndroidMultilibs(), findMipsMuslMultilibs(), findOHOSMuslMultilibs(), findRISCVMultilibs(), clang::driver::toolchains::Fuchsia::Fuchsia(), and selectRISCVMultilib().
|
inline |
Definition at line 201 of file Multilib.h.
Referenced by findRISCVBareMetalMultilibs(), and clang::driver::toolchains::Fuchsia::Fuchsia().
|
inline |
Definition at line 194 of file Multilib.h.
Referenced by findMipsCsMultilibs(), findMipsImgMultilibs(), findMipsMtiMultilibs(), and findMipsMuslMultilibs().
|
inline |
Definition at line 184 of file Multilib.h.
Referenced by findMipsCsMultilibs(), and processCustomFlags().