cyndyishida wrote:

> > However, notably, even on Darwin, if you pass _both_ flags, you still get 
> > the intended behavior of `-isysroot` affecting headers, and `--sysroot` 
> > affecting libraries. Your change would break that.
> 
> What's the use-case for this?
> 
> Because for most users, you almost certainly don't want to mix headers and 
> libraries of different versions, and keeping the existing behavior is 
> essentially a big footgun when trying to build a useful toolchain on Darwin.
> 
> At Homebrew, we used to configure the toolchain with `DEFAULT_SYSROOT` but 
> have recently switched that to setting the `--sysroot` flag in a Clang `.cfg` 
> file.[1](#user-content-fn-1-21a5728b47e790352033de78c44bc2e4) In either case, 
> if you set `SDKROOT` in your environment or try to run our `clang` using 
> Apple's `xcrun`, this becomes equivalent to setting `-isysroot` and you most 
> likely will end up with headers that mismatch the libraries you try to link 
> to.

The expected flow on Apple platforms is to only pass an `isysroot` argument 
whether it's inherited from `xcrun -sdk <sdk version> clang` or passed 
explicitly. Could homebrew instead only pass `isysroot` for Darwin targets? Or 
check that `sysroot` and `isysroot` inputs are the same when creating an 
invocation.  It's unclear to me how homebrew gets into a situation where there 
are conflicting sdks passed for `sysroot` and `isysroot` when you effectively 
want to ignore whatever is passed to `sysroot`.


https://github.com/llvm/llvm-project/pull/115993
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to