Microsoft Header Bingo
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”.
April 16th, 2008 at 3:24 pm
Lest people read that the wrong way… I thought you *can* build Firefox (on Windows) using only free tools, but you may need to disable one or both of jemalloc / parental-controls?
April 16th, 2008 at 4:07 pm
You can build Firefox on Windows using free tools. To do so, you should install
* VC++ Express 2005 (version 8)
* the Windows 2003 SDK
* the Windows Vista SDK
And use the custom start scripts linked above.
April 16th, 2008 at 5:38 pm
I built with Windows 2008 SDK (6.1), a patched start script, and –disable-activex, –disable-activex-scripting and –disable-xpconnect-idispatch.
April 16th, 2008 at 9:19 pm
Actually, what was the most annoying with the recent parental-control landing was that there was no warning what so ever that this was coming. One day my build just failed. And there was no documented recourse at all, especially if you were on MSVC 7.x.
I understand that it’s not easy to know when you become dependent on some headerfile that might not exist in all officially supported environments. Ideally we would have more tinderboxes building with more varieties of the supported environments so we can back out as soon as the build requirements effectively changes.
June 16th, 2008 at 6:41 pm
[…] an older Platform SDK at the same time, if you’re using Visual C++ 2005 Express and playing Microsoft header bingo. See the build prerequisites page for more […]
July 6th, 2008 at 11:22 am
I think , MDC needs this table.