Here's a relatively clean patch done against trunk (v12) rev78148 with
a couple additional steps for VCExpress2008 (and likely 2010 as well),
though I know it's not exactly a priority:
http://pastebin.com/2w4WmHxs
I'd create code reviews, but it makes small related changes across ~10
different repositories, and it would probably just create confusion.
With this you can build "right out of the box" similar to the full
versions. Here's a list of the changes (the patch is relatively :
1) Header order changes in 3 files to pull in the ATL headers to pull
in intsafe.h to avoid multiple INTXX_MIN/MAX def warnings which get
flagged as errors with the warnings as errors flag. May just be a fix
to deal with the newer WinSDKs in general; intsafe.h doesn't wrap it's
INTXX_MIN/MAX defs around ifndefs - note that windows.h _doesn't_ pull
intsafe.h in, the atl headers do, though intsafe.h is part of the base
WinSDK.
2) Wrap Native Client's port_win.h's version of the INTXX_MIN/MAX
around ifndefs to avoid conflicts with intsafe.h (probably should be
there in the first place since it's a third party lib).
3) Changes to .rc files to avoid pulling in afxres.h (an MFC header -
it's available in the WinDDK) and winres.h which VCExpress doesn't
have (it's available in a WinSDK sample, but that kind of the purpose
of it). The main Chromium .rc files are already structured this way, I
just changed the rest and changed the output of grit to do the same.
4) A bit of tidying of the MSVC library linking conditional in
mini_installer, and add a compiler #define flag if MSVC is in the
environment variables along with a corresponding change to
mini_installer.cc implement just memset for express versions to avoid
to pulling in the stdc libs and keep the size optimizations.
- NOTE: The header include changing may case lint errors. If you
_REALLY_ don't want those you can put
// pull in atl headers now to avoid preprocessor conflicts
// with WinSDK intsafe.h - INTXX_MAX et al.
#if defined(_WIN32) || defined(_WIN64)
#include <atlbase.h>
#include <atlwin.h>
#endif
in the respective places in the files, as OS_WIN may not be available
due to lint.
-----------------
The base developer instructions work fine afterwards with a couple
tweaks for express versions:
http://www.chromium.org/developers/how-tos/build-instructions-windows
Under "Additional (free) downloads" under step 2:
X) Note that some (Non-SP) KB Patches will not inform you that they do
not apply if you use the express version of Microsoft Visual Studio
2008, don't worry about this [likely already included in the original
express download].
Under "Additional (free) downloads" after step 5:
6A) Download the WinDDK for the atl headers and libs -
http://msdn.microsoft.com/en-us/windows/hardware/gg487463.aspx. It
works fine, but you do not need to install the whole DDK. In the WDK
directory just install headers.msi, libs_x86fre.msi, and
libs_x64fre.msi; just grab the atl headers and atl*.lib libs, right
click the installers and uninstall afterwards. Add the include and lib
paths to your global settings (amd64 in the lib directory for x64
native client).
6B) To build x64 targets (Native Client basically) download:
http://www.cppblog.com/Files/xcpp/VCE64BIT_WIN7SDK.zip
Follow the readme instructions.
Further information behind that and x64 target building with express:
-
http://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edition-and-64-bit-targets/
-
http://www.cppblog.com/xcpp/archive/2009/09/09/vc2008express_64bit_win7sdk.html
----------------
After that it works just fine, and pretty easy for new devs.
Sort of a followup to:
http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/c31deb5bf8355870
Don't worry, should be my last thread about this, since it's "solved"
in my opinion.