On Tuesday 15 September 2009 22:27:22 Dima Panov wrote: > On Tuesday 15 September 2009 22:06:51 Dima Panov wrote: > > On Tuesday 15 September 2009 21:04:34 Cyrille Berger wrote: > > > CCing kde-buildsystem to see if someone has better cmake knowledge than > > > me and know what might trigger a wrong order of include directories. > > > > > > On Tuesday 15 September 2009, Dima Panov wrote: > > > > > Hum, strange error. For me, "qatomic_arch.h" contains a list of > > > > > #ifdef, and my architecture is defined in "QtCore/qglobal.h" that > > > > > way: > > > > > > > > > > #ifndef QT_BOOTSTRAPPED > > > > > # define QT_ARCH_I386 > > > > > #else > > > > > # define QT_ARCH_I386 > > > > > #endif > > > > > > > > > > Is Qt on FreeBSD expecting the arch to be define by a cmake flag > > > > > that would be missing in koffice ? > > > > > > > > Yep, have a same way in /usr/local/include/qt4/QtCore/global.h > > > > > > > > Dnd have a reason for failed build - koffice use wrong order in > > > > includes search path. > > > > > > Ah I see, it would be a good explanation. As far as I can see, the > > > first thing that KOffice's CMakeLists.txt [1] includes is the KDE/Qt > > > definitions. So I would expect them to appears in first position. On my > > > system (debian), when I do a 'VERBOSE="1" make', the first include dir > > > are koffice dirs, followed by /usr/include/KDE, then qt4 things, then > > > /usr/include/OpenEXR . > > > > At FreeBSD we don't have non-system includes in /usr/include. > > So paths looks like this: > > /usr/local/include - qt3/kde3 includes (with qtglobal.h, yes) > > /usr/local/include/qt4 - qt4 includes tree > > /usr/local/kde4/include - kde4 includes tree. > > > > same for libraries. > > > > > > /usr/local/include (defined directly or by depended packages) goes > > > > BEFORE QT_INCLUDES, which is wrong and leads to fails while qt3 > > > > coexist alongside qt4 in the system. > > > > > > > > KOffice 2.0.1 can be build with redefined path with cmake args, but > > > > KOffice 2.1 not affected by this trick. :( > > > > > > Hum, what trick ? > > > > from area51 svn trunk (test kde/qt tree for kde/freebsd team) : > > > > ports/editors/koffice-kde4/Makefile: > > > > CMAKE_ARGS+= \ > > -DCMAKE_EXE_LINKER_FLAGS:STRING="-L${KDE4_PREFIX}/lib > > -L${LOCALBASE}/lib" \ > > -DCMAKE_MODULE_LINKER_FLAGS:STRING="-L${KDE4_PREFIX}/lib > > -L${LOCALBASE}/lib" \ > > -DCMAKE_SHARED_LINKER_FLAGS:STRING="-L${KDE4_PREFIX}/lib > > -L${LOCALBASE}/lib" > > > > > [1] > > > http://websvn.kde.org/trunk/koffice/CMakeLists.txt?revision=1019835&vie > > >w= ma rkup > > Restart build with verbose flag. And you can see this bug with paths in > motion. /usr/local/include goes after local koffice includes but BEFORE > /usr/local/include/qt4 and kde4 includes. > > In correct way it need to be declared LAST in the paths list. > So correct order needs to be ${KOFFICEPARTS} ${KDE_INCLUDES} ${QT_INCLUDES} > ${PACKAGE_INCLUDES} ${LOCALBASE_INCLUDES} > > [ 1%] Building CXX object > libs/pigment/CMakeFiles/pigmentcms.dir/KoBasicHistogramProducers.o > cd > /var/tmp/usr/ports/editors/koffice-kde4.new/work/koffice-2.0.82/build/libs > /pigment && /usr/bin/c++ -DMAKE_PIGMENTCMS_LIB -D_GNU_SOURC > E -DQT_NO_STL -DQT_NO_CAST_TO_ASCII -D_REENTRANT -DKDE_DEPRECATED_WARNINGS > -O2 -pipe - march=nocona -fno-strict-aliasing -Woverloaded-virtu > al -fvisibility=hidden -fvisibility-inlines-hidden -O2 -DNDEBUG > -DQT_NO_DEBUG -fPIC - > I/var/tmp/usr/ports/editors/koffice-kde4.new/work/kof > fice-2.0.82/build/libs/pigment -I/var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment -I/var/tmp/usr/ports/editors > /koffice-kde4.new/work/koffice-2.0.82 -I/var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/build -I/var/tmp/usr/ports/editors > /koffice-kde4.new/work/koffice-2.0.82/libs/koplugin > -I/var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment/composi > teops -I/usr/local/include -I/usr/local/kde4/include > -I/usr/local/kde4/include/KDE - I/usr/local/include/qt4/KDE > -I/usr/local/include/qt4 - > I/usr/local/include/qt4/QtXmlPatterns -I/usr/local/include/qt4/QtWebKit - > I/usr/local/include/qt4/QtHelp -I/usr/local/include/qt4/QtAssista > nt -I/usr/local/include/qt4/QtDBus -I/usr/local/include/qt4/QtTest - > I/usr/local/include/qt4/QtUiTools -I/usr/local/include/qt4/QtScript -I > /usr/local/include/qt4/QtSvg -I/usr/local/include/qt4/QtXml > -I/usr/local/include/qt4/QtSql -I/usr/local/include/qt4/QtOpenGL > -I/usr/local/ > include/qt4/QtNetwork -I/usr/local/include/qt4/QtDesigner - > I/usr/local/include/qt4/Qt3Support -I/usr/local/include/qt4/QtGui > -I/usr/local/ include/qt4/QtCore -I/usr/local/include/qt4/Qt > -I/usr/local/share/qt4/mkspecs/default - I/usr/local/include/OpenEXR -o > CMakeFiles/pigmentcm > s.dir/KoBasicHistogramProducers.o -c /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment/KoBasicHistogramProducer > s.cpp > In file included from /usr/local/include/qt4/QtCore/qbasicatomic.h:207, > from /usr/local/include/qt4/QtCore/qatomic.h:46, > from /usr/local/include/qt4/QtCore/qbytearray.h:46, > from /usr/local/include/qt4/QtCore/qstring.h:46, > from /usr/local/include/qt4/QtCore/QString:1, > from /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/koplugin/KoID.h:25, > from /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/koplugin/KoGenericRegistry.h:24, > from /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment/KoHistogramProducer.h:27, > from /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment/KoBasicHistogramProducers.h:22, > from /var/tmp/usr/ports/editors/koffice- > kde4.new/work/koffice-2.0.82/libs/pigment/KoBasicHistogramProducers.cpp:19: > /usr/local/include/qt4/QtCore/qatomic_arch.h:88:4: error: #error "Qt has > not been ported to this architecture" > > > (full logfile attached) >
this patch fixes pigments build. As I said early, includes order was wrong. In any case QT4/KDE4 includes MUST be declared before any external packages paths. Because this glitch isn't FreeBSD-specific, it need to be fixed in mainstream sources before release :) --- CMakeLists.txt.orig 2009-09-11 03:45:07.000000000 +1100 +++ CMakeLists.txt 2009-09-15 22:52:00.000000000 +1100 @@ -282,8 +282,9 @@ set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES} ${CMAKE_SOURCE_DIR}/libs/pigment ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops - ${LCMS_INCLUDE_DIR} - ${KDE4_INCLUDES} ) + ${QT_INCLUDES} + ${KDE4_INCLUDES} + ${LCMS_INCLUDE_DIR} ) endif (NOT NO_PIGMENT) if(BUILD_pigment) -- Dima "Red Fox" Panov @ Home | C73E 2B72 1FFD 61BD E206 1234 A626 76ED 93E3 B018 Khabarovsk, Russia | 2D30 2CCB 9984 130C 6F87 BAFC FB8B A09D D539 8F29 k...@freebsd Team | FreeBSD committer since 10.08.2009 | FreeBSD since Sept 1995 Twitter.com:fluffy_khv | Skype:dima.panov | Jabber.org:fluffy.khv | ICQ:1745024
--- CMakeLists.txt.orig 2009-09-11 03:45:07.000000000 +1100 +++ CMakeLists.txt 2009-09-15 22:52:00.000000000 +1100 @@ -282,8 +282,9 @@ set(PIGMENT_INCLUDES ${KOPLUGIN_INCLUDES} ${CMAKE_SOURCE_DIR}/libs/pigment ${CMAKE_SOURCE_DIR}/libs/pigment/compositeops - ${LCMS_INCLUDE_DIR} - ${KDE4_INCLUDES} ) + ${QT_INCLUDES} + ${KDE4_INCLUDES} + ${LCMS_INCLUDE_DIR} ) endif (NOT NO_PIGMENT) if(BUILD_pigment)
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Kde-buildsystem mailing list Kde-buildsystem@kde.org https://mail.kde.org/mailman/listinfo/kde-buildsystem