10#include "clang/Config/config.h"
14#include "llvm/Support/Path.h"
15#include "llvm/Support/VirtualFileSystem.h"
41 if (StringRef(D.Dir).starts_with(SysRoot))
42 addPathIfExists(D, D.Dir +
"/../lib", Paths);
44 addPathIfExists(D, SysRoot +
"/lib", Paths);
45 addPathIfExists(D, SysRoot +
"/usr/lib", Paths);
46 addPathIfExists(D, SysRoot +
"/usr/lib/w32api", Paths);
50 if (
getArch() == llvm::Triple::x86_64 ||
getArch() == llvm::Triple::aarch64 ||
51 getArch() == llvm::Triple::arm ||
getArch() == llvm::Triple::thumb)
52 return llvm::ExceptionHandling::WinEH;
53 return llvm::ExceptionHandling::DwarfCFI;
57 ArgStringList &CC1Args)
const {
61 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
64 if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
67 if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
69 llvm::sys::path::append(P,
"include");
73 if (DriverArgs.hasArg(options::OPT_nostdlibinc))
77 StringRef CIncludeDirs(C_INCLUDE_DIRS);
78 if (CIncludeDirs !=
"") {
80 CIncludeDirs.split(Dirs,
":");
81 for (StringRef Dir : Dirs) {
83 llvm::sys::path::is_absolute(Dir) ?
"" : StringRef(SysRoot);
96 std::string MultiarchIncludeDir =
getTriple().str();
97 if (!MultiarchIncludeDir.empty() &&
98 D.getVFS().exists(SysRoot +
"/usr/include/" + MultiarchIncludeDir))
100 SysRoot +
"/usr/include/" + MultiarchIncludeDir);
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
The JSON file list parser is used to communicate input to InstallAPI.