autotools transition report: autotools+dejagnu vs phil in a steel cage match

Phil Edwards
Fri Jul 25 08:31:00 GMT 2003

There's an interesting side idea here, at the end...

On Fri, Jul 25, 2003 at 09:39:50AM +0200, Gabriel Dos Reis wrote:
> Phil Edwards <> writes:
> | anywhere because We Don't Build For The Target, We Build For The Host.
> I should have put a note on that in the doc long time ago -- at the time, I
> didn't feel that it was needed (I assumed I was the only who didn't know).
> It would have saved you some nighmarre.  The terminologies are
> "shifted" when it comes to libraries coming with the built compiler.  

Oh, we've known that for a long time.  The existing comment in
describing the shift was put there by me.

Where we've not been very careful, historically, has been using the word
"target" to describe the platform in question.  All through our code,
comments and variables refer to the qualities of the "target" machine... and
it's true, because in the larger sense, it is the target machine after all.
It's a confusing situation, but not an insurmountable one, and we just
need to be on our guard against it.

I was confused for a long time until I tried to fix some minor bug in the
core compiler configury, and got it wrong because I was used to thinking
in terms of target libraries.  :-)  Jeff Law sent me an email that somehow
made everything quite quite clear all at once.  I think that email was
lost in the disk crash of '99, else I'd share it.  I still get confused
occasionally, but thanks to that email and an excellent explanation from
Alexandre Oliva at the Ottawa summit, it's not as bad as it used to be.

(Now, if you had known about the AC_CANONICAL_* names and their silent
effect on automake, /that/ would have saved me the nightmare. :-) )

To try and prevent $target variables from sneaking back into the configury,
I'd been playing with a new autoconf feature, akin to "#pragma GCC poison".
Unfortunately, we need to refer to $target_alias in (exactly) one place
inside the configury, which means we can't use the poison.

Possibly we can come up with alternative approaches, to prevent innocent
mistakes.  The configury-poisoning trick works on identifiers that we'd
like to prohibit completely.  For names that we'd like to restrict to
only certain uses (e.g., "this one line and noplace else"), I'd be very
interested in hearing any ideas that people have.


If ye love wealth greater than liberty, the tranquility of servitude greater
than the animating contest for freedom, go home and leave us in peace.  We seek
not your counsel, nor your arms.  Crouch down and lick the hand that feeds you;
and may posterity forget that ye were our countrymen.            - Samuel Adams

More information about the Libstdc++ mailing list