Subject: Re: [Boost-build] Rule referenced by <conditional> is invoked twice
From: Jurko GospodnetiÄ (jurko.gospodnetic_at_[hidden])
Date: 2012-07-24 06:05:00
> I see. Thank you for the answer.
As Steven said - this is by design as one indirect property rule's
property expansion may affect what properties get added by other (or
even the same) indirect rules afterwards and you should not count on the
rule getting called 'only once'.
However, there are cases when this rule is called more than is needed
due to a slight defect in how conditional properties are recognized in
Boost Build - by checking whether their definition contains a ':' colon
character (see property-set.init-conditional() in property-set.jam).
This is a slight defect because there actually exist non-conditional
properties that do contain a colon, e.g. indirect properties under
Windows contain the full path to their Jamfile, including the leading
drive indicator like 'C:'.
To see this in action run the newly added test case in
indirect_conditional.py with Unix/Cygwin gcc and with msvc. With gcc the
rule will get called only once, and with msvc it will get called twice.
I do not know if this 'defect' has any other consequences or not.
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