⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changes between Version 1 and Version 2 of Unifying the build system


Ignore:
Timestamp:
Jun 8, 2026, 12:38:54 AM (14 hours ago)
Author:
darbinyan@apple.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Unifying the build system

    v1 v2  
    1 == Current status ==
    2  * 8 build systems
    3    * XCode -> Mac
    4    * VCProj -> Win, WinCairo
    5    * CMake -> WinCE, EFL
    6    * QMake -> Qt
    7    * MakeFile -> Gtk
    8    * GYP -> Chromium
    9    * Android.mk -> Android
    10    * wx
    11  * Some of them requiring a special IDE to add a file
    12  * Adding and removing a file is more and more expensive which hinders refactoring the code
    13  * As an example, someone removed some empty files lately that were in the tree for years, presumably because of the barrier to removing files
    14  * Potential unifying systems: CMake, GYP and QMake were mentioned
    15 
    16 == GYP ==
    17  * Constraint: people use whatever IDE they currently use (XCode, Visual Studio)
    18  * CMake vs GYP (http://code.google.com/p/gyp/wiki/GypVsCMake)
    19  * GYP keeps the look'n'feel of the native build system
    20    * For example, it is easy to map from GYP to the native system and vice-versa
    21    * There is currently no tool to propagate native changes back to GYP though
    22 
    23 == CMake ==
    24  * Used by several projects
    25  * However CMake generated files calls back CMake which made some of the Apple people sad
    26 
    27 == The current implementation ==
    28  * We had a look at some of the GYP files
    29  * The current way is sub-optimal as it uses a lot of arcane 'exclude' (this gave rise to a lot of comments)
    30  * We would need to refactor the way it is done for people to be fine with such a change
    31  * A one GYP per platform was mentioned (and using some include mechanism)
    32  
    33 == Constraints on the build system files ==
    34  * Adding/Removing a file is a rare operation whereas checking out the source is common
    35  * Thus we should not put a burden on the most common operation
    36  * There was a discussion about adding the XCode files as we don't want to add another step
    37  * Also this would introduce some issues with Apple internal build system
    38  * The tools to generate the native build system should either use XCode or a Makefile on Mac
    39 
    40 == Workflow ==
    41  * If we check-in the build files, we have issues with people just doing 'svn up' and building using make or native method
    42  * There is a cost with this switch and we need to solve them before making the big switch
    43 
    44 == Other ports ==
    45  * Qt and Gtk have their own build integration constraint that needs to be captured
    46  * CMake is used an 'include' system and not an 'exclude' system
     1{{{#!html
     2<div style="padding: 1em; background: #fff8c4; border-left: 4px solid #f5c842; margin: 1em 0;">
     3    <strong>⚠ This page has moved.</strong> The current documentation is at
     4    <a href="https://docs.webkit.org/Deep%20Dive/Build/UnifiedBuilds.html">docs.webkit.org/Deep Dive/Build/UnifiedBuilds</a>.
     5</div>
     6}}}