WebCore is a framework for Mac OS X that takes the cross-platform
KHTML library (part of the KDE project) and combines it with an
adapter library specific to WebCore called KWQ that makes it work
with Mac OS X technologies. KHTML is written in C++ and KWQ is written
in Objective C++, but WebCore presents an Objective C programming
interface. WebCore requires the JavaScriptCore framework.

This version of WebCore is based on the KHTML library from KDE 3.0.2.
Changes that are specific to WebCore are marked with #if APPLE_CHANGES.
Other changes to improve performance and web page compatibility are
intended for integration into future versions of the KHTML library.

In order to use the WebCore and JavaScriptCore projects together you
will need to set both projects to use the same build products directory.

The JavaScriptCore README has detailed instructions about how to set
this up.

After JavaScriptCore is built, you can build WebCore using the Project
Builder interface or the "pbxbuild" command from the command line.
