blob: 079160218ea216c16029803b9de293632d565047 [file] [log] [blame]
--- a/boostcpp.jam
+++ b/boostcpp.jam
@@ -104,7 +104,7 @@
python-id = [ option.get "python-buildid" ] ;
if $(python-id)
{
- PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
+ PYTHON_ID = [ regex.replace $(python-id) [*\\/:\"\'] _ ] ;
}
--- a/libs/mpi/build/Jamfile.v2
+++ b/libs/mpi/build/Jamfile.v2
@@ -58,81 +58,50 @@
if [ python.configured ]
{
- py2-version = [ py-version 2 ] ;
- py3-version = [ py-version 3 ] ;
-
- # These library names are synchronized with those defined by Boost.Python, see libs/python/build/Jamfile.
- lib_boost_python(2) = boost_python ;
- lib_boost_python(3) = boost_python3 ;
-
- lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
- lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
-
- lib_boost_mpi_python(2) = boost_mpi_python ;
- lib_boost_mpi_python(3) = boost_mpi_python3 ;
-
- lib_boost_mpi_python($(py2-version)) = $(lib_boost_mpi_python(2)) ;
- lib_boost_mpi_python($(py3-version)) = $(lib_boost_mpi_python(3)) ;
-
- for local N in 2 3
- {
- if $(py$(N)-version)
- {
- lib $(lib_boost_mpi_python($(py$(N)-version)))
- : # Sources
- python/serialize.cpp
- : # Requirements
- <library>boost_mpi
- <library>/mpi//mpi [ mpi.extra-requirements ]
- <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
- <link>shared:<define>BOOST_MPI_DYN_LINK=1
- <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
- <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
- <define>BOOST_MPI_PYTHON_SOURCE=1
- -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
- <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
- <python>$(py$(N)-version)
- : # Default build
- <link>shared
- : # Usage requirements
- <library>/mpi//mpi [ mpi.extra-requirements ]
- ;
-
- python-extension mpi
- : # Sources
- python/collectives.cpp
- python/py_communicator.cpp
- python/datatypes.cpp
- python/documentation.cpp
- python/py_environment.cpp
- python/py_nonblocking.cpp
- python/py_exception.cpp
- python/module.cpp
- python/py_request.cpp
- python/skeleton_and_content.cpp
- python/status.cpp
- python/py_timer.cpp
- : # Requirements
- <library>/boost/python//$(lib_boost_python($(py$(N)-version)))
- <library>$(lib_boost_mpi_python($(py$(N)-version)))
- <library>boost_mpi
- <library>/mpi//mpi [ mpi.extra-requirements ]
- <link>shared:<define>BOOST_MPI_DYN_LINK=1
- <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
- <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
- <link>shared <runtime-link>shared
- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
- <python>$(py$(N)-version)
- ;
-
- libraries += $(lib_boost_mpi_python($(py$(N)-version))) ;
- }
- else
- {
- alias $(lib_boost_mpi_python($(N))) ;
- }
- }
+ lib boost_mpi_python
+ : # Sources
+ python/serialize.cpp
+ : # Requirements
+ <library>boost_mpi
+ <library>/mpi//mpi [ mpi.extra-requirements ]
+ <library>/boost/python//boost_python
+ <link>shared:<define>BOOST_MPI_DYN_LINK=1
+ <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
+ <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
+ <define>BOOST_MPI_PYTHON_SOURCE=1
+ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+ <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
+ : # Default build
+ <link>shared
+ : # Usage requirements
+ <library>/mpi//mpi [ mpi.extra-requirements ]
+ ;
+ libraries += boost_mpi_python ;
+
+ python-extension mpi
+ : # Sources
+ python/collectives.cpp
+ python/py_communicator.cpp
+ python/datatypes.cpp
+ python/documentation.cpp
+ python/py_environment.cpp
+ python/py_nonblocking.cpp
+ python/py_exception.cpp
+ python/module.cpp
+ python/py_request.cpp
+ python/skeleton_and_content.cpp
+ python/status.cpp
+ python/py_timer.cpp
+ : # Requirements
+ <library>/boost/python//boost_python
+ <library>boost_mpi_python
+ <library>boost_mpi
+ <library>/mpi//mpi [ mpi.extra-requirements ]
+ <link>shared:<define>BOOST_MPI_DYN_LINK=1
+ <link>shared:<define>BOOST_MPI_PYTHON_DYN_LINK=1
+ <link>shared:<define>BOOST_PYTHON_DYN_LINK=1
+ <link>shared <runtime-link>shared
+ ;
}
}
else if ! ( --without-mpi in [ modules.peek : ARGV ] )
--- a/libs/python/build/Jamfile
+++ b/libs/python/build/Jamfile
@@ -31,26 +31,23 @@
;
}
-py2-version = [ py-version 2 ] ;
-py3-version = [ py-version 3 ] ;
-
project boost/python
: source-location ../src
;
rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } }
rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
-local rule eq ( a : b ) { if $(a) = $(b) { return 1 ; } }
-
-lib_boost_python(2) = boost_python ;
-lib_boost_python(3) = boost_python3 ;
-
-lib_boost_python($(py2-version)) = $(lib_boost_python(2)) ;
-lib_boost_python($(py3-version)) = $(lib_boost_python(3)) ;
-rule lib_boost_python ( version )
+rule lib_boost_python
{
- lib $(lib_boost_python($(version)))
+ local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ;
+ local python2 ;
+ if $(python_major_version) = 2
+ {
+ python2 = true ;
+ }
+
+ lib boost_python
: # sources
list.cpp
long.cpp
@@ -96,7 +93,8 @@
# python_for_extensions is a target defined by Boost.Build to
# provide the Python include paths, and on Windows, the Python
# import library, as usage requirements.
- [ cond [ python.configured ] : <library>/python//python_for_extensions ]
+ [ cond $(python2) : <cxxflags>-fno-strict-aliasing ]
+ [ cond [ python.configured ] : <library>/python//python ]
# we prevent building when there is no python available
# as it's not possible anyway, and to cause dependents to
@@ -105,13 +103,10 @@
<dependency>config-warning
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
- <python>$(version)
-<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
- <conditional>@python.require-py
-
: # default build
<link>shared
: # usage requirements
@@ -120,68 +115,8 @@
;
}
-lib_boost_numpy(2) = boost_numpy ;
-lib_boost_numpy(3) = boost_numpy3 ;
-
-lib_boost_numpy($(py2-version)) = $(lib_boost_numpy(2)) ;
-lib_boost_numpy($(py3-version)) = $(lib_boost_numpy(3)) ;
-
-rule lib_boost_numpy ( version )
-{
- numpy-include = [ python.numpy-include ] ;
- lib $(lib_boost_numpy($(version)))
- : # sources
- numpy/dtype.cpp
- numpy/matrix.cpp
- numpy/ndarray.cpp
- numpy/numpy.cpp
- numpy/scalars.cpp
- numpy/ufunc.cpp
- : # requirements
- <link>static:<define>BOOST_NUMPY_STATIC_LIB
- <define>BOOST_NUMPY_SOURCE
- [ cond [ python.numpy ] : <library>/python//python_for_extensions ]
- [ unless [ python.numpy ] : <build>no ]
- <include>$(numpy-include)
- <library>$(lib_boost_python($(version)))
- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
- <python>$(version)
+libraries = boost_python ;
- -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
- <tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
-
- <conditional>@python.require-py
-
- : # default build
- <link>shared
- : # usage requirements
- <link>static:<define>BOOST_NUMPY_STATIC_LIB
- <python-debugging>on:<define>BOOST_DEBUG_PYTHON
- ;
-}
-
-libraries = ;
-
-for local N in 2 3
-{
- if $(py$(N)-version)
- {
- lib_boost_python $(py$(N)-version) ;
- libraries += $(lib_boost_python($(py$(N)-version))) ;
- }
- else
- {
- alias $(lib_boost_python($(N))) ;
- }
- if $(py$(N)-version) && [ python.numpy ]
- {
- lib_boost_numpy $(py$(N)-version) ;
- libraries += $(lib_boost_numpy($(py$(N)-version))) ;
- }
- else
- {
- alias $(lib_boost_numpy($(N))) ;
- }
-}
+lib_boost_python ;
boost-install $(libraries) ;