These instructions apply to Linux in general with source packages.
The code should be easily built on any Linux distribution which has development packages for Qt installed. Below is the list of dependencies:
See also: how to install dependency packages on major linux distributions.
First follow the instructions there to get the sources. The Qt port is part of the WebKit source tree, so you don't need anything extra.
Finally, set the QTDIR environment variable to Qt 5.x's installation path (or qtbase/bin for a Qt developer builds) and make sure Qt 5.x's qmake is the first qmake in your PATH (typically by running export PATH=$QTDIR/bin:$PATH).
If you want the same environment to build bot, refer to http://trac.webkit.org/wiki/QtWebKitGardening. The link contains following items.
If your qmake binary has a different name, e.g. when using Debian, use the --qmake= option to specify the name.
Build WebKit and the Qt test browser with
WebKit/Tools/Scripts/build-webkit --qt
You can also build using Intel® compilers with the following command.
WebKit/Tools/Scripts/build-webkit --qt --qmakearg="CONFIG+=icc -spec linux-icc"
build-webkit (see above) also supports special variable for specifying the OBJDIR directory, as well as some configure and build arguments
WEBKIT_OUTPUTDIR=`pwd`/qtbuild WebKit/Tools/Scripts/build-webkit --qt --makeargs="-j20 -s" --no-video --debug
A very simple test browser is built along with the port and can be executed with
Tools/Scripts/run-launcher --qt
/usr/bin/gold: fatal error: out of file descriptors and couldn't close any
This is a bug in Gold Linker. See here
To fix this try the following with root privileges and build:
ulimit -n 65535
If you don't have root privileges you should add the following in /etc/security/limits.conf file
* hard nofile 65535
This might need restarting X11/reboot.
If you wan't a quick temporary workaround, try the following. (Tested in Ubuntu 10.10)
sudo -s; ulimit -n 65535; exec su - yourusername
../../../WebCore/html/HTMLDocument.cpp: In member function 'virtual void WebCore::HTMLDocument::determineParseMode(const WebCore::String&)': ../../../WebCore/html/HTMLDocument.cpp:389: error: expected initializer before '*' token ../../../WebCore/html/HTMLDocument.cpp:390: error: 'doctypeEntry' was not declared in this scope ../../../WebCore/html/HTMLDocument.cpp:398: error: 'doctypeEntry' was not declared in this scope ../../../WebCore/html/HTMLDocument.cpp:401: error: 'PubIDInfo' has not been declared ../../../WebCore/html/HTMLDocument.cpp:405: error: 'PubIDInfo' has not been declared
This error is typically caused by not having gperf installed. Install gperf, run touch WebCore/html/DocTypeStrings.gperf and try building WebKit again.
../../../WebCore/loader/icon/SQLDatabase.cpp:30:21: error: sqlite3.h: No such file or directory ../../../WebCore/loader/icon/SQLDatabase.cpp:36: error: "SQLITE_ERROR" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:37: error: "SQLITE_DONE" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:38: error: "SQLITE_OK" was not declared in this scope ../../../WebCore/loader/icon/SQLDatabase.cpp:39: error: "SQLITE_ROW" was not declared in this scope
This error is typically caused by not having the development component of libsqlite3 installed. Install the development package and try building WebKit again.
.../WebKitBuild/Release/lib/libWebKitQt.so: undefined reference to `WebCore::CSSParser::lex()'
This error is typically caused by not having flex installed. Install flex, run touch WebCore/css/tokenizer.flex and try building WebKit again.
bison -d -p kjsyy JavaScriptCore/kjs/grammar.y -o grammar.tab.c && mv grammar.tab.c tmp/grammar.cpp && mv grammar.tab.h tmp/grammar.h JavaScriptCore/kjs/grammar.y:364.3-366.9: type clash (`node' `') on default action JavaScriptCore/kjs/grammar.y:366.10: parse error, unexpected ":", expecting ";" or "|"
This error is caused by having an incompatible version of bison installed. The single reported case of this error occurred with bison 1.75, and was resolved by updating to bison 2.3.
In file included from ../../../WebCore/platform/graphics/MediaPlayer.cpp:46: ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:27:29: error: phononnamespace.h: No such file or directory In file included from ../../../WebCore/platform/graphics/MediaPlayer.cpp:46: ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:120: error: ‘Phonon::State’ has not been declared ../../../WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h:120: error: ‘Phonon::State’ has not been declared
This error is caused by not having Phonon installed. Install the development version to resolve.
error: fontconfig/fontconfig.h: No such file or directory
Install fontconfig-dev (libfontconfig-dev).
../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp: In member function ‘void WebCore::BitmapTextureGL::bind()’: ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:581:9: error: ‘GL_RENDERBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:585:9: error: ‘GL_RENDERBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:585:9: error: ‘GL_DEPTH_STENCIL’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:587:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:589:9: error: ‘GL_RENDERBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:590:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:590:9: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:591:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:591:9: error: ‘GL_STENCIL_ATTACHMENT’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:591:9: error: ‘GL_RENDERBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:600:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp: In member function ‘virtual void WebCore::TextureMapperGL::bindSurface(WebCore::BitmapTexture*)’: ../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:646:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
Update the Mesa OpenGL library (libgl1-mesa-dev on Debian systems).
Install sedkit-env-qtwebkit package from this PPA: https://launchpad.net/~u-szeged/+archive/sedkit to install all required dependencies.
Download, build and install Qt 5 - http://qt-project.org/downloads