wiki:BuildingGdk

Version 2 (modified by alp@atoker.com, 15 years ago) (diff)

--

Building the Gdk port

The Gdk port of WebKit is intended to provide a browser component primarily for users of the portable 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.

Using the Bakefile build system

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

WebCore/platform/gdk

Development roadmap

  • Track recent API changes in platform/loader
  • Integrate the SVG/Cairo support patch
  • Implement more stubs
  • Investigate more sharing of code with the Qt port to avoid duplication of boilerplate and UI-agnostic code
  • Investigate merging the build system with other ports (Qt)