List Info

Thread: A few issues




A few issues
user name
2006-09-27 20:41:10
I was testing BBv2 from RC_1_34_0 on some of my builds that
use STLport 
and I ran across a few small issues.  These tests were all
on a WinXP 
machine and I was using STLport 5.1 RC2 with VC8 and VC8
cross-compiling 
for Windows CE 5.0/x86.  If these issues have already been
mentioned 
previously, please forgive my duplication:

1) In line 223 of stlport.jam, runtime-debugging=on is
checked to decide 
whether <define>_STLP_USE_DYNAMIC_LIB=1 should be
added to the usage 
requirements.  Based on what that flag means and also on the
comments in 
the header of stlport.jam, it seemed like link=shared should
be checked 
here (rather than runtime-debugging=on).

2) When building libraries with STLport 5.1 and using
link=shared and 
runtime-link=shared, the link.dll action was failing with

   LINK : fatal error LNK1181: cannot open input file
'stlportstld.5.lib'

The STLport 5.x libraries use names like stlportxxx.5.x.lib.
 The 
stlport.jam file correctly reflects this v5 naming
convention (lines 
130-143), but the .1 in stlportstld.5.1 was getting dropped
before the 
library name shows up the link RSP file.  After some
investigation, it 
appears that this is occurring in msvc.jam in line 738 where
libraries 
are added to the link RSP file with the expression:

   $(FINDLIBS_ST:S=.lib)

The :S= modifier is treating the .1 in stlportstd.5.1 as a
suffix and 
dutifully removing it.  It seems like this can be fixed by
either 
removing the :S= modifier in msvc.jam or adding a .lib in
stlport.jam. 
I wasn't clear to me which method is preferred.

3) Since I compile different builds of the STLport libraries
for 
vc8-win32 and vc8-winCE-x86, my user-config.jam up is set up
like so:

  using stlport : 5.1~vc8 :
C:/STLPort/STLPort-5.1RC2/stlport
                           
C:/STLPort/STLPort-5.1RC2/lib/vc8 ;
  using stlport : 5.1~evc8~x86 :
C:/STLPort/STLPort-5.1RC2/stlport
                                
C:/STLPort/STLPort-5.1RC2/lib/evc8-x86 ;

When I specify a specific version of stlport in my build
request such as:

bjam --v2 --prefix=C:Boost --with-signals debug
msvc/threading=multi/link=shared/runtime-link=shared/stdlib=
stlport-5.1~vc8 
install

then I get a build path that looks like this:

C:CVSBoost_1_34_0boostbin.v2libssignalsbuildmsvc-8.0
debug
stdlib-stlport-5.1~vc8stdlib-stlport-5.1~vc8threading-mul
ti

(Note that 'stdlib-stlport-5.1~vc8' is repeated twice.)

This is a small issue, but I spent a little bit of time
looking into it. 
  Apparently the duplication comes from line 260 in
stlport.jam where 
<stdlib>stlport-$(self.version) is added to the usage
requirements when 
a specific STLport version is requested (as opposed to just 
<stdlib>stlport getting added when only a single
version of STLport is 
available).  At the time when Boost.Build merges the STLport
usage 
requirements with the properties in the original build
request, the 
<stdlib>stlport-5.1~vc8 property from the build
request has been split 
into <stdlib>stlport and
<stdlib-stlport:version>5.1~vc8 properties.  As 
a result, the usage requirement for
<stdlib>stlport-5.1~vc8 specified on 
line 260 of stlport.jam does not seem to get filtered out as
a 
duplicate.  So then later on when <stdlib>stlport and 
<stdlib-stlport:version> are back as a single propery
and the build path 
is created, <stdlib>stlport-5.1~vc8 ends up being in
the property set 
twice and causes the duplication in the directory structure.
 In my 
tests, if line 259-260 of stlport.jam are changed to:

  usage-requirements +=
     <stdlib>stlport
<stdlib-stlport:version>$(self.version) ;

then the duplication is eliminated.  However, I'm certainly
not a 
Boost.Build expert and I may be missing something or there
may be a 
better solution.

Thanks for your help,
-Dave

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )