'''General Info''' General info about the Bakefile build system can be found at Bakefiles/Readme.txt in the SVN trunk. If you're working with the Bakefile build system, it's recommended that you read this first. '''Bakefile project page and documentation''' The latest version of Bakefile and documentation can be found at http://www.bakefile.org. '''Templates (aka Presets)''' Bakefile was built pretty heavily around the ideas of inheritance and encapsulation. One area where this can be seen is in its use of "presets", or templates, for build settings that apply to multiple targets, or for project dependencies (e.g. ICU, libxml, CURL). When you create a dependency, you add it to Bakefiles/presets.bkl as a template. Several examples already exist there. Then, for any target which depends on this template, add it using the template="" attribute in the target's definition. For examples, please see the Bakefile documentation or check the various Bakefiles in the WebKit SVN. '''Adding new files''' The Bakefile build system is used for both the GDK and wx ports, and is designed to be usable by other ports as well. Due to this, when adding source files, you must first determine if this source file should be compiled for a specific port, or for all ports. ''For JavaScriptCore'' Currently, JavaScriptCore has no port-specific elements, so you can make all file changes to JavaScriptCore/JavaScriptCoreSources.bkl. ''For WebCore'' If the file is to be built by all ports, add it to WebCore/WebCoreSources.bkl. If, instead, it is only intended to be built by a particular port, then it should be added to WebCore/Projects//.bkl. '''Changing settings''' Again, since Bakefile was designed with multiple ports in mind, where you should change build settings depends on whether you want the change to apply to all ports, or only a specific one. ''For JavaScriptCore'' Again, since there isn't any port-specific elements in JavaScriptCore, all settings changes should be made in JavaScriptCore/jscore.bkl. ''For WebCore'' If you want to apply a change to all ports, you should change WebCore/webcore-base.bkl. If you want to apply a change to a particular port, then it should be added to WebCore/Projects//.bkl.