Version 36 (modified by, 12 years ago) (diff)


EFL Port of WebKit

About EFL

The Enlightenment Foundation Libraries (EFL for short) are a set of graphical libraries intended to provide easy-to-use resources for building rich user interfaces based applications. It is the core of the Enlightenment (E17) desktop shell and window manager. As mentioned in Enlightenment's official web site, "the libraries are meant to be portable and optimized to be functional even on devices such as mobile devices". Its core components are:

  • Evas: Highly optimized raster canvas, supports software or hardware accelerated rendering
  • Edje: Declarative UI library, provides rich theme
  • Ecore: Event loop and utility classes to interface with system (X, DirectFB, Cocoa...)
  • Eina: Basic data types

About the port

WebKit/EFL is a project aiming at porting WebKit to the Enlightenment Foundation Libraries. The port is based on Gtk's as we currently use Cairo for rendering and LibSoup for networking, just as they do.


Port is being developed and maintained by ProFUSION and Samsung. An early version was started by INdT/OpenBossa, but it was changed significantly before inclusion in SVN (See their initial announcement at 0.1 version (Jun/16/2009)). Current version is quite complete, featuring:

  • Embedding API mostly consistent w/ Gtk, but following EFL naming scheme and conventions (such as usage of Evas Smart Objects and its callbacks);
  • Theme support per Web Frame;
  • Most of HTML5 features (video is missing);
  • Various delegates to allow full customization of Pop-up and Context menus;
  • Most of page settings (auto load images, disable flash or javascript, etc);
  • Override-able input handling, allowing custom mouse and keyboard behavior;
  • Override-able backing store, allows extensions such as tiled backing store or off screen rendering.

Future plans:

  • NSAPI plugins, using windowless systems for integration into Evas;
  • HTML5 feature completion (video, geolocation);
  • Improve API coverage, exposing more features such as the Editor and Inspector clients;
  • Expose DOM;
  • WebKit2 support.

Other desired features:

  • Elementary widget wrapping up ewk_view into a convenient widget, providing default implementation for delegates;
  • Remove strict X11 dependency, allowing DirectFB and FB at least;
  • Less dependency on GNOME technologies, maybe remove Cairo and LibSoup (the last one is already optional).

Getting the source

The port is being uploaded to official SVN. Right now all source files are merged, but build system is missing. Due discussions at webkit-devel, the chosen build system (CMake) might turn into the proposed "official", so discussion is taking place at bug #37945 (CMake buildsystem)



Below is a list of Debian package names you will need to install.

  • libicu-dev
  • libxslt-dev
  • libsqlite3-dev
  • gperf
  • bison
  • flex
  • libjpeg62-dev (newer libjpeg may be used as well)
  • libpng12-dev (newer libpng may be used as well)
  • libxt-dev
  • libfontconfig1-dev
  • libcairo2-dev
  • libfreetype6-dev
  • libglib2.0-dev (optional, required by libsoup backend)
  • libsoup2.4-dev (newer libsoup may be used as well) or libcurl4-dev
  • libgtk2.0-dev
  • libgstreamer0.10-dev
  • cmake

Additionally, the EFL specific packages (not officially release yet, build directly from SVN!) have to be installed.

  • eina
  • eet (required by edje in evas, compile it before evas!)
  • evas
  • ecore (with optional ecore-x support, and glib integration if you want to use glib/libsoup)
  • edje
  • embryo (required by edje)


Build and Install

  • Follow the procedures to checkout the source code.
  • Create a build directory:
    webkit$ mkdir build
    webkit$ cd build
  • Run CMake (production settings, see bellow for development flags):
    build$ cmake ../Source -DPORT=Efl -DSHARED_CORE=OFF -DCMAKE_BUILD_TYPE=Release
  • Run make:
  • Go grab some coffee, this'll take a while.
  • Install the thing:
    make install

Alternatively while doing development it is interesting to turn on debug and shared core. Debug will generate immensely big libraries with debug symbols and also turn on assertions in the code. Shared core is a feature that splits all internal libraries into actual dynamic loaded libraries (libJavaScriptCore, libWebCore...) which reduces the link time and memory consumption, with a slight performance hit during startup (whence not recommended for production builds):

build$ cmake ../Source -DPORT=Efl -DSHARED_CORE=ON -DCMAKE_BUILD_TYPE=Debug

Building without LibSoup or Glib

  • Just do the same as before, but on cmake command you should pass your network backend option:
    build$ cmake ../Source -DPORT=Efl -DNETWORK_BACKEND=curl
  • For building without Glib, you should use:
  • Note that if you ask for disabling Glib, but still uses LibSoup backend or video support, it will force enabling Glib back (LibSoup and Video depend on Glib).

Questions, feedback

If you have questions please join #webkit, #webkit-efl or #edevelop on You may ask k-s, antognolli, acidx, demarchi, rakuco, gyuyoung or other developer there.

Attachments (1)

Download all attachments as: .zip