wiki:ImprovingLifeOnWindows

Version 4 (modified by Adam Roben, 12 years ago) (diff)

Added ideas from BuildingOnWindows

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

Chromium does this (see http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/cygwin/). This would remove the need for cygwin-downloader, or for users to have Cygwin installed at all. This would fix BuildingOnWindows#MissingpackagesinCygwin.

Allow using non-Cygwin Subversion

This is covered by bug 27323 and would fix BuildingOnWindows#Badlineendings.

Building

Detect when the Windows Platform SDK is missing

update-webkit and/or build-webkit should detect when the Windows Platform SDK is missing and warn the user. This would fix BuildingOnWindows#VisualCExpressEdition.

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). This would fix BuildingOnWindows#WebKitLibrariesDir and obviate BuildingOnWindows#BuildingfromwithinVisualStudio.

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).

Make "Clean Solution" clean everything

"Clean Solution" in Visual Studio currently leaves behind lots of files, such as autogenerated bindings, so the next build isn't really "clean". We should make "Clean Solution" really clean everything.

Switch to using 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 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.

Automatically rebase libphp4.dll

run-webkit-tests should automatically rebase libphp4.dll. That would fix BuildingOnWindows#ErrorlaunchingApachefromrun-webkit-testsonVista.