On 03/07/15 14:45, Martin Lucina wrote:
On Friday, 03.07.2015 at 11:10, Antti Kantee wrote:
On 03/07/15 10:01, Martin Lucina wrote:
Given that configure will just work out CC et al correctly now, do you mind
if I remove the -configure, -make and -gmake wrappers?
-configure, sure, but we can't assume that everything on the planet
uses gnu autoconf, and therefore the case for -{g,}make remains.
I guess so, altough -{g,}make sort of send the message "you should always
use that instead of just make" which is not correct. Anyhow, let's see, if
it confuses people we can remove it later.
Why is it not correct?
Because the -{g,}make wrapper takes a wild guess and assumes that setting
CC= and CXX= is sufficient for a Makefile-based build to work.
It'll only work for Makefiles that honour CC and CXX. I've seen people
hardcode "gcc" in rules.
Software that hardcodes "gcc" is not cross-compilable no matter what
kind of wrappers we don't provide. We can't use "won't work with
incompatible software so let's not do it" as a design guideline. If the
problem with that software would be solved by not having a make wrapper,
I'd count it as an argument.
What about AS? CPP? Again, what if they're hardcoded?
They should (obviously) be added as well. Again, incompatible software.
It'll be actively harmful if you run it on a Makefile that was previously
(correctly) generated with ./configure --host=, you're using libtool and
your compilers don't match up. (BTDT, you get the obscure "libtool cannot
somethingorother-with-tags error)
What does "compilers don't match up" mean? You're building with a
different compiler than what you configured with? That's like saying rm
shouldn't exist because using it the wrong way causes unexpected results.
Does the build actually fail if you use the correct make wrapper? It
sounds extremely weird if it does, because then just having "export
CC=..." would also cause broken builds.
So, I think it's a case of "too much magic" with a "not good enough"
result. If whatever you're building is using a handmade Makefile, then you
should probably go read it and figure out what needs to be set explicitly,
which you can do in a "packaging" Makefile that calls the real one.
So when you do read it and see that you do need to set the full
toolchain as environment variables, do you then type all the values in
by hand?
The other option is to provide a snippet that you can source for the
correct values, but I'm not a big fan of anything which leaves things
hanging in the env.