bounding brokenness

Support for Windows SDK versioning in mozilla-central

Mozilla uses the Windows SDK for official builds on Windows. Newer versions of the Windows SDK usually add support for features found in newer versions of Windows – for example, the Windows Vista SDK added support for parental controls, stock icons, and the new Vista method of file association registrations.

Unfortunately, we can’t expect everyone to upgrade to the Vista SDK, because you can’t install it on Windows 2000. Some people also build with GCC, which doesn’t support any of the Vista stuff either. Since Vista SDK headers can’t be included in the tree as-is, the solution for that was to add a new flag.

The Windows 7 SDK adds a few more features that we’d probably like to support, and it was clear adding SDK specific flags willy-nilly to is not a good solution in the long run. Patches to add a generic way to detect and enable SDK versions have finally landed on trunk.

What’s changed?

  • The option –with-windows-version has been changed to mean the Windows version to target using this SDK (the default is 600, which is Windows Vista).
  • will detect which SDK you’re building with, and will exit with an error if it’s too old.
  • –disable-vista-sdk-requirements is now deprecated – you should use –with-windows-version=502 instead.
  • Once the remaining patches on that bug land, you should be able to specify Windows SDK versions by saying #if MOZ_WINSDK_TARGETVER >= MOZ_NTDDI_X, where X specifies the minimum version of the SDK needed. Currently, X can be either LONGHORN, which should be used around code that needs the Vista SDK to build, or WIN7, for the Windows 7 SDK.
  • Makefiles can’t be used for this any more.

What hasn’t?

  • _WIN32_WINNT, WINVER and NTDDI_VERSION haven’t changed – you’ll still need to bump them up within a file if you need to.
  • mozilla-1.9.1.