https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87030

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-09-21
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=87243
     Ever confirmed|0                           |1

--- Comment #13 from Iain Sandoe <iains at gcc dot gnu.org> ---
(In reply to Jeremy Huddleston Sequoia from comment #12)
> (In reply to Francois-Xavier Coudert from comment #11)
> > (In reply to Jeremy Huddleston Sequoia from comment #10)
> > > Given those, gcc only builds if we have the DevSDK ("headers at /" 
> > > package)
> > > installed.
> > 
> > I may be misunderstanding what you say: GCC builds and runs fine without the
> > headers in /usr/include. At Homebrew, we are not recommending users to
> > install the /usr/include headers package, and we build and run GCC fine. The
> > configuration is the following
> > (https://github.com/Homebrew/homebrew-core/blob/master/Formula/gcc.rb):
> > 
> >   --with-native-system-header-dir=/usr/include
> >   --with-sysroot=/path/to/sdk
> >
> > if the system headers are in /path/to/sdk/usr/include. Thus, on a Mojave
> > installation with Xcode CLT installed, we set /path/to/sdk to
> > /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
> 
> Yeah, I documented the workaround of using --with-sysroot in the MacPorts
> port when filing these bugs and passed on to Homebrew, but that ends up
> causing gcc's search path to always look in that sysroot (ie, it becomes the
> default sysroot).  Thus, users will build executables that behave
> differently based on where there SDK was located on their build system. 
> That is certainly not what is desired.  If you have a build fleet that used
> an SDK that was located at /Volumes/SDKs/AllMacSDKs/MacOSX10.14.sdk at build
> time, but your users have
> /Applications/MyXcodesPath/Xcode-10.app/.../MacOSX.sdk, then that mismatch
> can cause problems.
> 
> The point of --with-sysroot is to change the behavior of the built product
> (the final gcc executable).

Right - this is pretty much the comment I made in 87243; --with-sysroot= sets
the default, which might not be the one implied by an xcode-select executed
later.

Of course, one *can* pass --sysroot=`xcrun blah blah` on any command line (for
the built compiler) as a work-around.

I was trying to work on a scheme where the possible SDK search paths were
provided by symlinks [in the user's home dir], with some configure-time
specified search order (including the option to search /).  Initial population
of the symlinks might be time-significant - but subsequent following should be
less than a process switch.  There was some email exchange on this between me,
Eric and Mike .. I will try to find it in my archives.

IMO we really don't want to go down the road where we launch another executable
for every sub-process invocation on the toolchain that needs to know the SDK
path!

>  The point of --with-build-sysroot is to change
> how we build gcc.

Indeed --with-build-sysroot has some nasties - I did some work on it for darwin
when trying to get to a situation where we can configure for
"x86_64-apple-darwin" without that implying 10.0 ;)

Need to fish that out too.

Reply via email to