Changes between Initial Version and Version 1 of BuildingGtk


Ignore:
Timestamp:
Sep 23, 2007 8:05:52 AM (17 years ago)
Author:
freyther@gmit-gmbh.de
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BuildingGtk

    v1 v1  
     1[[PageOutline]]
     2
     3= Building the Gtk port =
     4
     5The Gtk 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.
     6
     7== Status of the port ==
     8
     9The port is actively maintained, and its build state is continuously tested by the [http://build.webkit.org/ WebKit build-bot].
     10
     11Developers interested in using or contributing to the Gtk 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.
     12
     13It is worth noting that this project is being developed directly in WebKit SVN and is entirely unrelated to the classic [http://gtk-webcore.sourceforge.net/ Gtk+ WebCore].
     14
     15== Dependencies ==
     16
     17The 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"):
     18
     19 * libicu-dev
     20 * libxslt-dev
     21 * libcurl-dev
     22 * libsqlite3-dev
     23 * libjpeg62-dev
     24 * libpng12-dev
     25 * gperf
     26 * bison
     27 * flex version 2.5.33 or later
     28
     29If you forgot to install one of the build dependencies, your build tree might be in a bad state and might fail to compile even after you've installed the missing dependency. In this case, you should ensure your SVN checkout is entirely clean with eg. make -C WebKitBuild/Release/WebCore clean
     30
     31== Using Qmake4 ==
     32
     33The Gtk 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 Gtk 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 old Bakefile build system.
     34
     35To start the build, ensure that you have qmake4 installed and run:
     36
     37WebKit/WebKitTools/Scripts$ ./build-webkit --gtk
     38
     39This will build both the library and the GtkLauncher demo in WebKit/WebKitBuild
     40
     41= Hacking =
     42
     43== Code layout ==
     44
     45The main components of the port:
     46
     47=== Gtk+-specific modules ===
     48
     49 * Gtk+/Gtk UI platform: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/gtk WebCore/platform/gtk]
     50
     51 * "Page/Gtk": [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/page/gtk WebCore/page/gtk]
     52
     53 * "Loader/Gtk": [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/loader/gtk WebCore/loader/gtk]
     54
     55There may be other gtk-port related directories which have yet to be listed here.
     56
     57=== Shared code modules ===
     58
     59While the Gtk+ port is the primary consumer of these backends, we aim to keep them portable, avoiding even ifdef'd sections specific to the Gtk+ port:
     60
     61 * curl http backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/network/curl WebCore/platform/network/curl]
     62
     63 * cairo graphics backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/graphics/cairo WebCore/platform/graphics/cairo]
     64
     65 * cairo graphics SVG backend: [http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/graphics/svg/cairo WebCore/platform/graphics/svg/cairo]
     66
     67== Current tasks (July '07) ==
     68
     69 * Make things work with debugging enabled (when NDEBUG is removed, assertions are triggered right now)
     70 * Fix animated GIF images -- consider using GdkPixbuf?
     71 * Continue to fix the curl backend
     72 * Start to consider consolidating the widget into a single place as the Qt port has done, and look into implementing eg. createFrame()
     73 * Look into supporting the canvas
     74 * 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
     75
     76
     77== Issues known ==
     78
     79=== CURL ===
     80 * Review and possibly integrate the [http://www.sand-labs.org/svn/trunk/BAL/Implementations/Network/CURL/ sand-labs CURL backend] code. It has a slightly different API, so needs to be back-ported, but looks like it may be more feature-complete, able to handle redirects properly etc.
     81 * The non zero select timeout feels bad. Make it possible to write a GSourceFunc to not poll the sockets and have a timeout: This can probably be done by integrating code from MIT/X11 licensed [http://atterer.net/glibcurl/ glibcurl].
     82 * Cookie handling is completely lacking as pointed out on the mailing list
     83 * headerCallback needs to be landed/fixed (already done?)
     84 * Errors of curl need to be properly populated
     85
     86=== Gtk ===
     87 * A lot of classes are not yet implemented
     88 * Frames are not supported. This needs special handling and adding an API
     89 * We don't have pkg-config files
     90 * We probably relayout way too often leading to weird issues as seen on planet.gnome.org
     91 * For painting we have some issues in regard to Expose Events and when WebKit will call paint.
     92
     93=== Theming ===
     94 * Consider taking code directly from Mozilla's LGPL licensed Gtk+ theming backend. They deal with a lot of corner cases which don't look fun to re-implement.
     95 * Focus ring drawing
     96 * Scrollbars for PlatformScrollbar will be terrible as we need to implement a HitTest but don't know where the elements of the scrollbar hide
     97 * Native theming for text entries
     98
     99=== Building ===
     100 * Missing dependencies are not reported and force a user to take a closer look at the screen.