Partial autoconf transition thoughts

Daniel Jacobowitz
2003-06-09T22:02:55Z

[Sorry for the cross posting; I'm waiting for Zack et al. to figure out
where the new list should be.]

I spent some time today reviewing the --host/--build issues. Fortunately,
target isn't relevant to autoconf's choices at this stage.

Consider the options:

Build Host
1 - -
2 - A
3 A -
4 A A
5 A B

With plain target ("nonopt"), configure will act as if any unspecified
options had been given on the command line with the plain target as a value.

1. Native build
2.13: Native-build a compiler to run on the local system; test
$CC for cross mode.
2.57: Native-build a compiler to run on the local system
2. Specify only host
2.13: Assume that $build is $host; test $CC for cross mode.
2.57: Same, but considered "deprecated", according to the manual.
However, based on generated configure, build will be guessed,
and cross compilation will be tested by running a program.
3. Specify only build
2.13: Host will be guessed; test $CC for cross mode.
2.57: Host will default to $build, will build natively.
4. Specify the same thing for both
2.13: Both will be overridden; test $CC for cross mode.
2.57: Both will be overridden, will build natively.
5. Specify both different.
2.13: Both will be overridden, test $CC for cross mode.
2.57: Both will be overridden, will enter cross mode.

So I guess I don't see what the problem is with doing one directory at a
time. If you want to build a compiler that runs on the build machine, then
we can always pass $build and $host to subdirectories with the same value;
if you want to build a compiler that runs on another machine, require the
user to specify --build and --host differently and always pass those to
subdirectories, and as long as $CC is a cross compiler both autoconfs will
do the right thing. There are existence proofs that this (mostly!) works -
readline has been using autoconf 2.57 since its last import. The readline
configure has issues cross compiling though, so don't treat it as an
example.

Could someone who thinks this won't work please speak up, before I waste a
lot of time?

As a proof of concept, I took gas/, and did a trivial convertion (with a
little help from Klee's patches:
http://sources.redhat.com/ml/sid/2003-q1/msg00003.html
but not using some of the tricky bits). The results were fine. I tested a
native build on i386-linux and a --build=i686-pc-linux-gnu
--host=mipsel-hardhat-linux-gnu build, because that's what I had handy.
What other cases are tricky and meaningful?

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer