universal flags and configuration
Ryan Schmidt
ryandesign at macports.org
Thu Feb 7 16:16:02 PST 2008
On Feb 7, 2008, at 03:30, Anders F Björklund wrote:
> I've added some configure. flags for +universal variants,
> and also to the macports.conf file for providing defaults.
>
> They are:
>
> - universal_target
> # for setting macosx_deployment_target and configure target
> Default: 10.4
>
> - universal_sysroot
> # the SDK "sysroot" to use, normally for the -isysroot flag
> Default: /Developer/SDKs/MacOSX10.4u.sdk
>
> - universal_archs
> # machine architectures to use, can be more than just one
> Default: ppc i386
>
>
> There are some workarounds for known shortcomings/bugs, such as
> setting -mmacosx-version-min instead of macosx_deployment_target
> when the variable don't want to take effect,
The documentation I've read says to use MACOSX_DEPLOYMENT_TARGET
environment variable. When is this -mmacosx-version-min applicable
instead?
> or adding -syslibroot
> on PowerPC so that it doesn't forget to use the Intel versions...
Apple documentation on building universal binaries from configure-
based software used to mention -syslibroot but this was removed quite
some time ago. When is it still applicable?
> The additions means that it will now cross-compile when necessary,
As I understand it, cross-compiling is compiling for a platform other
than the one on which the compiler is running. Haven't we already
been doing that when building universal binaries?
> and that +universal target is meant to generate similar binaries*.
> By changing the values, it's possible to build for the Leopard SDK
> and even the Panther SDK (cross-compiling to a previous OS version)
>
> Currently these do _not_ affect the MacPorts os. variables, though.
> These use the currently running operating system, and nothing else
> (i.e. they aren't affected by changing these universal variables)
> So it would still say "+darwin_9" and "+i386", even for Panther SDK.
>
> However, if you do set the universal_target to a certain version
> then it will pass matching configure flags to autoconf/automake.
> For instance, when using the default MacOSX10.4u.sdk, it'll use:
> configure --host=i686-apple-darwin8 --target=i686-apple-darwin8
What problem does setting --host and --target solve? Because for me
it's causing a problem, namely that glib2 doesn't build universal
anymore. I traced this failure back to r33483 in which you added the
--host and --target switches. With trunk r33482 (without those
switches), glib2 builds universal. With trunk r33483 (with them), it
does not.
Possibly suspicious output from glib2's ./configure at the beginning:
configure: WARNING: If you wanted to set the --build type, don't use
--host.
If a cross compiler is detected then cross compile mode will be
used.
Definitely suspicious output from glib2's ./configure:
checking whether to use assembler code for atomic operations... i486
With r33482 it says:
checking whether to use assembler code for atomic operations... none
Definitely suspicious output from glib2's make at the end:
/usr/bin/gcc-4.0 -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DG_LOG_DOMAIN=
\"GLib\" -DG_DISABLE_CAST_CHECKS -DG_DISABLE_DEPRECATED -
DGLIB_COMPILATION -DPCRE_STATIC -I/opt/local/include -isysroot /
Developer/SDKs/MacOSX10.4u.sdk -D_REENTRANT -O2 -funroll-loops -
fstrict-aliasing -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -
arch i386 -Wall -c gatomic.c -fno-common -DPIC -o .libs/gatomic.o
gatomic.c: In function 'g_atomic_int_compare_and_exchange':
gatomic.c:66: error: impossible constraint in 'asm'
lipo: can't figure out the architecture type of: /var/tmp//ccmwc7KI.out
make[4]: *** [gatomic.lo] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
More information about the macports-dev
mailing list