From: NightStrike <nig...@gm...> - 2011-06-22 16:39:09
|
On Sun, Jun 12, 2011 at 6:01 PM, Keith Marshall <kei...@us...> wrote: > On 08/06/11 15:38, Charles Wilson wrote: >> On 6/7/2011 9:27 PM, NightStrike wrote: >>> On 6/7/11, Charles Wilson <...> wrote: >>>> * The path "\mingw\include" on the current drive is always searched for >>>> header files, regardless of where the compiler is installed. So, if >>>> you want to keep multiple installations separated, better not to use >>>> "\mingw" on any drive. >>>> >>>> (Ed: this is this big deal. Also, similar issues I believe with gcc >>>> always searching \mingw\lib for -lfoo.) >>> >>> That's because you don't use sysroots, and the t-mingw32 config file >>> is hard wired to rename the default /usr/local to /mingw. >> >> Ah, so that's what you meant: you *have* to use sys-root to avoid the >> problem. I'm not sure that's the best solution...I'm not sure why, but >> /something/ about that bothers me. It seems like taking a feature >> developed and intended for cross-compilers, and using it with a native >> compiler to take advantage of a side effect, is kinda kludgy. > > It bothers me too. It isn't just kludgy; I distinctly recollect > Danny Smith telling us, when NightStrike suggested this before, that > it is dead wrong. Why? > The build documentation for GCC tells us that --with-sysroot is an > option for use exclusively when building a cross-compiler. When this > was previously pointed out to NightStrike, I also recollect that he > suggested that perhaps the documentation could be changed. However, the > GCC maintainers have NOT changed the documentation, so I guess it is > still wrong to build a native compiler with sysroots. The build docs have the sysroot options in the cross compiler section. The options themselves, however, were designed outside that scope. The fact that you can ONLY build a relocatable toolchain by using a sysroot regardless of the target system exemplifies that. I guess in a way what they do is just really extend the term "cross compiler" to be "any compiler that doesn't use /usr/local libs/headers". And, really, this may be a valid interpretation. At any rate, the docs didn't change because no one mentioned it to anyone who can change the docs, not for any other reason. That doesn't change the fact that there is a single prescribed way to have a relocatable toolchain that doesn't rely on any hard coded paths -- use sysroots <= prefix. > I definitely do not think we should emulate this dodgy practice. Good. It makes us look better* :) :) * according to our users... |