| # Copyright (C) 2005, 2006 The Trustees of Indiana University. |
| # Copyright (C) 2005 Douglas Gregor <doug.gregor -at- gmail.com> |
| |
| # Use, modification and distribution is subject to the Boost Software |
| # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
| # http://www.boost.org/LICENSE_1_0.txt) |
| |
| # Authors: Douglas Gregor |
| # Andrew Lumsdaine |
| |
| import mpi ; |
| import indirect ; |
| import python ; |
| |
| libraries = ; |
| |
| if [ mpi.configured ] |
| { |
| |
| 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 |
| communicator.cpp |
| computation_tree.cpp |
| content_oarchive.cpp |
| environment.cpp |
| exception.cpp |
| graph_communicator.cpp |
| group.cpp |
| intercommunicator.cpp |
| mpi_datatype_cache.cpp |
| mpi_datatype_oarchive.cpp |
| packed_iarchive.cpp |
| packed_oarchive.cpp |
| packed_skeleton_iarchive.cpp |
| packed_skeleton_oarchive.cpp |
| point_to_point.cpp |
| request.cpp |
| text_skeleton_oarchive.cpp |
| timer.cpp |
| : # Requirements |
| <library>../../serialization/build//boost_serialization |
| <library>/mpi//mpi [ mpi.extra-requirements ] |
| <define>BOOST_MPI_SOURCE=1 |
| <link>shared:<define>BOOST_MPI_DYN_LINK=1 |
| : # Default build |
| <link>shared |
| : # Usage requirements |
| <library>../../serialization/build//boost_serialization |
| <library>/mpi//mpi [ mpi.extra-requirements ] |
| ; |
| |
| libraries += boost_mpi ; |
| |
| if [ python.configured ] |
| { |
| 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 |
| : # 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 ] ) |
| { |
| message boost_mpi |
| : "warning: skipping optional Message Passing Interface (MPI) library." |
| : "note: to enable MPI support, add \"using mpi ;\" to user-config.jam." |
| : "note: to suppress this message, pass \"--without-mpi\" to bjam." |
| : "note: otherwise, you can safely ignore this message." |
| ; |
| } |
| |
| boost-install $(libraries) ; |