Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2006-09-08 01:42:53


On Monday 28 August 2006 16:55, Ilya Sokolov wrote:
> >>if you need, i can send you my project for testing. it builds 'fox' gui
> >>library under msvc, borland, dmc and mingw
> >
> > That would be appreciated. In particular, we'll be able to measure how
> > much of performance boost that gives.
>
> hi!
>
> this e-mail does not fit to the mailing list, so i've sent it directly.
>
> see attached develop.zip that contains:
> - patched bbv2 from head of boost cvs
> - latest stable fox release with jamfiles
> - readme.txt

Hi Ilya,
I've tried to build this example and got the following:

MkDir1 bin
MkDir1 bin/third_party
MkDir1 bin/third_party/fox
MkDir1 bin/third_party/fox/gcc
MkDir1 bin/third_party/fox/gcc/debug
gcc.compile.c++.pch bin/third_party/fox/gcc/debug/xincs.h.gch
third_party/fox/include/xincs.h:73:49: error: io.h: No such file or directory
third_party/fox/include/xincs.h:178:21: error: windows.h: No such file or
directory
third_party/fox/include/xincs.h:180:22: error: winsock2.h: No such file or
directory
third_party/fox/include/xincs.h:182:56: error: commctrl.h: No such file or
directory
third_party/fox/include/xincs.h:183:22: error: shellapi.h: No such file or
directory
third_party/fox/include/xincs.h:318:22: error: winspool.h: No such file or
directory

I suppose that file only works on windows.

Anyway, I've took a look on the PCH logic itself. I think the biggest issue
now is that pch.jam contains a lot rules that just forward to
toolset-specific rules.

I think we can solve this like this:

1. Add type CPP_PCH
2. Add a fallback generator for that type that does not produce anything
interesting.
3. For all supported toolset add generators for CPP_PCH, that have
<toolset>xxx in required properties.
4. Use calls to generator.override to give toolset-specific generators
priority over the fallback generators.

In the current Boost.Build model, the fallback generator should return
something in order not to be considered failed. Fortunately, I think it can
just return

   [ property-set.empty ]

which will make Boost.Build think the generator has succeeded, but won't have
any effect on anything.

Also, I forgot why we need 'cast'? I think it's a bit ugly, what problem does
it solve?

- Volodya


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk