WebKit Bakefile Docs

The files in this folder are used to auto-generate project files in GNU
Make and Microsoft Visual Studio 6 (can be used in 7 and 8 too). Support
for many other formats are available, including eVC (for PocketPC),
autoconf, and Symbian project formats, so most future ports would be
able to take advantage of Bakefile support for their projects. (XCode
also has a partial backend in place, but it's not in a usable state for
this project.)

The project files generated using Bakefile currently reside in the
WebCore/Projects/<Project Name> folder. There are not any JavaScriptCore
Bakefiles yet as it build successfully pretty much everywhere already.
However, a Bakefile-based project management system might reduce the
maintenance burden of maintaining the JavaScriptCore project files too,
eventually.


Preparing the build environment
--------------------------------

Right now, the prepartion steps are not totally automated. Here are the steps
that need to be taken at present before you build. 

IMPORTANT: If you already have a copy of Bakefile 0.2.0 installed, you need to
update your version to a modified 0.2.0 release with MSVS 2005 support. (If you 
haven't installed it, regenerate-makefiles will take care of it for you.) You can
get the release from here:

http://kevino.theolliviers.com/bakefile-0.2.0-msvs2005.tar.gz

This support will be officially in a future Bakefile release.

--- On Unix, do the following:

cd WebKitTools/Scripts
sudo ./install-unix-extras # or su, needed for make install

--- On Windows, do the following:

cd WebKitTools/Scripts
./install-win-extras


Building the projects 
----------------------

cd into the project directory (WebKit/JavaScriptCore and 
WebKit/WebCore/Projects/wx, respectively) and run the following:

-- On Unix:

make

-- On Windows, you should open and build the .sln projects.

Windows Note: Sometimes, the files generated by the pre-build step don't get
built and you get an error during linking. However, a subsequent build resolves
the issue.


Regenerating the Makefiles 
---------------------------

cd into the WebCore/WebKitTools/Scripts directory and run the
./regenerate-makefiles script to recreate the makefiles. This will download
and install Bakefile if you don't have it installed already. (You may need to
authenticate if it needs to install Bakefile.)


Regenerating the source file lists 
------------------------------------
Currently, WebCoreSources.bkl and JavaScriptCore.bkl files are
autogenerated by reading the .vcproj files and extracting the file lists
from them, using update-file-lists.py. Whenever files are added/removed,
you should re-run 'python update-file-lists.py' to put the *Sources.bkl back in
sync with TOT. When the script is run, however, there are also currently two 
source files that need to be manually removed:

In JavaScriptCoreSources.bkl
- ./grammarWrapper.cpp

In WebCoreSources.bkl
- $(SRCDIR)/rendering/RenderThemeWin.cpp 

Eventually, we need a way to ensure that these files get included only for
Win builds. Either we find a solution so that we no longer need to autogenerate
the source file list, or we move them in the vcproj to some sort of 'win' 
subfolder, which would automatically keep them from being added to the Bakefiles.


Bakefile formats
-----------------

For those of you curious about what other types of project files Bakefile can
generate, a list can be found here: 

http://bakefile.sourceforge.net/doc/html/rn01re01.html

