================
@@ -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
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to