Opie/i386


ごく事務的に。

PC 上の環境を qt 2.3.4 + opie snapshot 20021122 へ移行する。 Qt/Embedded + Qtopia と混同しないため、ベースディレクトリを /usr/local/opie とする。

qte 2.3.4 の修正

パッチは opie cvs から全て (listview, makefile, override, setpalette, sigsegv, simpad, style, unpolish, gfxraster) をあてる。

また、Transformed サーバを QVFb に対応させるため、

--- qgfxtransformed_qws.cpp~    Thu Feb 27 11:07:36 2003
+++ qgfxtransformed_qws.cpp     Tue Mar 25 21:45:09 2003
@@ -43,7 +43,7 @@
 #include <fcntl.h>
 #include <errno.h>
 
-//#define QT_TRANSFORM_VFB
+#define QT_TRANSFORM_VFB
 
 #ifndef QT_TRANSFORM_VFB
 # ifndef _OS_QNX6_
とする。2.3.3 以前と違い、これだけで Transformed に対応した。

qconfig-fat.h としては、

#define QT_NO_PROPERTIES
#define QT_NO_DRAGANDDROP

#define QT_NO_COMPLEXTEXT
#define QT_NO_STYLE_AQUA
を使う。PROPERTIES は qt-designer が使っているが、QVFb 上で動かすはずはないから省略。 QT_NO_COMPLEXTEXT, QT_NO_STYLE_AQUA は元々 qt-embedded-free 2.3.4 に実装がないにもかかわらず opie からフラグを参照しているものがあるため、qt-embedded 側で明示する。

configs/linux-x86-g++-shared-debug の修正:

--- linux-x86-g++-shared-debug.org      Tue Mar 25 21:48:55 2003
+++ linux-x86-g++-shared-debug  Tue Mar 25 21:50:36 2003
@@ -6,17 +6,21 @@
 
 # Compiling with support libraries
 SYSCONF_CXXFLAGS_X11   = 
-SYSCONF_CXXFLAGS_QT    = -I$(QTDIR)/include
+SYSCONF_CXXFLAGS_QT    = -I$(QTDIR)/include -I/usr/include/freetype2
 SYSCONF_CXXFLAGS_QTOPIA        = -I$(QPEDIR)/include
 SYSCONF_CXXFLAGS_OPENGL        = -I/usr/X11R6/include
 
+RUNTIME_QTDIR           = /usr/local/opie
+RUNTIME_QPEDIR          = /usr/local/opie
+RUNTIME_OPIEDIR         = /usr/local/opie
+
 # Compiling YACC output
 SYSCONF_CXXFLAGS_YACC     = -Wno-unused -Wno-parentheses
 
 # Linking with support libraries
 SYSCONF_RPATH_X11      = 
-SYSCONF_RPATH_QT       = -Wl,-rpath,$(QTDIR)/lib
-SYSCONF_RPATH_QTOPIA   = -Wl,-rpath,$(QPEDIR)/lib
+SYSCONF_RPATH_QT       = -Wl,-rpath,$(RUNTIME_QTDIR)/lib
+SYSCONF_RPATH_QTOPIA   = -Wl,-rpath,$(RUNTIME_QPEDIR)/lib
 SYSCONF_RPATH_OPENGL   = -Wl,-rpath,/usr/X11R6/lib
 
 # Linking with support libraries
@@ -26,7 +30,7 @@
 # Qt, Qt+OpenGL
 SYSCONF_LFLAGS_QT      = -L$(QTDIR)/lib
 SYSCONF_LFLAGS_QTOPIA  = -L$(QPEDIR)/lib
-SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX)
+SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX) -lfreetype
 SYSCONF_LIBS_QT_OPENGL = 
 SYSCONF_LIBS_QTOPIA    = -lqtopia

qte 2.3.4 の make

% export QTDIR=/home/src/Qt/qt-2.3.4
% ./configure -qvfb -vnc -qconfig fat -system-jpeg -system-libpng -system-zlib \
     -gif -depths 8,16,24,32 -debug
% make
デフォルトで xft は有効になっているが、-xft しておくほうがいいか?

static library とする場合は、

% ./configure -qvfb -vnc -qconfig fat -system-jpeg -system-libpng -system-zlib \
     -gif -depths 8,16,24,32 -static -platform linux-generic-g++
のようにする。linux-generic-g++linux-x86-g++ の違いは inline function の展開の有無にあり、inline でない実体が必要になる linux-x86-g++ は、 static library 化できない。... リンカのバグだと思うけど。

OPIE snapshot のアイコンを cvs のものへ

library/mkinlinepics という one line script もあるが、パスを通してないので手で。
% cd /home/src/Qt/opie-snapshot-20021122
% rm -rf pics
% cd /home/src/Qt/cvs/opie/opie
% tar -cvp pics | tar -xpC /home/src/Qt/opie-snapshot-20021122
% cd /home/src/Qt/opie-snapshot-20021122
% cd pics
% rm -rf **/CVS
% cd ../library
% /usr/local/qte/bin/qembed --images ../pics/inline/*.* > inlinepics_p.h
qembed 自体は qt(e) の tools/ にある。必ず qt2/qte2 のものを使うこと。qt3 にも付属するが、 互換性がない。

opie snapshot 20021122 の修正

まず configs/linux-generic-g++-shared-debug の修正から:
--- linux-generic-g++-shared-debug.org  Tue Mar 25 21:48:37 2003
+++ linux-generic-g++-shared-debug      Tue Mar 25 21:58:08 2003
@@ -3,6 +3,7 @@
 SYSCONF_CXX            = g++
 SYSCONF_CC             = gcc
 DASHCROSS              = 
+RUNTIME_QTDIR           = /usr/local/opie
 
 # Compiling with support libraries
 SYSCONF_CXXFLAGS_X11   = 
@@ -14,7 +15,7 @@
 
 # Linking with support libraries
 SYSCONF_RPATH_X11      = 
-SYSCONF_RPATH_QT       = -Wl,-rpath,$(QTDIR)/lib
+SYSCONF_RPATH_QT       = -Wl,-rpath,$(RUNTIME_QTDIR)/lib
 SYSCONF_RPATH_OPENGL   = -Wl,-rpath,/usr/X11R6/lib
 
 # Linking with support libraries
@@ -22,8 +23,8 @@
 SYSCONF_LFLAGS_X11     = 
 SYSCONF_LIBS_X11       = 
 # Qt, Qt+OpenGL
-SYSCONF_LFLAGS_QT      = -L$(QTDIR)/lib
-SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX)
+SYSCONF_LFLAGS_QT      = -L$(QTDIR)/lib 
+SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX) -lfreetype
 SYSCONF_LIBS_QT_OPENGL = 
 # OpenGL
 SYSCONF_LFLAGS_OPENGL  = -L/usr/X11R6/lib

freetype/freetypefactoryimpl.h を:

--- freetypefactoryimpl.h~      Fri Oct 25 21:42:57 2002
+++ freetypefactoryimpl.h       Tue Mar 25 21:40:11 2003
@@ -20,8 +20,8 @@
 
 
 #include <qpe/fontfactoryinterface.h>
-
-class QFontFactoryFT;
+#include <qfontfactoryttf_qws.h>
+// class QFontFactoryFT;
 
 class FreeTypeFactoryImpl : public FontFactoryInterface
 {

noncore/settings/freetype/freetypefactoryimpl.h を:

-- noncore/settings/appearance2/appearance.cpp.org     Tue Mar 25 22:13:10 2003
+++ noncore/settings/appearance2/appearance.cpp Tue Mar 25 22:13:26 2003
@@ -117,13 +117,13 @@
     list->insertItem( new StyleListItem ( "Windows", new QWindowsStyle ( )));
     list->insertItem( new StyleListItem ( "Light", new LightStyle ( )));
 #ifndef QT_NO_STYLE_MOTIF
-    list->insertItem( new StyleListItem ( "Motif", new QMotifStyle ( )));
+    // list->insertItem( new StyleListItem ( "Motif", new QMotifStyle ( )));
 #endif
 #ifndef QT_NO_STYLE_MOTIFPLUS
-    list->insertItem( new StyleListItem ( "MotifPlus", new QMotifPlusStyle ( )));
+    // list->insertItem( new StyleListItem ( "MotifPlus", new QMotifPlusStyle ( )));
 #endif
 #ifndef QT_NO_STYLE_PLATINUM
-    list->insertItem( new StyleListItem ( "Platinum", new QPlatinumStyle ( )));
+    // list->insertItem( new StyleListItem ( "Platinum", new QPlatinumStyle ( )));
 #endif
 #endif
     list->insertItem( new StyleListItem ( "QPE", new QPEStyle ( )));
... むぅ、けっこうあるな。

qpdf in opie snapshot 20021122 の 修正

noncore/graphics/qpdf だけ修正量が多い。 ... というか、試行錯誤したのでどれを戻していいか分からない ...。
-lstdc++ だけでいいと思うのだけども。
--- Makefile~   Tue Mar 25 21:28:45 2003
+++ Makefile    Tue Mar 25 21:36:57 2003
@@ -29,7 +29,7 @@
 SYSCONF_LIBS_X11       = 
 # Qt, Qt+OpenGL
 SYSCONF_LFLAGS_QT      = -L$(QTDIR)/lib 
-SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX) -lfreetype
+SYSCONF_LIBS_QT                = -lqte$(QT_THREAD_SUFFIX) -lfreetype -lstdc++
 SYSCONF_LIBS_QT_OPENGL = 
 # OpenGL
 SYSCONF_LFLAGS_OPENGL  = -L/usr/X11R6/lib
--- QOutputDev.cpp~     Fri Nov 22 21:37:18 2002
+++ QOutputDev.cpp      Tue Mar 25 21:35:47 2003
@@ -672,7 +672,7 @@
                if ( dorot ) {  
                        oldmat = m_painter-> worldMatrix ( );
 
-                       std::cerr << std::endl << "ROTATED: " << m11 << ", " << m12 << ", " << m
21 << ", " << m22 << " / SIZE: " << fsize << " / TEXT: " << str. local8Bit ( ) << endl << endl;
+                       std::cerr << std::endl << "ROTATED: " << double(m11) << ", " << double(m
12) << ", " << double(m21) << ", " << double(m22) << " / SIZE: " << double(fsize) << " / TEXT: "
 << str. local8Bit ( ) << endl << endl;
                                                
                        QWMatrix mat ( lrint ( m11 / fsize ), lrint ( m12 / fsize ), -lrint ( m2
1 / fsize ), -lrint ( m22 / fsize ), lrint ( x1 ), lrint ( y1 ));

もしかすると、さらに fixed.h のコメントアウトを元に戻す必要があるかもしれないが、 たぶん大丈夫だろう:

--- fixed.h~    Tue Mar 25 21:19:55 2003
+++ fixed.h     Tue Mar 25 21:33:34 2003
@@ -181,7 +181,7 @@
        return fixed ( a1, true );
 }
 
-#if 0 // no std::ostream needed in OPIE
+#if 1 // no std::ostream needed in OPIE
 template  inline std::ostream &operator << ( std::ostream &o, const fixed 
&f )
 {
        o << double( f );
この fixed.h への修正は必要ないはずだ。

opie snapshot 20021122 の make

% export QTDIR=/home/src/Qt/qt-2.3.4
% export OPIEDIR=/home/src/Qt/qt-2.3.4
% cp /usr/local/qte/bin/uic /home/src/Qt/qt-2.3.4/bin
% ./configure -debug
% make

インストール

qte から lib, opie から apps bin doc docs etc help i18n pics plugins share sounds を /usr/local/opie にコピーするのは前と同じ。

Screenshot

OPIE on PC
実は opie もちゃんとアイコンの再配列に対応してんのね。 横に 4 つ以上並べるためには横幅 420 pixel 以上が必要で、このため QVGA landscape では 3 つしか並ばないけど (core/launcher/launcherview.cppLauncherIconView::calculateGrid(ItemTextPos))。


[日記へ] [目次へ]