$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: ghost_at_[hidden]
Date: 2007-08-25 00:34:33
Author: vladimir_prus
Date: 2007-08-25 00:34:31 EDT (Sat, 25 Aug 2007)
New Revision: 38919
URL: http://svn.boost.org/trac/boost/changeset/38919
Log:
Use -KPIC for shared libs. Addresses #1186.
Text files modified: 
   trunk/tools/build/v2/tools/builtin.jam |    29 +++++++++++++----------------           
   trunk/tools/build/v2/tools/sun.jam     |     7 +++++++                                 
   2 files changed, 20 insertions(+), 16 deletions(-)
Modified: trunk/tools/build/v2/tools/builtin.jam
==============================================================================
--- trunk/tools/build/v2/tools/builtin.jam	(original)
+++ trunk/tools/build/v2/tools/builtin.jam	2007-08-25 00:34:31 EDT (Sat, 25 Aug 2007)
@@ -333,31 +333,28 @@
     rule __init__ ( name     
         : project 
         : shared ?                                
-        : real-name ?
         : search *
         : action
     )
     {
-        abstract-file-target.__init__ $(name) : SEARCHED_LIB : $(project) 
-          : $(action) ;
+        abstract-file-target.__init__ $(name) exact : SEARCHED_LIB : $(project) 
+          : $(action) : ;
+        
+        local rn = [ apply-tag $(name) : [ tag-properties ] ] ;
+        if $(rn)
+        {
+           self.name = $(rn) ;
+        }        
         
         self.shared = $(shared) ;
-        self.real-name = $(real-name) ;
-        self.real-name ?= $(name) ;
         self.search = $(search) ;
     }
-    
-    
+        
     rule shared ( )
     {
         return $(self.shared) ;
     }
-    
-    rule real-name ( ) 
-    {
-        return $(self.real-name) ;
-    }
-    
+        
     rule search ( )
     {
         return $(self.search) ;
@@ -578,8 +575,8 @@
             local search = [ feature.get-values <search> : $(properties) ] ;
 
             a = [ new null-action $(property-set) ] ;
-            local t = [ new searched-lib-target $(name) : $(project) : $(shared)
-                            : [ feature.get-values <name> : $(properties) ]
+            local lib-name = [ feature.get-values <name> : $(properties) ] ;
+            local t = [ new searched-lib-target $(lib-name) : $(project) : $(shared)
                             : $(search)
                             : $(a)
                       ] ;
@@ -809,7 +806,7 @@
         {
             if [ type.is-derived [ $(s).type ] SEARCHED_LIB ]
             {
-                local name = [ $(s).real-name ] ;
+                local name = [ $(s).name ] ;
                 if [ $(s).shared ] 
                 {                    
                     fsa +=  $(name) ;
Modified: trunk/tools/build/v2/tools/sun.jam
==============================================================================
--- trunk/tools/build/v2/tools/sun.jam	(original)
+++ trunk/tools/build/v2/tools/sun.jam	2007-08-25 00:34:31 EDT (Sat, 25 Aug 2007)
@@ -56,6 +56,13 @@
 
 flags sun OPTIONS <address-model>32 : -m32 ;
 flags sun OPTIONS <address-model>64 : -m64 ;
+# On sparc, there's a difference between -Kpic
+# and -KPIC. The first is slightly more efficient,
+# but has the limits on the size of GOT table.
+# For minimal fuss on user side, we use -KPIC here.
+# See http://svn.boost.org/trac/boost/ticket/1186#comment:6
+# for detailed explanation.
+flags sun OPTIONS <link>shared : -KPIC ;
 
 flags sun.compile OPTIONS <cflags> ;
 flags sun.compile.c++ OPTIONS <cxxflags> ;