Difference between revisions of "User:Robin Cornelius/standalone qtwebkit"

From Second Life Wiki
Jump to navigation Jump to search
Line 79: Line 79:


== Part 2 Patching the viewer to use a shared libqtwebkit ==
== Part 2 Patching the viewer to use a shared libqtwebkit ==
Apply the following patch to the viewer code to only link against libqtwebkit
Index: indra/cmake/WebKitLibPlugin.cmake
===================================================================
--- indra/cmake/WebKitLibPlugin.cmake  (revision 2882)
+++ indra/cmake/WebKitLibPlugin.cmake  (working copy)
@@ -36,28 +36,5 @@
  elseif (LINUX)
      set(WEBKIT_PLUGIN_LIBRARIES
          llqtwebkit
-
-        qgif
-#        qico
-        qjpeg
-#        qpng
-#        qtiff
-#        qsvg
-
-#        QtSvg
-        QtWebKit
-        QtOpenGL
-        QtNetwork
-        QtGui
-        QtCore
-
-        fontconfig
-        X11
-        Xrender
-        GL
-
-#        sqlite3
-#        Xi
-#        SM
          )
  endif (WINDOWS)

Revision as of 13:14, 3 November 2009

Instructions for building the qt/webkit media plugin using distribution (shared) qt4, instead of static qt4 that the default LL build uses.

Part 1 qtwebkit in shared form

First of all you need to grab the latest code for qt/webkit this is in a mecurial (hg) repository and if you install the mecurial tools for your distribution you can then fetch the code with

 hg clone http://hg.secondlife.com/llqtwebkit/

To get this to build some minor changes are required :-

diff -r d3b5f3a6f6c1 llembeddedbrowserwindow.cpp
--- a/llembeddedbrowserwindow.cpp	Mon Sep 21 14:26:31 2009 -0700
+++ b/llembeddedbrowserwindow.cpp	Tue Nov 03 20:50:14 2009 +0000
@@ -68,7 +68,7 @@
 #include <qdebug.h>
 #endif
 
-#define WEBHISTORYPATCH
+//#define WEBHISTORYPATCH
 
 LLEmbeddedBrowserWindow::LLEmbeddedBrowserWindow()
 {
diff -r d3b5f3a6f6c1 llnetworkaccessmanager.cpp
--- a/llnetworkaccessmanager.cpp	Mon Sep 21 14:26:31 2009 -0700
+++ b/llnetworkaccessmanager.cpp	Tue Nov 03 20:50:14 2009 +0000
@@ -75,7 +75,7 @@
 
 void LLNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
 {
-    authenticator->tryAgainLater = true;
+    //authenticator->tryAgainLater = true;
     AuthDialog authDialog;
     int i;
     for (i = 0; i < authDialogs.count(); ++i) {
@@ -107,7 +107,7 @@
         authDialog.authenticationDialog->deleteLater();
         authDialog.authenticationDialog = 0;
         authDialogs.removeAt(i);
-        authenticator->tryAgainLater = false;
+        //authenticator->tryAgainLater = false;
     }
 }
 
diff -r d3b5f3a6f6c1 llqtwebkit.pro
--- a/llqtwebkit.pro	Mon Sep 21 14:26:31 2009 -0700
+++ b/llqtwebkit.pro	Tue Nov 03 20:50:14 2009 +0000
@@ -1,4 +1,4 @@
-CONFIG += static
+CONFIG += shared
 TEMPLATE = lib
 TARGET = 
 DEPENDPATH += .
diff -r d3b5f3a6f6c1 static.pri
--- a/static.pri	Mon Sep 21 14:26:31 2009 -0700
+++ b/static.pri	Tue Nov 03 20:50:14 2009 +0000
@@ -1,4 +1,5 @@
 unix {
-    DEFINES += STATIC_QT
-    QTPLUGIN += qgif
+    #DEFINES += STATIC_QT
+    #QTPLUGIN += qgif
+    QMAKE_LFLAGS_SHLIB *= "--rpath=/usr/lib/qt4/plugins/imageformats"
 }

This disables some features that are not avaiable in current qt4/ and in the case of the prepend patch will never be avaiable and also changes the build to use a shared qt4

To apply the above as a patch copy it to a local file, eg shared_qt.patch then from the llqtwebkit folder run :-

patch -p1 < shared_qt.patch

After sucessfully patching the code you can build with

qmake-qt4
make

This will produce a libqtwebkit.so and some symlinks to the library with so name versions. To install the quick and easy way is to

cp *.so /usr/local/lib/
cp llqtwebkit.h /usr/local/include/

Part 2 Patching the viewer to use a shared libqtwebkit

Apply the following patch to the viewer code to only link against libqtwebkit

Index: indra/cmake/WebKitLibPlugin.cmake
===================================================================
--- indra/cmake/WebKitLibPlugin.cmake   (revision 2882)
+++ indra/cmake/WebKitLibPlugin.cmake   (working copy)
@@ -36,28 +36,5 @@
 elseif (LINUX)
     set(WEBKIT_PLUGIN_LIBRARIES
         llqtwebkit
-
-        qgif
-#        qico
-        qjpeg
-#        qpng
-#        qtiff
-#        qsvg
-
-#        QtSvg
-        QtWebKit
-        QtOpenGL
-        QtNetwork
-        QtGui
-        QtCore
-
-        fontconfig
-        X11
-        Xrender
-        GL
-
-#        sqlite3
-#        Xi
-#        SM
         )
 endif (WINDOWS)