[clang] [clang][Darwin] Remove legacy framework search path logic in the frontend (PR #120149)
Louis Dionne via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 19 09:31:23 PST 2024
================
@@ -2539,6 +2550,18 @@ void DarwinClang::AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs
llvm::sys::path::append(P, "usr", "include");
addExternCSystemInclude(DriverArgs, CC1Args, P.str());
}
+
+ // Add default framework search paths
+ auto addFrameworkInclude = [&](auto ...Path) {
+ SmallString<128> P(Sysroot);
+ llvm::sys::path::append(P, Path...);
+
+ CC1Args.push_back("-internal-iframework");
+ CC1Args.push_back(DriverArgs.MakeArgString(P));
+ };
+ addFrameworkInclude("System", "Library", "Frameworks");
----------------
ldionne wrote:
Do you mean something like this?
```c++
addFrameworkInclude(DriverArgs, CC1Args, P);
```
That's possible, in fact I started with that. However, I will have to do this:
```c++
auto addFrameworkInclude = [](const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, SmallString<128> const& P) {
CC1Args.push_back("-internal-iframework");
CC1Args.push_back(DriverArgs.MakeArgString(P));
};
{
SmallString<128> P(Sysroot);
llvm::sys::path::append(P, "System", "Library", "Frameworks");
addFrameworkInclude(DriverArgs, CC1Args, P);
}
{
SmallString<128> P(Sysroot);
llvm::sys::path::append(P, "System", "Library", "SubFrameworks");
addFrameworkInclude(DriverArgs, CC1Args, P);
}
{
SmallString<128> P(Sysroot);
llvm::sys::path::append(P, "Library", "Frameworks");
addFrameworkInclude(DriverArgs, CC1Args, P);
}
```
Minor variations on this may be possible, but I thought that was less readable. If you have a preference for this (perhaps motivated for future refactoring potential), I'm fine with going for that, just let me know.
https://github.com/llvm/llvm-project/pull/120149
More information about the cfe-commits
mailing list