On Feb 25, 2007, at 04:06, Cédric Luthi wrote:
On 2/25/07, Ryan Schmidt wrote:
http://trac.macports.org/projects/macports/changeset/22269
Why are -O and -g being used in the universal variant?
Probably because the author copy-pasted the Technical Note TN2137
<http://developer.apple.com/technotes/tn2005/tn2137.html> example ;-)
Thanks for noticing that; that sounds likely. I have submitted
feedback to Apple to clarify the use of those options. However, they
have not acted upon other feedback I sent them months ago about that
same article, so I don't expect them to act on this either.
My understanding is that -g turns on some kind of debugging code, and
-O is an optimization level. Neither of those seem to me to have any
bearing on a universal binary. That is: if -g or -O are useful, then
they would be useful for all ports at all times, and not just in the
+universal variants of some ports. Therefore, I believe -g and -O
should be removed from the +universal variants, where they occur. I
have built universal binaries myself outside of MacPorts, and I did
not use the -g or -O options like that.
By the way, this technical note also says:
"Note: On an Intel-based Macintosh system the libraries are already
universal, and support the Intel and PowerPC architectures, and you
may specify only the -arch i386 -arch ppc options for CFLAGS; on a
PowerPC-based Macintosh, you must use the MacOSX10.4u SDK"
If I remember correctly from the tests I did some time ago, "you may
specify only" should read "you must specify only". Specifying the
isysroot on Intel Macs would fail the compilation!
I don't see why that would be so. The universal 10.4 SDK is there to
provide you with universal versions of system libraries regardless of
what platform you're building on. It should always be safe and
correct to use the universal SDK.
So this command:
env CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch
ppc" LDFLAGS="-arch i386 -arch ppc" ./configure ...
would work on PPC Macs but would fail on Intel Macs.
As I'm not on an Intel Mac right now, I can't test. Can anyone
confirm this ?
I do not believe your assessment is correct here either. I believe
using...
env CFLAGS="-arch i386 -arch ppc" LDFLAGS="-arch i386 -arch ppc" ./
configure
...would produce a universal binary on an Intel Mac, because on an
Intel Mac, the system libraries are universal, but on a PowerPC Mac,
the system libraries are PPC only, so this would not produce a
universal binary. It would probably produce error messages when
trying to build the -arch i386 part.
I think I heard somewhere that in 10.5 the system libraries will be
universal on both architectures. But I see no reason why you
shouldn't always specify the universal SDK using -isysroot.
_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macports-dev