Microsoft Header Bingo
Wednesday, April 16th, 2008atlbase.h (ATL) | oleacc.idl (Accessibility IDL) | wpcapi.h (Windows Vista Parental Controls) | CRT sources (optional, needed for jemalloc) | Notes | |
---|---|---|---|---|---|
VC++8 Express (needs separate SDK) | No | No | No | No | |
VC++8 Professional with SDK | Yes | Yes | No | Yes | |
Windows 2003R2 SDK | Yes | Yes | No | No | |
Windows Vista SDK (6.0) | No | No | Yes | No | |
Windows 2008 SDK (6.1) | No | Yes | Yes | No | MozillaBuild doesn’t detect the presence of this SDK (yet) |
VC++9 Express (needs separate SDK) | No | No | No | No | Neither VC9 version builds Mozilla correctly yet: they embed duplicate/incorrect manifests by default |
VC++9 Professional with SDK | Yes | Yes | Yes | Yes |
Developers were trying to build Mozilla on Windows and having failures 75% of the way through the build process, with error messages about missing headers. Depending on their configuration, any of the headers listed above may have been missing. I know MS tries: this is not malicious breakage on their part, just a side effect of releasing very complex systems. But boy can it be frustrating at times. Right now we’re in a situation where you can’t build Firefox using free tools and only a single SDK, because the newer SDKs don’t have ATL and the older SDKs don’t have wpcapi.h for Windows Vista parental controls.
To fix the problem, you need to install both the Windows 2003 SDK and the Windows Vista SDK. Ted Mielczarek is working on doing a quick release of MozillaBuild 1.2.1 which will support loading multiple SDKs into your build environment. Until then, there are some custom start scripts available.
I also added some configure checks so that we can detect the absence of these header files when you first start building. This will hopefully reduce the pain and wasted developer hours futzing with headers and build environments and trying an hourlong build process again to “see what happens”.