[Qt-interest] Building Qt with clang
Philipp Münzel
mailing-lists at philippmuenzel.de
Wed Sep 7 01:11:27 CEST 2011
And another update:
I found this posting about the undefined ___eprintf problem: http://comments.gmane.org/gmane.comp.compilers.llvm.devel/40132
and solved it by checking out the compiler-rt into llvm/projects
After that LLVM build fails complaining some missing headers for the ARM architecture.
I solved that by reconfiguring LLVM to support only the x86 architecture. I rebuilt llvm, clang and compiler-rt with this setting.
Now the compilation of Qt goes a lot further, until it stops in Qt Gui with:
In file included from kernel/qcursor_mac.mm:52:
In file included from ../../include/QtGui/private/qt_cocoa_helpers_mac_p.h:1:
../../include/QtGui/private/../../../src/gui/kernel/qt_cocoa_helpers_mac_p.h:218:10: error:
cannot initialize return object of type 'NSString *' with an rvalue of
type 'const NSString *'
...[reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr)) autorelease]...
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:37:1: note:
instance method 'autorelease' is assumed to return an instance of its
receiver type ('const NSString *')
- (id)autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
^
1 error generated.
make[2]: *** [.obj/release-shared/qcursor_mac.o] Error 1
const-correctness bug in Qt?
Philipp
On 06.09.2011 22:31 "Philipp Münzel" <mailing-lists at philippmuenzel.de>
wrote:
> Update:
> I have checked out a trunk of llvm and gcc and built it.
> Trying to built Qt (git master) results now in a linker error:
>
> Undefined symbols for architecture i386:
> "___eprintf", referenced from:
> _HB_HeuristicPosition in harfbuzz-shaper-all.o
> _HB_HeuristicSetGlyphAttributes in harfbuzz-shaper-all.o
> _HB_SelectScript in harfbuzz-shaper-all.o
> _HB_ShapeItem in harfbuzz-shaper-all.o
> _HB_IndicShape in harfbuzz-shaper-all.o
> _HB_IndicAttributes in harfbuzz-shaper-all.o
> _HB_GreekShape in harfbuzz-shaper-all.o
> ...
> ld: symbol(s) not found for architecture i386
>
>
> the full command that resulted in this error is:
>
> clang++ -headerpad_max_install_names -arch i386 -single_module
> -dynamiclib -compatibility_version 4.8 -current_version 4.8.0
> -install_name /usr/local/Trolltech/Qt-4.8.0/lib/QtCore.framework/Versi
> ons/4/QtCore -Xarch_i386 -mmacosx-version-min=10.4 -o QtCore
> .obj/release-shared/qlocale_mac.o
> .obj/release-shared/qabstractanimation.o
> .obj/release-shared/qvariantanimation.o
> .obj/release-shared/qpropertyanimation.o
> .obj/release-shared/qanimationgroup.o
> .obj/release-shared/qsequentialanimationgroup.o
> .obj/release-shared/qparallelanimationgroup.o
> .obj/release-shared/qpauseanimation.o .obj/release-shared/qfuture.o
> .obj/release-shared/qfutureinterface.o
> .obj/release-shared/qfuturesynchronizer.o
> .obj/release-shared/qfuturewatcher.o .obj/release-shared/qrunnable.o
> .obj/release-shared/qtconcurrentfilter.o
> .obj/release-shared/qtconcurrentmap.o
> .obj/release-shared/qtconcurrentresultstore.o
> .obj/release-shared/qtconcurrentthreadengine.o
> .obj/release-shared/qtconcurrentiteratekernel.o
> .obj/release-shared/qtconcurrentexception.o
> .obj/release-shared/qthreadpool.o .obj/release-shared/qglobal.o
> .obj/release-shared/qlibraryinfo.o .obj/release-shared/qmalloc.o
> .obj/release-shared/qnumeric.o .obj/release-shared/epocroot.o
> .obj/release-shared/registry.o .obj/release-shared/qatomic.o
> .obj/release-shared/qmutex.o .obj/release-shared/qreadwritelock.o
> .obj/release-shared/qmutexpool.o .obj/release-shared/qsemaphore.o
> .obj/release-shared/qthread.o .obj/release-shared/qthreadstorage.o
> .obj/release-shared/qmutex_unix.o .obj/release-shared/qthread_unix.o
> .obj/release-shared/qwaitcondition_unix.o
> .obj/release-shared/qbitarray.o .obj/release-shared/qbytearray.o
> .obj/release-shared/qbytearraymatcher.o
> .obj/release-shared/qcryptographichash.o
> .obj/release-shared/qdatetime.o .obj/release-shared/qeasingcurve.o
> .obj/release-shared/qelapsedtimer.o .obj/release-shared/qhash.o
> .obj/release-shared/qline.o .obj/release-shared/qlinkedlist.o
> .obj/release-shared/qlist.o .obj/release-shared/qlocale.o
> .obj/release-shared/qlocale_tools.o .obj/release-shared/qpoint.o
> .obj/release-shared/qmap.o .obj/release-shared/qmargins.o
> .obj/release-shared/qcontiguouscache.o .obj/release-shared/qrect.o
> .obj/release-shared/qregexp.o .obj/release-shared/qshareddata.o
> .obj/release-shared/qsharedpointer.o .obj/release-shared/qsimd.o
> .obj/release-shared/qsize.o .obj/release-shared/qstring.o
> .obj/release-shared/qstringbuilder.o .obj/release-shared/qstringlist.o
> .obj/release-shared/qtextboundaryfinder.o
> .obj/release-shared/qtimeline.o .obj/release-shared/qvector.o
> .obj/release-shared/qvsnprintf.o
> .obj/release-shared/qelapsedtimer_mac.o
> .obj/release-shared/harfbuzz-buffer.o
> .obj/release-shared/harfbuzz-gdef.o
> .obj/release-shared/harfbuzz-gsub.o
> .obj/release-shared/harfbuzz-gpos.o
> .obj/release-shared/harfbuzz-impl.o
> .obj/release-shared/harfbuzz-open.o
> .obj/release-shared/harfbuzz-stream.o
> .obj/release-shared/harfbuzz-shaper-all.o
> .obj/release-shared/qharfbuzz.o
> .obj/release-shared/qabstractfileengine.o
> .obj/release-shared/qbuffer.o .obj/release-shared/qdatastream.o
> .obj/release-shared/qdataurl.o .obj/release-shared/qdebug.o
> .obj/release-shared/qdir.o .obj/release-shared/qdiriterator.o
> .obj/release-shared/qfile.o .obj/release-shared/qfileinfo.o
> .obj/release-shared/qiodevice.o
> .obj/release-shared/qnoncontiguousbytedevice.o
> .obj/release-shared/qprocess.o .obj/release-shared/qtextstream.o
> .obj/release-shared/qtemporaryfile.o .obj/release-shared/qresource.o
> .obj/release-shared/qresource_iterator.o .obj/release-shared/qurl.o
> .obj/release-shared/qsettings.o .obj/release-shared/qfsfileengine.o
> .obj/release-shared/qfsfileengine_iterator.o
> .obj/release-shared/qfilesystemwatcher.o
> .obj/release-shared/qfilesystementry.o
> .obj/release-shared/qfilesystemengine.o
> .obj/release-shared/qfsfileengine_unix.o
> .obj/release-shared/qfilesystemengine_unix.o
> .obj/release-shared/qprocess_unix.o
> .obj/release-shared/qfilesystemiterator_unix.o
> .obj/release-shared/qfilesystemengine_mac.o
> .obj/release-shared/qsettings_mac.o
> .obj/release-shared/qfilesystemwatcher_fsevents.o
> .obj/release-shared/qfilesystemwatcher_kqueue.o
> .obj/release-shared/qpluginloader.o
> .obj/release-shared/qfactoryloader.o .obj/release-shared/quuid.o
> .obj/release-shared/qlibrary.o .obj/release-shared/qelfparser_p.o
> .obj/release-shared/qlibrary_unix.o
> .obj/release-shared/qabstracteventdispatcher.o
> .obj/release-shared/qabstractitemmodel.o
> .obj/release-shared/qbasictimer.o .obj/release-shared/qeventloop.o
> .obj/release-shared/qcoreapplication.o
> .obj/release-shared/qcoreevent.o .obj/release-shared/qmetaobject.o
> .obj/release-shared/qmetatype.o .obj/release-shared/qmimedata.o
> .obj/release-shared/qobject.o
> .obj/release-shared/qobjectcleanuphandler.o
> .obj/release-shared/qsignalmapper.o
> .obj/release-shared/qsocketnotifier.o .obj/release-shared/qtimer.o
> .obj/release-shared/qtranslator.o .obj/release-shared/qvariant.o
> .obj/release-shared/qcoreglobaldata.o
> .obj/release-shared/qsharedmemory.o
> .obj/release-shared/qsystemsemaphore.o .obj/release-shared/qpointer.o
> .obj/release-shared/qmath.o .obj/release-shared/qsystemerror.o
> .obj/release-shared/qcoreapplication_mac.o
> .obj/release-shared/qcore_mac.o .obj/release-shared/qcore_unix.o
> .obj/release-shared/qcrashhandler.o
> .obj/release-shared/qsharedmemory_unix.o
> .obj/release-shared/qsystemsemaphore_unix.o
> .obj/release-shared/qeventdispatcher_unix.o
> .obj/release-shared/qisciicodec.o .obj/release-shared/qlatincodec.o
> .obj/release-shared/qsimplecodec.o .obj/release-shared/qtextcodec.o
> .obj/release-shared/qtsciicodec.o .obj/release-shared/qutfcodec.o
> .obj/release-shared/qtextcodecplugin.o
> .obj/release-shared/qfontlaocodec.o .obj/release-shared/qiconvcodec.o
> .obj/release-shared/qstatemachine.o
> .obj/release-shared/qabstractstate.o .obj/release-shared/qstate.o
> .obj/release-shared/qfinalstate.o .obj/release-shared/qhistorystate.o
> .obj/release-shared/qabstracttransition.o
> .obj/release-shared/qsignaltransition.o
> .obj/release-shared/qeventtransition.o
> .obj/release-shared/qxmlstream.o .obj/release-shared/qxmlutils.o
> .obj/release-shared/moc_qabstractanimation_p.o
> .obj/release-shared/moc_qfuturewatcher.o
> .obj/release-shared/moc_qthreadpool.o
> .obj/release-shared/moc_qnamespace.o .obj/release-shared/moc_qthread.o
> .obj/release-shared/moc_qeasingcurve.o
> .obj/release-shared/moc_qlocale.o .obj/release-shared/moc_qtimeline.o
> .obj/release-shared/moc_qfile.o .obj/release-shared/moc_qiodevice.o
> .obj/release-shared/moc_qnoncontiguousbytedevice_p.o
> .obj/release-shared/moc_qtemporaryfile.o
> .obj/release-shared/moc_qsettings.o
> .obj/release-shared/moc_qfilesystemwatcher_p.o
> .obj/release-shared/moc_qfilesystemwatcher_fsevents_p.o
> .obj/release-shared/moc_qfilesystemwatcher_kqueue_p.o
> .obj/release-shared/moc_qpluginloader.o
> .obj/release-shared/moc_qlibrary.o
> .obj/release-shared/moc_qfactoryloader_p.o
> .obj/release-shared/moc_qabstracteventdispatcher.o
> .obj/release-shared/moc_qabstractitemmodel.o
> .obj/release-shared/moc_qeventloop.o
> .obj/release-shared/moc_qcoreapplication.o
> .obj/release-shared/moc_qcoreevent.o
> .obj/release-shared/moc_qmimedata.o
> .obj/release-shared/moc_qsocketnotifier.o
> .obj/release-shared/moc_qtimer.o .obj/release-shared/moc_qtranslator.o
> .obj/release-shared/moc_qobjectcleanuphandler.o
> .obj/release-shared/moc_qsharedmemory.o
> .obj/release-shared/moc_qeventdispatcher_unix_p.o
> .obj/release-shared/moc_qtextcodecplugin.o
> .obj/release-shared/moc_qabstractstate.o
> .obj/release-shared/moc_qstate.o .obj/release-shared/moc_qfinalstate.o
> .obj/release-shared/moc_qhistorystate.o
> .obj/release-shared/moc_qabstracttransition.o
> .obj/release-shared/moc_qsignaltransition.o
> .obj/release-shared/moc_qeventtransition.o
> -L/Users/philipp/Programming/qt/lib -lz -lm -framework
> ApplicationServices -framework CoreFoundation
> Undefined symbols for architecture i386:
> "___eprintf", referenced from:
> _HB_HeuristicPosition in harfbuzz-shaper-all.o
> _HB_HeuristicSetGlyphAttributes in harfbuzz-shaper-all.o
> _HB_SelectScript in harfbuzz-shaper-all.o
> _HB_ShapeItem in harfbuzz-shaper-all.o
> _HB_IndicShape in harfbuzz-shaper-all.o
> _HB_IndicAttributes in harfbuzz-shaper-all.o
> _HB_GreekShape in harfbuzz-shaper-all.o
> ...
> ld: symbol(s) not found for architecture i386
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
> make[2]: *** [../../lib/QtCore.framework/QtCore] Error 1
> make[1]: *** [release] Error 2
> make: *** [sub-corelib-make_default-ordered] Error 2
>
>
>
>
> On 06.09.2011 20:51 "Philipp Münzel" <mailing-lists at philippmuenzel.de>
> wrote:
> > Good evening,
> >
> > out of curiosity I'm trying to build Qt with clang, especially since
> > I
> > saw in the QtCreator changelog that QtCreator now integrates with
> > clang. I look forward to seeing the better error messages of clang.
> >
> > I checked out the master branch of Qt from gitorious, and configured
> > with configure -platform unsupported/macx-clang
> >
> > My llvm-clang is the Apple build, shipped with XCode 4.1 and gives
> > the
> > following version info:
> > Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM
> > 3.0svn)
> > Target: x86_64-apple-darwin11.1.0
> > Thread model: posix
> >
> > When I start make however, the build fails soon with this error:
> >
> > kernel/qdnd_mac.mm:628:5: error: use of undeclared identifier
> > 'SetRect'
> > SetRect(&boundsRect, boundsPoint.h, boundsPoint.v, boundsPoint.h
> > +
> > ...
> > ^
> > 1 error generated.
> >
> > I tried with other branches of Qt, the 4.8 branch and also the
> > specific git checkout mentioned in
> > http://labs.qt.nokia.com/2010/10/29/compiling-qt-with-clang/
> >
> > Is the Apple version of clang branched after or before the version
> > in
> > the blogpost?
> > Should I pull a recent clang from svn and build that? Or is at a
> > completely different problem?
> >
> > Regards,
> > Philipp
> > _______________________________________________
> > Qt-interest mailing list
> > Qt-interest at qt.nokia.com
> > http://lists.qt.nokia.com/mailman/listinfo/qt-interest
> >
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>
More information about the Qt-interest-old
mailing list