Successful Port How To

This page describes how to establish and maintain a port that lives in the main Subversion repository of the WebKit project, as well as the benefits to doing so.

Obviously you are free to create your own external repository, but if it's publicly available, please consider creating a wiki page for it under the "WebKit Ports" section of the start page.

What is a Port?

A port of WebKit is a unique combination of platform technologies that run the WebKit engine.

The most common difference between ports is the operating system that they run on (e.g., Apple's Mac OS X and Windows ports), but in other cases two ports may run on the same operating system but use different graphics (or other) platform technologies (e.g., the Qt and GTK+ ports on Linux).

Recommended Porting Steps

  1. JavaScriptCore building and Tools/Scripts/run-javascriptcore-tests running.
    1. This may require modifications to the JavaScriptCore and WTF/wtf source code.
    2. Most ports use CMake these days, and it is a preferred choice for new port. See JSCOnly port for a minimal example of how to integrate your port into CMake and build-webkit.
    3. If you're using a new build system you will need to modify Tools/Scripts/ and Tools/Scripts/build-jsc (Though you may need to make slight modifications even if you use CMake).
  2. Consider setting up a webkit BuildBot at this time. Your buildbot request may not be honored until you actually have run-webkit-tests running, but it's good to start the process. Read the BuildBot page.
  3. WebCore building.
    1. New build systems will require more modifications to build-webkit.
    2. This will likely require writing many port-specific files in WebCore/platform. This is the bulk of the work.
    3. Submitting patches to WebKit should be done in small chunks, with individual bugs and ChangeLogs for each patch. Each patch should be ideally < 20k in size.
  4. DumpRenderTree building. DumpRenderTree is required to run the LayoutTests (run-webkit-tests).
  5. run-webkit-tests passing. Modify LayoutTests/platform/YOURPLATFORM/TestExpectations lists to skip any tests you fail.
  6. If you do not already have a BuildBot running, it is imperative that you set one up at this point. Otherwise your port will break every week. :)
  7. Once you are this far you likely already have at least one person in your porting team with committer rights. If not, that should be your next goal.


NOTE: This document is a work-in-progress. Add more information as needed! ..

Last modified 8 years ago Last modified on Jul 6, 2016 4:12:50 AM