[webkit-dev] JSC without Dependencies

Brent Fulgham bfulgham at gmail.com
Mon Aug 17 16:08:33 PDT 2009

Hi Brian,

On Mon, Aug 17, 2009 at 11:54 AM, Brian Barnes<ggadwa at charter.net> wrote:
>>> This one is harder, since JavaScriptCore uses bash, make, perl, and bison
>>> (at least) from cygwin. See the JavaScriptCoreGenerated vcproj,
>> I don't think this is worth the pain, since it's entirely a build-time
>> dependency and won't affect your generated library at all.  Is installing
>> cygwin really that hard?  (If it's a matter of bloat, can you replace the
> Yes, this is the one that stops the compile, which is why I was going to
> attempt to rebuild the project from the source files (if possible.)  It's no
> so much "how hard or not hard" it is to install cygwin, it's that most win32
> development happens on VS, it's the tool most win32 developer are used to
> (and a lot of them have seen no other tool), and it makes a bit more sense
> that the win32 VS compile should just require VS.

As a full time Windows developer, I'm afraid I really disagree with
you on this topic.  I don't think it's correct that since most win32
development happens (only) in VS, that it follows that we should aim
to only use Visual Studio. I think this limits us to the same poor
environment that leads to so much awful Windows software.

For that matter, most Windows developers don't bother building
'utility' libraries like JavaScriptCore themselves; they generally
just want to install an SDK and get on with their work.

Windows development does occur primarily in VS, but I think this is
part of the reason there is so much bad windows code written.  WebKit
uses tools like Perl to automate generation of various boilerplate
interfaces from definitions, and does so in a cross-platform way.
Restricting ourselves to VS-only would probably mean having to
manually keep all of this stuff in sync (no thank you!)

It might be possible to use only ActiveState Perl and Python (and
ditch all bash scripting), but I'm not sure how much effort would be
involved in doing so.  This would still require generating the gperf
output used somehow (perhaps that could be maintained as a static text
file in the build).  Oh -- It would also require the creation of
NMAKE-compatible Makefiles to drive the build process (yet another
needless replication of a cross-platform tool).

While the current set of tools in WebKit is by no means perfect, it is
a well designed system for maintaining functionally-equivalent builds
of WebKit on all major (and many very tiny!) platforms.

I think your efforts would be better served by:
1.  Getting your environment set up with Cygwin and building properly.
2.  Coming up with patches to reduce the external dependencies
(CFLite, ICU, pthreadsv2).
3.  Providing pre-build binaries of your dependency-free
JavaScriptCore.dll for people to use in their own projects.

I fully agree that reduced dependencies are a good idea, but I've come
to really like CoreFoundation (CFLite) and don't really care that much
about having the other dependencies as long as I can stay up-to-date
with WebKit's main development.


More information about the webkit-dev mailing list