|
Boost-Build : |
From: Johan Nilsson (gclbb-jamboost_at_[hidden])
Date: 2003-09-17 06:17:13
"Vladimir Prus" <ghost_at_[hidden]> wrote in message
news:200309161806.36322.ghost_at_cs.msu.su...
> Johan Nilsson wrote:
>
[snip]
> >
> > [.bin_vms]
> > []
> > []
> > []
> >
> > (as expected?)
>
> Yep, as expected, but probably not as desired. It is intuitive to assumed
that
> $(p:P) returns empty string if $(p) has no parent directory component.
This
> seems to be explicit decision in jam code, but no rationale is provided.
>
> Could you please try applying the attached patch?
You did read the part about "voodoo logic", "black magic" and "woe be to
people who mess with this code" in pathvms.c, right? :-)
Anyway, the patch worked insofar as to producing the desired result, e.g.
$("[.binvms]":P) == ""). However the semantics doesn't seem to be identical
under windows where $("./binvms":P) => ".". Haven't tried under unix. Would
[.binvms] => [] => "" be a better choice? Maybe consulting the perforce
jamming list would be a good idea?
It was also possible to run 'jam -fbuild.jam", but the next problem was that
the ".rm" action isn't defined for VMS (which is straightforward to fix).
When I started looking through the build.jam file, however it looks like it
isn't terribly platform independent (only Windows and unices supported?).
Did any Mac users try "jam -fbuild.jam"?
One very important thing from my point of view is that multiple definitions
(e.g. include paths and defines) cannot be specified using multiple
identical switches with the compilers I'm using (DEC C and DEC C++). If you
try to execute "cc /DEFINE=X /DEFINE=DEBUG=1" only one of them will be
applied - same goes for "/INCLUDE". I guess the rationale for this is simply
that it is the "VMS way". The VMS way to pass "multivalued" definitions is
to use "/<switch>=(value1,value[=1],...,value_n)", e.g.
"/INCLUDE=(disk$user1:[common.boost.boost], disk$user2:[mystuff.hdr])
/DEFINES=(X=Y,NDEBUG)".
Is the above also the case when running Boost.Build (I hope not, but I
haven't come that far yet).
In perforce jam this was handled by some indirection using "DEFINES" and
"HDRS" (IIRC) with some help from FDefines, FIncludes et al. BTW - what
happened to compatibility mode - the distributed Jambase doesn't contain
that stuff anymore.
I'll give you as much help as I can to resolve this (or perhaps the other
way around :-)
// Johan
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