[Bf-committers] scons and static libs

Stephen Swaney sswaney at centurytel.net
Thu Apr 17 14:53:28 CEST 2008

On Wed, Apr 16, 2008 at 09:54:38PM -0700, Ken Hughes wrote:
> I don't know if the other platform managers have this issue, but it's a 
> bit of a pain to make the releases using the minimum number of shared 
> libraries.  My solution has been to create a separate directory 
> containing the static libs I want to use and then override the default 
> scons variables  for them.  For example, I link OpenAL, OpenEXR, and PNG 
> statically.  I can't use the "out-of-the-box" static libs since gcc 
> needs to separate the shared and static libs with a "-Xlinker -Bstatic".
> I'd like to propose one of two solutions:
> (1) Specify the libs using a shared (".so") or static (".a") suffix.  
> Parse each BF_*_LIB string and tack the lib into either a shared or 
> static list, then send these to the linker separated by the appropriate 
> platform-specific flags ("-Xlinker -Bstatic" for linux, for example).  I 
> played with the output of scons and found that this worked reliably, 
> including the shared or static OpenGL libs.
> (2) The static OpenGL libs are handled by passing the explicit static 
> libs to gcc.  This can't be done as far as I can tell using something 
> like BF_FREETYPE_LIB='/usr/lib/libfreetype.a' because scons expands 
> BF_*_LIB to a string of libs with "-l" tacked on the front of each.  I 
> played around with tools/Blender.py and found it wasn't too hard to 
> check for something like "/usr" or ".a" in the BF_*_LIB strings and if 
> true tack those libs onto the static library list.

Of the two solutions, #1 sounds the least hacky (at least before the
coffee kicks in!).

Thinking out loud, maybe we need a separate BF_STATIC_LIBS to hold our
statically linked items.

Stephen Swaney			
sswaney at centurytel.net

More information about the Bf-committers mailing list