Boost logo

Boost-Build :

From: Rene Rivera (grafik666_at_[hidden])
Date: 2002-01-31 12:54:51


On 2002-01-28 at 12:20 PM, david.abrahams_at_[hidden] (David Abrahams) wrote:

>From: "Rene Rivera" <grafik666_at_[hidden]>
>
>> * Changed the target name of DLLs to be $(PREDLL)<target name>$(SUFDLL).
>On
>> Windows I've set PREDLL to "", and to "lib" everywhere else.
>
>Consider doing this for static libs as well; that's generally how they're
>named on unix, isn't it?
>
>> * Locally changed "libs/regex/build/Jamfile",
>"libs/thread/build/Jamfile",
>> and "libs/python/build/Jamfile" to account for the DLL name change.
>>
>> Before I check these changes in question is... Are there any problems that
>the
>> name change of the DLL might cause?
>
>python.jam uses PYD targets which are mostly derived from DLL targets. You
>should check to make sure there are no bad interactions.

After some checking, and lots of building :-\ It does not interfere. This is
because the PYDs are different target types, so those target names stay the
same.

>Also, in the existing system if you've already supplied a suffix for the
>target you get no modification, so:
>
>dll foobar.nonstandard-suffix : .... ;
>
>will build a shared lib called foobar.nonstandard-suffix, not
>foobar.nonstandard-suffix.so, libfoobar.nonstandard-suffix.so, libfoobar.so,
>etc.
>
>Consider whether that needs to be preserved.
>
>It's currently used by boost only to build dlls and static libs with the
>same base name, which is very clumsy at the moment since the user has to use
>$(SUFDLL) explicitly.

As far as I can tell specifying the "complete" target name is only used to
differentiate a static lib from a dll. So it's not a functionality that needs
to be preserved as long as we can still generate the correct final target
(which are the changes I made to the Jamfiles which do that). And specifying
the suffix always, and still, works.

But this does bring up the problem of building both static libs and dlls with
the same basename. As you suggest it does seem like a good idea to rename
static libs also to comform to platform practices but we can't do that unless
we support some way of differentiating them. And the only thing I can think of
is to allow LIB and DLL targets to have the same basename. So this would
become possible:

lib foobar : fubar.cpp ;
dll foobar : fubar.cpp ;

The somewhat easy way to allow this would be to traslate the above always to:

lib foobar$(SUFLIB) : fubar.cpp ;
dll foobar$(SUFDLL) : fubar.cpp ;

But then would it not also be expected to be able to the same to other target
types?

-- grafik - Don't Assume Anything
-- rrivera_at_[hidden] - grafik_at_[hidden]
-- 102708583_at_icq - Grafik666_at_AIM - Grafik_at_[hidden]

 


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