Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r59987 - in trunk: . libs/mpi/build libs/python/build
From: ghost_at_[hidden]
Date: 2010-02-28 03:22:47


Author: vladimir_prus
Date: 2010-02-28 03:22:46 EST (Sun, 28 Feb 2010)
New Revision: 59987
URL: http://svn.boost.org/trac/boost/changeset/59987

Log:
Implement --python-buildid.

Fixes #3544.
Patch from Gaudenz Steinlin.

Text files modified:
   trunk/Jamroot | 12 ++++++++++++
   trunk/libs/mpi/build/Jamfile.v2 | 20 ++++++++++++++++++++
   trunk/libs/python/build/Jamfile.v2 | 20 ++++++++++++++++++++
   3 files changed, 52 insertions(+), 0 deletions(-)

Modified: trunk/Jamroot
==============================================================================
--- trunk/Jamroot (original)
+++ trunk/Jamroot 2010-02-28 03:22:46 EST (Sun, 28 Feb 2010)
@@ -90,6 +90,12 @@
 # --buildid=ID Adds the specified ID to the name of built
 # libraries. The default is to not add anything.
 #
+# --python-buildid=ID Adds the specified ID to the name of built
+# libraries that depend on Python. The default
+# is to not add anything. This ID is added in
+# addition t --buildid.
+#
+#
 # --help This message.
 #
 # --with-<library> Build and install the specified <library>
@@ -352,6 +358,12 @@
     constant BUILD_ID : [ regex.replace $(build-id) "[*\\/:.\"\' ]" "_" ] ;
 }
 
+# Python build id (only for Python libraries)
+local python-id = [ MATCH "^--python-buildid=(.*)" : [ modules.peek : ARGV ] ] ;
+if $(python-id)
+{
+ constant PYTHON_ID : [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ;
+}
 
 # This rule is called by Boost.Build to determine the name of target. We use it
 # to encode the build variant, compiler name and boost version in the target

Modified: trunk/libs/mpi/build/Jamfile.v2
==============================================================================
--- trunk/libs/mpi/build/Jamfile.v2 (original)
+++ trunk/libs/mpi/build/Jamfile.v2 2010-02-28 03:22:46 EST (Sun, 28 Feb 2010)
@@ -9,6 +9,7 @@
 # Andrew Lumsdaine
 
 import mpi ;
+import indirect ;
 import python ;
 
 libraries = ;
@@ -18,8 +19,27 @@
 
 project boost/mpi
   : source-location ../src
+ : requirements
+ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+ <tag>@$(__name__).tag
   ;
 
+rule tag ( name : type ? : property-set )
+{
+ local result = $(name) ;
+ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
+ {
+ if $(name) = boost_mpi_python && $(PYTHON_ID)
+ {
+ result = $(result)-$(PYTHON_ID) ;
+ }
+ }
+
+ # forward to the boost tagging rule
+ return [ indirect.call $(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+ $(result) : $(type) : $(property-set) ] ;
+}
+
 lib boost_mpi
   :
     broadcast.cpp

Modified: trunk/libs/python/build/Jamfile.v2
==============================================================================
--- trunk/libs/python/build/Jamfile.v2 (original)
+++ trunk/libs/python/build/Jamfile.v2 2010-02-28 03:22:46 EST (Sun, 28 Feb 2010)
@@ -3,6 +3,7 @@
 # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 import os ;
+import indirect ;
 import modules ;
 import feature ;
 
@@ -41,8 +42,27 @@
 
 project boost/python
   : source-location ../src
+ : requirements
+ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+ <tag>@$(__name__).tag
   ;
 
+rule tag ( name : type ? : property-set )
+{
+ local result = $(name) ;
+ if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
+ {
+ if $(name) = boost_python && $(PYTHON_ID)
+ {
+ result = $(result)-$(PYTHON_ID) ;
+ }
+ }
+
+ # forward to the boost tagging rule
+ return [ indirect.call $(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+ $(result) : $(type) : $(property-set) ] ;
+}
+
 rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } }
 rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk