wiki:BuildingGdk

Version 5 (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. Packages you might need to install (in addition to an "ordinary build environment"):

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

Current tasks (April '07)

  • Implement more of GraphicsContextCairo.cpp and PathCairo.cpp (possibly by cleaning up and merging Mike Emmel's patches)
  • Non-ASCII text appears to be garbled right now, and the Cairo context is also often set into an error state resulting in failure to render pages. Investigate.
  • 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
  • Propose a shared NotImplemented.h (see mailing list thread). Remove use of NotImplementedGdk()? This is important as code sharing between ports increases.
  • 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(?)
  • Investigate fixing the bakefiles so linking doesn't take several minutes. I (Alp) personally don't think bakefile should be replaced with a new build system unless the new system can be shared with at least one other port.

Development roadmap (old?)

  • 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)