I've been trying to understand why the debug version of boost was attempting linkage with the DLL version of stlport (which I didn't build and I'm not using) and now I see that the runtime-debugging flag is specifying that the dynamic library must be used. This causes the static stlport to use the stlpdx cross namespace rather than the stlpd namespace. It is not obvious to me why debugging should require a dynamic library. Under code inspection this looks like a copy-paste oversight.

        if [ $(rproperties).get <runtime-debugging> ] = "on"
        {
            usage-requirements +=
                <define>_STLP_DEBUG=1
                <define>_STLP_DEBUG_UNINITIALIZED=1 ;
        }
        if [ $(rproperties).get <runtime-debugging> ] = "on"
        {
            usage-requirements +=
                <define>_STLP_USE_DYNAMIC_LIB=1 ;
        }

Why would it be checking for runtime-debugging twice? I think the second if should check for <runtime-link> which has the possible values "static" or "dynamic".

This problem looks related to this thread: http://lists.boost.org/boost-users/2007/09/30905.php, but I couldn't find the Boost.Build message that is a follow-up to that one. I haven't found a posted solution either. Looking at the CVS HEAD revision of stlport.jam, it hasn't changed since 1_34_1. So if this is a bug, it has not been fixed yet.

Thanks,

Eric