>>>>> "Alexandre" == Alexandre Oliva <[EMAIL PROTECTED]> writes:

Alexandre> GCC and Sourceware src (== Cygnus)'s top-level configure
Alexandre> always passes --build, --host and --target down to
Alexandre> sub-directories.  Therefore, we must not assume that, just
Alexandre> because --host is given, we're cross compiling.

I'm sorry, but I disagree.  The only sane and simple definition of
cross-compilation is when --host is specified.

If you have --host == --build, you are *declaring* that, even though
it doesn't look like a cross compilation, you want configure to think
it is.  If you go to comparing build and host, then you lose this
control.  This is wrong.  For instance you might be willing to use
--host = --build just to check how your configure behaves in a
(comfortable) cross-compilation situation.

>From a physicist point of view, --host is necessarily *the* right
solution: it is extremely simple, and explains everything.  If you go
into complications, you're missing something.  Yet host != build *is*
complication as opposed to --host.


Alexandre> Comparing build with host and deciding for cross
Alexandre> compilation if they differ might be reasonable, but it
Alexandre> still breaks backward compatibility, and some Cygnus folks
Alexandre> have complained about having to modify lots of scripts to
Alexandre> accomodate this change.

Well, so it is us, the Autoconf folks, who have to modify ours?  Why
don't they move the whole tree to 2.50?  Isn't autoreconf good enough?
Then let's fix it, let's have it work for them.

I'm not saying I will never change my mind, but currently I don't see
enough good reasons to break something which was accepted
*unanimously*.

The situation we're coming from is incredibly messy, and there were
numerous complaints about it.  We finally fixed these issues.

Yes, I said `fixed', not `changed', because if you step back, and
think about it, what we did is just what should have always been.  Now
you're asking for bugward compatibility :(.


Alexandre> After much thought, I've come up with the following
Alexandre> proposal:

Alexandre> If only one of --build, --host and TRIPLET is specified,
Alexandre> use it for host and build, and assume not cross-compiling.

Alexandre> If at least two of --build, --host and TRIPLET are
Alexandre> specified, assume cross compilation if they differ.
Alexandre> TRIPLET would be used as the default for either --host or
Alexandre> --build, whichever was not specified.

Alexandre> TRIPLET, if specified, would also be used as the default
Alexandre> for target, unless --target is specified.  If all of
Alexandre> --build, --host, --target and TRIPLET are specified, issue
Alexandre> an error (warning?) message indicating that TRIPLET is
Alexandre> useless.

Really, I find this very messy.  Messy to implement, to document, and
to understand.  How can you reasonably understand what is going to
happen?  When will you know that what-is-typed-is-what-you-meant?

This solution is about as atrocious as the old one was.

I'm ready to help the Cygnus guys to update their scripts.

I'm ready to improve autoreconf.

I'm ready to introduce --with-cygnus-semantics or some magic to help
Cygnus guys.

I'm ready to import cross_compiling from the environment, so that you
just have to export it from Configure.

In fact I'm OK to implement a *simple* workaround which will help them
in the transition to the newer semantics.

But I am not ready to destroy all this good work.  We made the right
choices.  I'm aware it means we're no longer backward compatible, but
in this area, it is worth not being.  It was broken.  Let's not break
it again.

Simplicity is the keyword.

        Akim

PS/  IIUC, it's been a while the Cygnus guys were talking about this
issue in Autoconf.  I would have appreciated that the Autoconf people
were involved too.

This is not a criticism again you Alexandre, and in fact, I'm pretty
sure you defended the current implementation as much as you could, but
finally you had to step back.

It is a criticism on the principle.  I have no contract with Cygnus,
and I would like better to be involved in the debates to be really
convinced there is no other solution than to break Autoconf.

Currently, I am not convinced.

What are all these scripts?  What makes it so difficult to adjust them?

Reply via email to