Boost logo

Boost :

Subject: Re: [boost] "I want everything" should build "out of the box" (on Windows)
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2009-07-28 04:18:35

On Mon, Jul 27, 2009 at 11:51 PM, KTC<ktc_at_[hidden]> wrote:
> Users on Microsoft Windows should be able to build boost with everything,
> both in terms of all supported variants and all boost libraries, with a
> single command to bjam assuming they have all the optional supporting
> libraries available.
> An user download boost, and want to build all the libraries that require
> building go read the Getting Started Guide
> <.../getting_started/windows.html#invoke-bjam> and see the after getting
> bjam they use the command
>  bjam --build-dir=build-directory toolset=toolset-name --build-type=complete
> stage
> So they enter that into the command prompt and see lots of warnings and
> notes about missing optional components. The warnings and notes itself is
> fine and informative. Actually, it's incomplete as it stand as it doesn't
> tell the user about Boost.IOStreams optional component requirement of bzip2
> & zlib headers. Okay, the user go and install all the optional components
> the warnings and notes tell them. After installing Python, ICU (building it
> first), Expat (building it first), and MPI (say MS-MPI), they try again.
> This time with the command becoming
>  bjam --toolset=... --build-dir=... --build-type=complete -sHAVE_ICU=1
> -sICU_PATH="..." -sEXPAT_INCLUDE="..." -sEXPAT_LIBPATH="..."
> -sBZIP2_SOURCE="..." -sZLIB_SOURCE="..." stage
> Nope, MPI requires modification of user-config.jam or building it on its own
> with --with-mpi. Why? No other optional components build that way. So they
> look to see how they do that, and does it.
> Second attempt and ... nope. New to 1.39 is the errors
>  error: link=shared together with runtime-link=static is not allowed
>  error: such property combination is either impossible
>  error: or too dangerious to be of any use
> due to the changes made as a result of
> <>. (Recently noted
> on
> <>.)
> While catching those errors is good, maybe it should be fixed as well such
> that it doesn't come up in the first place if someone do a
> --build-type=complete with ICU. So now the users have to build Boost.Regex
> separately from the rest of the library (after finding how to pass the link=
> & runtime-link= options). By the way, at this point I would like to point
> out how it's strange that -sHAVE_ICU=1 mean to build with ICU, but so is
> -sHAVE_ICU=0 .... :S
> And ... nope, even separately Boost.Regex still wouldn't build without
> errors. No one told them they need to rename icuin.lib, icuind.lib,
> icuind.pdb & icudt.lib from ICU to icui18n.lib, icui18nd.lib, icui18nd.pdb &
> icudata.lib respectively.
> With Boost.Regex built, we turn to the rest of the library with
> --without-regex. After waiting a while, we discover ... nope, Most of the
> library is built but not Boost.Graph. Sorry, this time no one told them they
> need to change Boost.Graph's Jamfile.v2 file with
> "<find-shared-library>expat" to "<find-shared-library>libexpatwMT" and
> adding "<define>XML_STATIC".
> Boost is great, it's free, it's flexible and I understand it's developed for
> free by volunteers, but its "installation" for someone that want every
> libraries could be improved. :-)

As direct as all this was, I have to say that I have experienced
*everything* he has, and more. The .bat file I have for building
boost is getting rather large with all the stuff I have it do just to
work-around so many things. I have mentioned a few of those on the
boost lists, multiple times actually, but nothing has come from it.
The build system definitely needs to be cleaned up a bit though, or at
least made more consistent. That Boost.Regex and ICU annoyances took
a bit of time to figure out when I first experienced each of those
errors, and the odd thing, those errors have been propagating through
many version now, and new ones seem to keep popping up, many of which
I have talked about on this list, how to fix it, why it should be
fixed, but no one that has commit privileges has yet done anything.

Boost list run by bdawes at, gregod at, cpdaniel at, john at