[webkit-help] Webkit-Cairo build failure

Chris Waldron christy.waldron at gmail.com
Sun Aug 14 21:16:45 PDT 2011

========== Build: 30 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========
 WebKit is now built (13m:20s). 
 To run Safari with this newly-built code, use the
 "Tools/Scripts/run-safari" script.

I finally accomplished a clean build of WebKit from the Visual Studio 2008
environment.  Most of the instructions came from Peter Nelson's Blog article
"Summer of WebKit" (http://peterdn.com/post/Summer-of-WebKit-Part-1.aspx).
The most important piece of information missing from his article was the
WebKit scripts, since they are really set up for the Visual Studio 2005
environment, need the environment variable VS80COMNTOOLS set to the value of
the VS90COMNTOOLS environment variable otherwise the build scripts will
fail.  Below is the code snippet of the DOS command script (or batch file)
that I use to set the environment up properly:

color 1F
call "%VS90COMNTOOLS%vsvars32.bat"
title VS2008 Development Environment on %COMPUTERNAME%
goto end

Next, following Peter's instructions I opened the WebKit solution
(~/WebKit/win/WebKit.vcproj/WebKit.sln) in VS2008 to allow the IDE to
convert the VS2005 solution to VS2008 and changed the warning level of every
project in the Configuraion Properties for C++ build for "All
Configurations" to "Off: Turn Off All Warnings (/WO)" and "Treat Warnings as
Errors" to "No".  It's bit tedious but it is a one-off,  improves the build
experience, and removes build failures for due to VS2008 warnings.  After
you make the changes, exit Visual Studio to save your solution and project
updates.  Don't count on just hitting the "OK" or "Apply" buttons and
leaving the solution open because that does not save your changes.

The biggest stumbling block however were the missing Cygwin tools.  Most
instructions fails to inform users that the default install of Cygwin does
NOT install all the tools needed for the Webkit build.  The default
installation of Cygwin misses several important tools.
Here's a list of all the required tools that must be installed:


Now for a couple of gotchas:  On the 64-bit version of Windows 7 I had to
fixup the Cygwin postinstallation of libglade because without this fixup
bison would not install and causes the Cygwin setup to report a failure.
There's a blog post I found on cygwin-xfree at cygwin.com that explains the
workaround (http://comments.gmane.org/gmane.os.cygwin.xfree/21249).  This
problem may not be specific to bison but for me appeared when I installed
bison.  The reported error occurs when installing gcc4 and in my case I
installed bison prior to installing gcc4.  If you follow the order of the
tool list above then you'll likely encounter this problem during the gcc4
installation.  I did not encounter any tool installation failures on the
32-bit version of Windows 7.

The workaround:

Run cygwin and then run the following commands:
chmod 755 /usr/sbin/fix-libtool-scripts-for-latest-gcc-runtimes.sh
/etc/postinstall/bison.sh (or /etc/postinstall/gcc4.sh) - whichever tools
fail to install.

Once all the tools are installed and the WebKit solution is updated for
VS2008 you're ready to build. 
The correct command to build is:

WebKit/Tools/Scripts/build-webkit --wincairo --release

This builds a release build of WebKit using Cairo.  However you will
encounter a link warning from the WebKit project build for libjpeg.lib.
This is because libjpeg.lib is built using VS2005 and has refereces to
vc80.pdb that the linker cannot resolve.  The linker will let you know that
it will link with no debug references since it cannot find the pdb. In my
case I wanted to shut off this warning so I retreived the libjpeg sources
and built the libjpeg.lib under the VS2008 environment.

To do this, download the libjpeg sources from SourceForge
(http://sourceforge.net/projects/libjpeg) and expand into a directory.
The trick here is to copy jconfig.vc to jconfig.h and then to build your
VS2008 version of libjpeg.lib within your VS2008 environment.  From the DOS
command line run the following command:

nmake -f makefile.vc

After VS2008 version of libjpeg.lib is built, copy it to
~\WebKit\WebKitLibraries\win\lib overwriting the VS2005 version.

Now when the WebKit project builds the link warnings are eliminated

Hope this helps.

========== Build: 30 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========

 WebKit is now built (13m:20s). 
 To run Safari with this newly-built code, use the
 "Tools/Scripts/run-safari" script.

More information about the webkit-help mailing list