Boost logo

Boost-Build :

From: Jurko (jurko_jamboost_at_[hidden])
Date: 2003-08-29 04:31:29


 Hi all.

I've been trying to get a grip on Boost.Build for the last two days
and here are some my notes I took down while exploring it. Hopefully
someone will find them helpful.

Note: I've been using the Milestone 6 tarball on a Windows XP
machine with BCB 5.0 and VC 6.0 compilers.

1. In the 'examples_v2/hello' project there are two extra lines in the
Jamfile file not mentioned in the docs. They try to set up some
symbolic links, however they also cause the build for that project to go
differently than specified in the docs. Because of them both release
and debug variants of the project are built every time (I'm not sure
whether that's intentional or not) even if you build it using 'bjam debug'.
The docs explicitly use this project to demonstrate how you can build
just one of those targets if you want to and which is built by default.

2. File new/user-config.jam that comes with the tarball has some
libraries specified (uncommented) by default which causes my clean
install of bjam to fail because those libraries (related to docbook) could
not be found on my system.
When I comment out these lines then all works fine but the user
docs say that you can run 'bjam --version' before getting into any
details on how to make modifications to the build system and here
that command was failing before modifying new/user-config.jam.

3. Boost.Jam docs (Make(1)-redux) say that on Unix and NT machines
$(var:P) and $(var:D) are the same. But that is not true because on my
machine $(var:P) contains the grist while $(var:D) doesn't.
Example:
aaa = "<xxx>yyy/shoot.me" ;
ECHO Without grist: $(aaa:D) ; ECHO With grist: $(aaa:P) ;

4. Modules don't work as Boost.Jam docs say they do and the code
given in those docs fails to work as well. There are no 'fully qualified'
'module.rule' names for rules in modules in Boost.Jam. In other
words the following code fails:
module mmm { rule rrr { ECHO Wambadidu... ; } }
mmm.rrr ;
Those 'fully qualified names' are an artifact added manually by the
Boost.Build system when using their modules.import rule for
importing modules instead of the built-in IMPORT rule.

5. I believe there is a bug at the end of kernel/bootstrap.jam in the
code for handling multiple --build-system command line options. The
comment there says that the last specified build system is used.
However, the second to last is used there ([-2] index instead of [-1]).
I tried this out:
bjam --build-system=aaa --build-system=bbb --build-system=ccc
bbb.jam: No such file or directory

6. I didn't find the :T variable modifier mentioned anywhere in the
docs. It seems to only turn all forward and backward slashes into
forward ones and is used for normalizing path strings.

7. The IMPORT built-in rule is used in kernel/modules.jam with an
extra fifth parameter LOCALIZE which I can not find documented
anywhere and I have no idea what it does. Any hints?

8. A funny side effect of the help system. If you do
bjam --help --help
the help screen is displayed twice :-))

So much from me for now. Please don't flame if any of the
comments sound to newbie-like - I'll get the hang of it eventually.

Best regards,
Jurko

---------------------------------
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software --0-1445773907-1062149489=:20639 Content-Type: text/html; charset=us-ascii

<DIV>
<DIV>&nbsp; Hi all.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; I've been trying to get a grip on Boost.Build for the last two days</DIV>
<DIV>and here are some my notes I took down while exploring it. Hopefully</DIV>
<DIV>someone will find them helpful.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Note: I've been using the Milestone 6 tarball on a Windows XP</DIV>
<DIV>machine with BCB 5.0 and VC 6.0 compilers.</DIV>
<DIV>&nbsp;</DIV>
<DIV>1. In the 'examples_v2/hello' project there are two extra lines in the</DIV>
<DIV>Jamfile file not mentioned in the docs. They try to set up some</DIV>
<DIV>symbolic links, however they also cause the build for that project to go</DIV>
<DIV>differently than specified in the docs. Because of them both release</DIV>
<DIV>and debug variants of the project are built&nbsp;every time (I'm not sure</DIV>
<DIV>whether that's intentional or not) even if you build it&nbsp;using 'bjam debug'.</DIV>
<DIV>The docs explicitly use this project to demonstrate how you can build</DIV>
<DIV>just one of those targets if you want to and which is built by default.</DIV>
<DIV>&nbsp;</DIV>
<DIV>2. File new/user-config.jam that comes with the tarball has some</DIV>
<DIV>libraries specified (uncommented) by default which causes my clean</DIV>
<DIV>install of bjam to fail because those libraries (related to docbook) could</DIV>
<DIV>not be found on my system.</DIV>
<DIV>&nbsp; When I comment out these lines then all works fine but the user</DIV>
<DIV>docs say that you can run 'bjam --version' before getting into any</DIV>
<DIV>details on how to make modifications to the build system and here</DIV>
<DIV>that command was failing before modifying new/user-config.jam.</DIV>
<DIV>&nbsp;</DIV>
<DIV>3. Boost.Jam docs (Make(1)-redux) say that on Unix and NT machines</DIV>
<DIV>$(var:P) and $(var:D) are the same. But that is not true because on my</DIV>
<DIV>machine $(var:P) contains the grist while $(var:D) doesn't.</DIV>
<DIV>&nbsp; Example:</DIV>
<DIV>&nbsp; aaa = "&lt;xxx&gt;yyy/shoot.me" ;</DIV>
<DIV>
<DIV>&nbsp; ECHO Without grist: $(aaa:D) ;
<DIV>&nbsp; ECHO With grist: $(aaa:P) ;</DIV>
<DIV>&nbsp;</DIV>
<DIV>4. Modules don't work as Boost.Jam docs say they do and the code</DIV>
<DIV>given in those docs fails to work as well. There are no 'fully qualified'</DIV>
<DIV>'module.rule' names&nbsp;for rules in modules in Boost.Jam. In other</DIV>
<DIV>words the following code fails:</DIV>
<DIV>&nbsp; module&nbsp;mmm { rule rrr { ECHO Wambadidu... ; } }</DIV>
<DIV>&nbsp; mmm.rrr ;</DIV>
<DIV>Those 'fully qualified names' are an artifact added manually by the</DIV>
<DIV>Boost.Build system when using their modules.import rule for</DIV>
<DIV>importing modules instead of the built-in IMPORT rule.</DIV>
<DIV>&nbsp;</DIV>
<DIV>5. I believe there is a bug at the end of kernel/bootstrap.jam in the</DIV>
<DIV>code for handling multiple --build-system command line options. The</DIV>
<DIV>comment there says that the last specified build system is used.</DIV>
<DIV>However, the second to last is used there ([-2] index instead of [-1]).</DIV>
<DIV>I tried this out:</DIV>
<DIV>&nbsp; bjam --build-system=aaa --build-system=bbb --build-system=ccc</DIV>
<DIV>&nbsp; bbb.jam: No such file or directory</DIV>
<DIV>&nbsp;</DIV>
<DIV>6. I didn't find the :T variable modifier mentioned anywhere in the</DIV>
<DIV>docs. It seems to only turn all forward and backward slashes into</DIV>
<DIV>forward ones and is used for normalizing path strings.</DIV>
<DIV>&nbsp;</DIV>
<DIV>7. The IMPORT built-in rule is used in kernel/modules.jam with an</DIV>
<DIV>extra fifth parameter LOCALIZE which I can not find documented</DIV>
<DIV>anywhere and I have no idea what it does. Any hints?</DIV>
<DIV>&nbsp;</DIV>
<DIV>8. A funny side effect of the help system. If you do</DIV>
<DIV>&nbsp; bjam --help --help</DIV>
<DIV>the help screen is displayed twice :-))</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; So much from me for now. Please don't flame if any of the</DIV>
<DIV>comments sound to newbie-like - I'll get the hang of it eventually.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; Best regards,</DIV>
<DIV>&nbsp;&nbsp;&nbsp; Jurko</DIV></DIV></DIV></DIV><p><hr SIZE=1>
Do you Yahoo!?<br>
<a href="http://us.rd.yahoo.com/evt=10469/*http://sitebuilder.yahoo.com">Yahoo! SiteBuilder</a> - Free, easy-to-use web site design software --0-1445773907-1062149489=:20639--


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