| 1 | WebKit development on Windows is currently quite tedious and error-prone. This page lists some ideas for how to improve it. |
| 2 | |
| 3 | = Improving the Windows Set-up Process = |
| 4 | |
| 5 | == Check in a Cygwin installation to `svn.webkit.org` == |
| 6 | |
| 7 | [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. |
| 8 | |
| 9 | = Improving the Windows Build Process = |
| 10 | |
| 11 | == Set the `WebKitOutputDir` and `WebKitLibrariesDir` environment variables automatically == |
| 12 | |
| 13 | 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). |
| 14 | |
| 15 | == Use `.vsprops` files more == |
| 16 | |
| 17 | `.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. |
| 18 | |
| 19 | == Consolidate or eliminate Release and Debug `.def` files == |
| 20 | |
| 21 | 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. |
| 22 | |
| 23 | Another option would be to eliminate the `.def` files completely by using `__declspec(dllexport)` and `__declspec(dllimport)`. |
| 24 | |
| 25 | == Switch to using `gyp` == |
| 26 | |
| 27 | [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`. |