Boost logo

Boost :

From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2005-06-14 09:40:20


Excuse my being a little insistent on this,but I think the problem
should be addressed one way or another, as it's causing tons
of regressions.
I've prepared a patch for tools/build/v1/boost-base.jam (attached).
Is it OK to commit?

Original message:

autolink assumes the following toolset tags for libraries generated
under the MSVC familiy of compilers:

6.0, 6.5 --> "v6"
7.0 --> "vc7"
7.1 --> "vc71"
8.0 --> "vc80"

Yet tools/build/v1/boost-base.jam does the following:

        local include-minor-version = YES ;
        switch $(toolset)
        {
            case borland* : toolset-tag += bcb ;
            case como* : toolset-tag += como ;
            case cwpro8* : toolset-tag += cw 8 ;
            case cwpro9* : toolset-tag += cw 9 ;
            case cw-* : toolset-tag += cw ; include-minor-version = ;
            case darwin* : toolset-tag += ;
            case edg* : toolset-tag += edg ;
            case gcc* : toolset-tag += gcc ;
            case intel-linux* : toolset-tag += il ;
            case intel-win32* : toolset-tag += iw ;
            case kcc* : toolset-tag += kcc ;
            case kylix* : toolset-tag += bck ;
            case metrowerks* : toolset-tag += cw ;
            case mingw* : toolset-tag += mgw ;
            case mipspro* : toolset-tag += mp ;
            case msvc* : toolset-tag += vc 6 ;
            case sunpro* : toolset-tag += sw ;
            case tru64cxx* : toolset-tag += tru ;
            case vacpp* : toolset-tag += xlc ;
            case vc[678][_]* :
            {
                toolset-tag += vc ;
                toolset-tag += [ MATCH "vc([678])[_]([0123456789]*)" :
$(toolset) ] ;
            }
            case vc[678]* :
            {
                toolset-tag += vc ;
                toolset-tag += [ MATCH "vc([678])" : $(toolset) ] ;
            }
            case * :
            toolset-tag += [ MATCH "^([^-]*)" : $(toolset) ] ;
        }
        if $(include-minor-version)
        {
            toolset-tag += [ MATCH
"[-]([0123456789]+)[_.]([0123456789]*)" : $(toolset) ] ;
        }
        else
        {
            toolset-tag += [ MATCH "[-]([0123456789]+)[_.][0123456789]*"

: $(toolset) ] ;
        }

which does not match autolink expectations for the following toolsets
adhering to the new naming conventions:

vc-6_5 --> vc65 (expected vc6)
vc-7_0 --> vc70 (expected v7)

I guess it suffices to apply the following postrule in boost-base.jam

switch $(toolset-tag)
{
    case vc6* : toolset-tag = vc6 ;
    case vc70 : toolset-tag = vc7 ;
}

but someone more acquainted with bjam than me might come up with a
nicer reformulation.

Currently, this is breaking dozens of tests in the metacomm engine,
which recently switched to vc-6_5-stlport and vc-7_0 toolsets.

Do I commit this? Someone can tackle the issue more elegantly? Thank
you,

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo

2672a2673,2681
>
> # boost/config/auto_link.hpp expects toolset tags that do not always
> # match the above algorithm for MSVC 6.x and 7.0.
> #
> switch $(toolset-tag)
> {
> case vc6* : toolset-tag = vc 6 ;
> case vc70 : toolset-tag = vc 7 ;
> }


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk