WebKit development on Windows is currently quite tedious and error-prone. This page lists some ideas for how to improve it. = Set-up = == Check in a Cygwin installation to `svn.webkit.org` == [http://www.chromium.org/ Chromium] does this (see http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/cygwin/). This would remove the need for [source:trunk/WebKitTools/CygwinDownloader cygwin-downloader], or for users to have Cygwin installed at all. = Building = == Set the `WebKitOutputDir` and `WebKitLibrariesDir` environment variables automatically == The `WebKitOutputDir` and `WebKitLibrariesDir` environment variables have to be set to be able to build inside Visual Studio. We should set these automatically as part of running `update-webkit` (maybe by tickling `HKCU\Environment` directly). == Use `.vsprops` files more == `.vsprops` files allow us to reduce setting duplication within and between `.vcproj` files. Using `.vsprops` files more would make it easier and less error-prone to modify the Windows build files. == Consolidate or eliminate Release and Debug `.def` files == A common build mistake is to only update the Release or only update the Debug `.def` file for JavaScriptCore or WebKit. By consolidating these files we could eliminate this kind of error. Consolidation would probably require the use of a script, which would unfortunately make the build more complicated, but the extra complexity might be worth the reduction in user-error. Another option would be to eliminate the `.def` files completely by using `__declspec(dllexport)` and `__declspec(dllimport)`. == Switch to using `gyp` == [http://code.google.com/p/gyp/ gyp] is a project-file-generation tool that can be used to generate `.vcproj` and `.sln` files (and `.xcodeproj`, etc.). It has a much easier to read format than `.vcproj`, and might be more easily modified by hand than `.vcproj` files. The Chromium port is already using `gyp`, so we'd have some extra help in maintaining the files (assuming we could share `gyp` files with them). If we switched Mac to using `gyp`, too, then we'd really reduce the likelihood of someone forgetting to add a new file to a `.vcproj`. = Running/Debugging = == Don't copy Safari into `%TMP%` == `run-safari` and `debug-safari` currently copy Safari into `%TMP%`. We should switch to using [source:trunk/WebKitTools/WebKitLauncherWin WebKitLauncherWin] now that Safari 4.0.3 has shipped. = Running Regression Tests = == Detect when required fonts are missing == `run-webkit-tests` should check when required fonts are missing (e.g., East Asian language support) and warn the user.