|
Boost-Build : |
From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-12-03 09:38:00
Hi Pedro,
> this is something we've been doing here for a long time using some "hacks"
> into Boost.Build.
> I've been planning to send some patches but haven't yet had time to do it.
>
> I've just checked out the head of the CVS and tried it out. I've got a
> couple of doubts, though:
>
> - Since only the staged target gets a different name, what if I include the
> base target in the sources? Using the above example:
>
> lib foo : foo.cpp my_list ;
>
> foo.so will depend upon libmy_list.so and not libmy_list.so.1.32.0. Or did
> I get it wrong?
This is important question, that I, frankly, has missed. Indeed, foo.so will
depend on 'libmy_list.so', which is not what's intended. I see two solutions:
- since we relink when staging (now), it's probably possible to change the
sources to the staged version of library -- libmy_list.so.1.32.0.
- it's possible to apply this logic at each individual target. This will
eliminate the need to relink libraries when staging, but I wonder if there
any negative side effects?
> - In addition to this, I think versioning is horizontal to all platforms.
> E.g., for Windows what we do here is to change the DLL name but keep the
> import lib name:
>
> MyDLL.dll --> MyDLL.1.32.0.dll
> MyDLL.lib --> MyDLL.lib
This is another important question. Current Boost install adds the version
number to name and on Linux, *also* to suffix. The above scheme (add to name
on Windows, to suffix on Unix), is more reasonable, in my opinion, but I
don't know yet why Boost install works this way.
Why you don't change the name of import lib, BTW? Is import lib never
distributed installed?
> In order to do this, I changed generators.generated-targets so that, if a
> <version-number> property exists:
> - for gcc, the version number is appended to the name of SHARED_LIB
> targets. - for msvc, the version number is inserted between the name and
> the postfix of SHARED_LIB targets.
> - IMPORT_LIB targets are kept unchanged.
I see, this is a valid option -- though if we go this way I'd need to do
something more clean than changing generators.generated-targets.
- 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