[Qt-interest] Qt 4.5 on Mac OSX: Attempt to build quad frameworks omits -arch i386 from CFLAGS/CXXFLAGS

Rush Manbert rush at manbert.com
Thu Mar 12 18:33:26 CET 2009


Based on information from Mike Jackson, I attempted to build a shared,  
framework-based, quad library version of Qt 4.5.

My configure command as:
time ./configure -prefix /Users/rmanbert/temp/qt4.5.0-quadDylib -debug- 
and-release -no-qt3support -cocoa -framework -webkit -arch i386 -arch  
x86_64 -arch ppc -arch ppc64 -platform macx-g++

After building qmake, configure shows me this:
Build type:    macx-g++
Architecture:  macosx ( i386 x86_64 ppc ppc64 )
Using framework: Cocoa

Build ............... libs tools examples demos docs translations
Configuration .......  build_all debug shared dll largefile stl mmx  
3dnow sse sse2  i386 x86_64 ppc ppc64 absolute_library_soname  minimal- 
config small-config medium-config large-config full-config dwarf2  
phonon phonon-backend accessibility opengl reduce_exports ipv6  
getaddrinfo ipv6ifname getifaddrs png no-freetype system-zlib nis cups  
iconv openssl xmlpatterns svg webkit scripttools release debug  
qt_framework  i386 x86_64 ppc ppc64
Debug ............... yes (combined)
Default Link ........ debug
Qt 3 compatibility .. no
QtDBus module ....... no
QtScriptTools module  yes
QtXmlPatterns module  yes
Phonon module ....... yes
SVG module .......... yes
WebKit module ....... yes
STL support ......... yes
PCH support ......... no
MMX/3DNOW/SSE/SSE2..  yes/yes/yes/yes
Graphics System ..... default
IPv6 support ........ yes
IPv6 ifname support . yes
getaddrinfo support . yes
getifaddrs support .. yes
Accessibility ....... yes
NIS support ......... yes
CUPS support ........ yes
Iconv support ....... yes
Glib support ........ auto
GStreamer support ... auto
Large File support .. yes
GIF support ......... plugin
TIFF support ........ plugin (qt)
JPEG support ........ plugin (qt)
PNG support ......... yes (qt)
MNG support ......... plugin (qt)
zlib support ........ system
Session management .. auto
OpenGL support ...... yes (Desktop OpenGL)
ODBC support ........ plugin
SQLite support ...... plugin (qt)
OpenSSL support ..... yes (run-time)

which looks fine, although the architecture specs repeat. It then goes  
on to create all of the Makefiles.

I ran make and noticed that none of the compile commands included - 
arch i386. They has the other 3 architectures specified, but not i386.

I stopped the make, found some object files and ran lipo -info on  
them. Lipo says "Architectures in the fat file: qmutex.o are: ppc64  
ppc7400 x86_64"

Since I specified the i386 architecture first in my configure command  
and it was missing in the Makefiles, I tried again with ppc specified  
first. The Makefiles once again define these flags:
CFLAGS        = -pipe -g -gdwarf-2 -arch ppc64 -Xarch_ppc64 -mmacosx- 
version-min=10.5 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 - 
arch ppc -Wall -W $(DEFINES)
CXXFLAGS      = -pipe -g -gdwarf-2 -arch ppc64 -Xarch_ppc64 -mmacosx- 
version-min=10.5 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 - 
arch ppc -Wall -W $(DEFINES)
LFLAGS        = -headerpad_max_install_names -arch ppc64 -Xarch_ppc64 - 
mmacosx-version-min=10.5 -arch x86_64 -Xarch_x86_64 -mmacosx-version- 
min=10.5 -arch ppc

and again the i386 is missing.

I'm building on an Intel Mac, so it almost seems like the Makefiles  
assume there will be a implicit compilation for i386, but the lipo  
results say that's not true.

I suspect this is a bug, but maybe I have done something wrong. Does  
anyone else have experience with this?

- Rush




More information about the Qt-interest-old mailing list