== Current status == * 8 build systems * XCode -> Mac * VCProj -> Win, WinCairo * CMake -> WinCE, EFL * QMake -> Qt * MakeFile -> Gtk * GYP -> Chromium * Android.mk -> Android * wx * Some of them requiring a special IDE to add a file * Adding and removing a file is more and more expensive which hinders refactoring the code * As an example, someone removed some empty files lately that were in the tree for years, presumably because of the barrier to removing files * Potential unifying systems: CMake, GYP and QMake were mentioned == GYP == * Constraint: people use whatever IDE they currently use (XCode, Visual Studio) * CMake vs GYP (http://code.google.com/p/gyp/wiki/GypVsCMake) * GYP keeps the look'n'feel of the native build system * For example, it is easy to map from GYP to the native system and vice-versa * There is currently no tool to propagate native changes back to GYP though == CMake == * Used by several projects * However CMake generated files calls back CMake which made some of the Apple people sad == The current implementation == * We had a look at some of the GYP files * The current way is sub-optimal as it uses a lot of arcane 'exclude' (this gave rise to a lot of comments) * We would need to refactor the way it is done for people to be fine with such a change * A one GYP per platform was mentioned (and using some include mechanism) == Constraints on the build system files == * Adding/Removing a file is a rare operation whereas checking out the source is common * Thus we should not put a burden on the most common operation * There was a discussion about adding the XCode files as we don't want to add another step * Also this would introduce some issues with Apple internal build system * The tools to generate the native build system should either use XCode or a Makefile on Mac == Workflow == * If we check-in the build files, we have issues with people just doing 'svn up' and building using make or native method * There is a cost with this switch and we need to solve them before making the big switch == Other ports == * Qt and Gtk have their own build integration constraint that needs to be captured * CMake is used an 'include' system and not an 'exclude' system