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

Atom Feed for Comments 6 Responses to “Microsoft Header Bingo”

  1. Justin Dolske Says:

    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?

  2. Benjamin Smedberg Says:

    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.

  3. Robert O'Callahan Says:

    I built with Windows 2008 SDK (6.1), a patched start script, and –disable-activex, –disable-activex-scripting and –disable-xpconnect-idispatch.

  4. Jonas Sicking Says:

    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.

  5. Ted’s Mozilla Blog » Blog Archive » MozillaBuild 1.3 Says:

    […] 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 […]

  6. Masahiro Yamada Says:

    I think , MDC needs this table.

Leave a Reply