================ @@ -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