ARM support for JavaScript engine of WebKit

We have announced the ARM port of WebKit on webkit-dev mailing list in April. Additionally, a Bugzilla entry was opened for the technical discussion. After that we received several feedbacks which encouraged us to continue our work, but some feedbacks reported technical difficulties on getting and building our code. This post is going to summarize how to get and build the ARM port for your device.

Good to know

First of all, the ARM port resides in http://gitorious.org/~loki/qtwebkit/loki-qtwebkit server (updated). It was derived from the trunk of QtWebKit. From time to time, we are going to rebase our work on the top of trunk.

The ARM port is developed and tested under Qt-linux environment (see more at the official development site of QtWebKit).

How to get the source code

You should use Git to checkout the port.

Initial step (updated):

  • git clone git://gitorious.org/~loki/qtwebkit/loki-qtwebkit.git webkit
  • cd webkit
  • git checkout -b arm-port origin/arm-port

Update the local repository:

  • git fetch
  • git reset --hard origin/arm-port

How to build

The main build script is (updated)

  • WebKitTools/Scripts/build-webkit --qt DEFINES+=ENABLE_YARR=1 DEFINES+=ENABLE_YARR_JIT=1 DEFINES+=ENABLE_JIT=1

You should also check the official the QtWebKit building guide at QtWebKit's webpage. Do not forget to build Qt libraries if your device does not have them.

Tip: If you want to build the JavaScriptCore engine only, remove every element of the SUBDIRS variable except JavaScriptCore/jsc.pro from WebKit.pro.

Cross compilation

If your development (build) box is not an ARM, you should use Scratchbox for emulation.

See the Scratchbox homepage for the installion of the emulation environment. You can also use Scratchbox2 if you do not have a root access to the development box. Alternatively, you can use a virtual development box, for example the Maemo SDK Virtual Image.

Test the JavaScript engine on your device

Copy the following files and directories to your ARM device (preserve the directory structure):

  • WebKitBuild/Release/JavaScriptCore/jsc
  • SunSpider/
  • WebKitTools/Scripts/

And create several empty directories:

  • WebKit/
  • WebCore/
  • JavaScriptCore/

Do not forget to copy the Qt libraries as well if your device does not have them.

You can execute the SunSpider benchmark with the following command:

  • WebKitTools/Scripts/run-sunspider

If the script complains about building you should comment out the 'buildJSC();' line.

Feedback

If you still have a build problem, please write a comment here or to WebKit's bugzilla.

tonikitoo (not verified) - 05/07/2009 - 16:32

great work.

have you tested w/ any other port, apart from qt ?

gabor.loki - 05/08/2009 - 08:03

Not yet. Although our main target is the Qt port, we see no barrier to extend ARM port to other build platforms. Because JSCore does not have any build platform specific bindings.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • No HTML tags allowed
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Fill in the blank