User:Robin Cornelius/standalone qtwebkit
Instructions for building the qt/webkit media plugin using distribution (shared) qt4, instead of static qt4 that the default LL build uses.
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/
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)