Toby Peterson toby at
Wed Sep 16 08:38:50 PDT 2009

On Wed, Sep 16, 2009 at 08:14, Jack Howarth <howarth at> wrote:
> On Wed, Sep 16, 2009 at 04:45:09PM +0200, Anders F Björklund wrote:
>> Passing a --target to configure is reasonable, and different from
>> patching "config.guess" to return something not from uname(1)...
>> (Maybe it changed in Snow Leopard, but it used to detect something
>> like "i386-apple-darwin10.0.1" with a lot of decimals like that ?)
> Anders,
>    However config.guess upstream still needs to adapt to the new
> situation where the default architecture detected in darwin10 via uname -p,
> for EMT64 capable hardware, diverges from that of the architecture of
> the code genererated by the default system compiler.
>> I believe that when you are trying a GNU-style cross-compile
>> by setting --target and friends, you also need to set up the
>> matching compiler symlinks for this newly invented "platform".
>> Normally the system gcc would expect you to use -arch instead ?
> My argument is that the current situation is already effectively
> a cross-compilation when the current config.guess is used on
> EMT64 capable hardware under darwin10. The architecture reported
> by config.guess is i386 so that configure believes it is working
> with and generating code for a 32-bit architecture whereas the
> compiler is silently generating 64-bit code behind configure's
> back. Not good in concept.
>             Jack
> ps From my reading of...
> we actually should be passing --host=x86_64-apple-darwin10 --target=x86_64-apple-darwin10
> to configure...
>> To compile a program to run on a host type that differs from the build type,
>> use the configure option --host=hosttype, where hosttype uses the same syntax as buildtype.
>> The host type normally defaults to the build type.
>> To configure a cross-compiler, cross-assembler, or what have you, you should specify a
>> target different from the host, using the configure option ‘--target=targettype’. The
>> syntax for targettype is the same as for the host type. So the command would look like this:
>>     ./configure --host=hosttype --target=targettype
>> The target type normally defaults to the host type. Programs for which cross-operation is
>> not meaningful need not accept the ‘--target’ option, because configuring an entire operating
>> system for cross-operation is not a meaningful operation.

This goes against everything you've been saying. You're trying to
"fix" the output of config.guess (i.e. --build). Why not just pass the
"correct" --build flag? You'd only need to use --host and --target if
you were cross-compiling, which is not something MacPorts does.

> If you look at fink 10.4 unstable, you will find that combination is commonly used as...
> ./configure %c --build=%m-apple-darwin`uname -r|cut -f1 -d.` --host =%m-apple-darwin`uname -r|cut -f1 -d.`
> to deal with this schizophrenia between the reported and true architecture
> for EMT64 on darwin10.

If you prefer how fink does things, go use fink.

- Toby

More information about the macports-dev mailing list