Microsoft Header Bingo

Wednesday, April 16th, 2008
atlbase.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”.