I finally got boost to build with visual studio 2008 and 4-byte packing. Here is what I had to do:
1. Edit the tools\build\v2\user-config.jam and add:
using msvc : vc9 :
"D:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe" :
<compileflags>-DBOOST_HAS_ABI_HEADERS
<compileflags>-DBOOST_PROTO_MAX_ARITY=10
<compileflags>-DBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
<compileflags>-DBOOST_MPL_LIMIT_METAFUNCTION_ARITY=10
<compileflags>-DWIN32
<compileflags>-D_DEBUG
<compileflags>-D_LIB
<compileflags>-D_WIN32_WINNT=0x0501
<compileflags>-D_UNICODE
<compileflags>-DUNICODE
<compileflags>-DBOOST_ASIO_ENABLE_BUFFER_DEBUGGING
<compileflags>-Gm
<compileflags>-EHsc
<compileflags>-RTC1
<compileflags>-MTd
<compileflags>-Zp4
<compileflags>-W4
<compileflags>-c
<compileflags>-ZI
<compileflags>-TP
<linkflags>/MACHINE:X86
;
2. On the bjam command line use the options: --toolset=msvc-9.0 cxxflags=-Zp4
3. Edit boost/config/user.hpp:
// BOOST_ABI_PREFIX: A prefix header to include in place of whatever
// boost.config would normally select, any replacement should set up
// struct packing and alignment options as required.
#define BOOST_ABI_PREFIX <boost/config/abi/saplib_prefix.hpp>
// BOOST_ABI_SUFFIX: A suffix header to include in place of whatever
// boost.config would normally select, any replacement should undo
// the effects of the prefix header.
#define BOOST_ABI_SUFFIX <boost/config/abi/saplib_suffix.hpp>
The prefix header just contains #pragma pack(push,4) and the suffix just has #pragma pack(pop)
4. For some reason ASIO does not use the boost ABI header prefix and suffix. It has its own. Edit boost/asio/detail/push_options.hpp to use #pragma pack(push,4).
The boost build now completes cleanly (with no errors or warnings) on boost 1.43.
There seems to be some room for simplification or improvement here?