[[PageOutline]] = Building the Gdk port = The Gdk port of WebKit is intended to provide a browser component primarily for users of the portable [http://www.gtk.org/ Gtk+] UI toolkit on platforms like Linux. == Status of the port == The port is not fully-maintained, but contributors often provide changes to keep it in sync with the rest of WebKit. This means that it may not always be in a state where it builds, and even if it builds, it may not be in a working state. The goal is to change this and make it an actively maintained port. Developers interested in using or contributing to the Gdk port should be willing to get their hands dirty at this stage. Patches are welcomed on the bug tracker and help is readily available on the IRC channel and mailing list for developers who want to learn the ropes. == Dependencies == The code should be easily built on any Linux distribution which has development packages for Gtk+ installed. Packages you might need to install (in addition to an "ordinary build environment"): * libicu-dev * gperf * libxslt-dev * bakefile -- has to be specifically this version: http://kevino.theolliviers.com/bakefile-0.2.0-msvs2005.tar.gz == Using Qmake4 == The Gdk port has made a compromise on its build system by incurring a dependency on qmake 4, the Qt toolkit build system. This is only a build-time dependency -- the compiled executables will of course continue to have no requirement of Qt. The decision was made to share resources with the Qt porting team and has been largely successful -- the Gdk port is more likely now than ever to be in a building state straight out of SVN while the port developers have more free time to write code instead of maintaining the build system. To start the build, ensure that you have qmake4 installed and run: WebKit/WebKitTools/Scripts$ ./build-webkit --gdk This will build both the library and the GdkLauncher demo in WebKit/WebKitBuild == OBSOLETE: Using the Bakefile build system == Bakefile is no longer used to build the Gdk port. These instructions are obsolete and will be removed. [http://trac.webkit.org/projects/webkit/browser/trunk/Bakefiles/Readme.txt Bakefiles/Readme.txt] describes the first step, which involves generating GNU Makefiles from a description of the sources and dependencies. It is important to use the version of Bakefile linked to in that file as versions of Bakefile with the same version number provided in Linux distributions today do not have the necessary patches to build WebKit. Once this is done, running "make" in WebKit/WebCore/Projects/gdk should build the library in one step, yielding libwebcore-gdk.so == Testing the port == Running "make" in WebKit/WebKitTools/GdkLauncher will build a test browser. Due to API changes, it is possible that linking will fail, in which case the port will need to be updated to track the latest WebCore API. = Hacking = == Code layout == [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/gdk WebCore/platform/gdk] == Current tasks (May '07) == * Implement more of GraphicsContextCairo.cpp * Use system-provided libpng/libjpeg and encourage the removal of cairo, png and jpeg sources from the SVN tree * Fix the curl backend * Remove "gdk" naming from the curl backend. Other ports have expressed interest in using it. * Review the "reentrancy" patch for the curl backend that did not get merged due to style issues(?) * Start to make decisions on how scrolling can be properly integrated * Look into supporting SVG (is the code in the [http://bugs.webkit.org/show_bug.cgi?id=11332 SVG/Cairo support patch] still relevant?) * Look into supporting the canvas * Attempt to merge the Cairo code in the Win32 port -- the equivalent code is copy-and-pasted into the "Gdk" port in some places. This will help reduce code duplication but also help towards getting WebKit/Gdk/Gtk+ working on Windows * Implement more stubs * Investigate more convenient development workflows using git