Hi All,
I wanted to pass along some things I ran into while compiling KDE 3.1.1. I haven't
got the energy to try KDE 3.2 right now, but soon. First I was using MIPSPro 7.3 on Irix 6.5.17m. First, there are a lot of paramerters in the configs that need to be set, so to
make life easy I started using a 'build.sh' script that would contain all of the things
configure needs. This can save hours of time. The one I used for qt-3.1.2 was the following:
---------------------------
#!/bin/bash
# QT Build script
#
export QTDIR=/sw/kde31/qt
export KDEDIR=/sw/kde31
export MANPATH=$QTDIR/doc/man:$MANPATH
export LD_LIBRARYN32_PATH=$QTDIR/lib:$LD_LIBRARYN32_PATH
export PATH=$QTDIR/bin:$PATH
#export CC="cc -mips3 -n32"
#export CXX="CC -mips3 -n32"
#export CXXFLAGS="-O3 -LANG:std -OPT:Olimit_opt=on -OPT:Olimit=8500 -woff 1021,1209,1233,1314,1355,1375,1506"
export MAKE="gmake -j40"
# For some reason, this is the only one that works
#./configure -shared -thread -qt-gif -platform irix-n32
./configure -prefix /sw/kde31/qt -shared -debug -thread -qt-gif -stl -qt-libpng
-qt-zlib -qt-libjpeg -qt-libmng -platform irix-cc -verbose
------------------------------------------
Next; there is a bug in the either MIPSPro or QT (I'm not sure which) that causes a
problem with the superclass name space. The work around for qt.3.1.2 was to fix
QCString purestSuperClassName() in moc.y. The original patch is here, but I found
that it's easier just to edit moc_yacc.cpp directly.
// CBS: Note: This needs to go into moc_yacc.cpp
// since moc.y does NOT automatically compiled to moc_yacc.cpp
// edit moc_yacc.cpp directly.
--- src/moc/moc.y.orig Mon Jun 10 09:15:59 2002
+++ src/moc/moc.y Mon Jun 10 13:16:56 2002
@@ -2327,18 +2327,7 @@
*/
QCString purestSuperClassName()
{
- QCString sc = g->superClassName;
- QCString c = g->className;
- int pos = sc.findRev( "::" );
- if ( pos != -1 ) {
- sc = sc.right( sc.length() - pos - 2 );
- pos = c.findRev( "::" );
- if ( pos != -1 )
- c = c.right( c.length() - pos - 2 );
- if ( sc == c )
- sc = g->superClassName;
- }
- return sc;
+ return g->superClassName;
}
---------------------------------
That was it for qt. Next was to compile some needed libraries;
libart_lgpl-2.3.10, libxml2-2.5.1, libxslt-1.0.23,
openssl-0.9.7, pcre-3.4, bzip2-1.0.2, jpeg-6b.
With each one of these; I used a build script similar to below.
#!/bin/bash
#
#
export LD_LIBRARYN32_PATH=/sw/kde31/qt/lib:/sw/kde31/lib:/usr/lib32:/lib32:/usr/freeware/lib32:/usr/local/lib32
export QTDIR=/sw/kde31/qt
export KDEDIR=/sw/kde31
export CC="cc -mips3 -n32"
export CXX="CC -mips3 -n32"
export CXXFLAGS="-O2 -LANG:std -OPT:Olimit_opt=on -OPT:Olimit=8500 -woff 1021,1209,1233,1314,1355,1375,1506"
export MAKE="gmake -j35"
./configure --prefix=/sw/kde31
-----------------
After that it was on to the kdelibs, kdebase and the reset. In kdebase I used the following build script,
#!/bin/bash
#
#
export LD_LIBRARYN32_PATH=/sw/kde31/qt/lib:/sw/kde31/lib:/usr/lib32:/lib32:/usr/freeware/lib32:/usr/local/lib32
export QTDIR=/sw/kde31/qt
export KDEDIR=/sw/kde31
export CC="cc -mips3 -n32"
export CXX="CC -mips3 -n32"
export CFLAGS="-O2 -n32 -mips3"
export CXXFLAGS="-O2 -n32 -mips3 -LANG:std -ptused -prelink -OPT:Olimit_opt=on -OPT:Olimit=8500 -woff 1021,1209,1233,1314,13
55,1375,1506"
export LDFLAGS="-n32"
export MAKE="/sw/freeware/bin/gmake -j40"
./configure --prefix=/sw/kde31 --with-qtdir=/sw/kde31/qt --with-qt-dir=/sw/kde31/qt --with-qt-include=/sw/kde31/qt/include --
with-qt-libraries=/sw/kde31/qt/lib --with-extra-includes=/sw/kde31/include:/usr/freeware/include --with-extra-libs=/sw/kde31
/lib:/usr/freeware/lib32 --with-ssl-dir=/sw/kde31 --enable-mt --with-shadow --with-x
--------- -----------
Considering the size of KDE, I didn't have too many problems but there were a few and
almost always it was a name space issue; things like changing
ofstream -> std::ofstream
kate was especially annoying because the patched moc compiler didn't know how to handle
name spaces already defined. Eg. MarkInterface::MarkTypes should be
KTextEditor::MarkInterface::MarkTypes. Perhaps MIPSPro or the new qt has the issue
with moc fixxed. If not be prepared to compile - fix and compile and fix. For the most
part though there are few real gotcha's in the whole of KDE 3.1.1 (all libs included), I made
198 edits. Many where
Of those, I think only ksysguardd/Irix/NetDev.c has an obvious bug in it. The rest are just
name space issues from the moc compiler bug. All and all, not too bad. Even Koffice went
pretty smoothly.
Anyway, I hope that helps in your porting efforts. If I can get some time, I may join you all
in porting efforts and see if the moc problem has been fixxed.
Best Regards.