Jamfile.v2 4.22 KB
# Copyright (C) 2005, 2006 The Trustees of Indiana University.
# Copyright (C) 2005 Douglas Gregor <doug.gregor -at- gmail.com>
# Copyright (c) 2018 Stefan Seefeld

# 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 ;
import option ;
import regex ;

#
# The `version-suffix` rule really belongs into python.jam, and
# should be moved there. `split-version` is only duplicated here
# as a prerequisite. (See https://github.com/boostorg/build/pull/290)
#


mpi_python_libs = ;

if [ mpi.configured ]
{

project boost/mpi
  : source-location ../src
  ;

lib boost_mpi
  :
    broadcast.cpp
    cartesian_communicator.cpp
    communicator.cpp
    computation_tree.cpp
    content_oarchive.cpp
    environment.cpp
    error_string.cpp
    exception.cpp
    graph_communicator.cpp
    group.cpp
    intercommunicator.cpp
    mpi_datatype_cache.cpp
    mpi_datatype_oarchive.cpp
    offsets.cpp
    packed_iarchive.cpp
    packed_oarchive.cpp
    packed_skeleton_iarchive.cpp
    packed_skeleton_oarchive.cpp
    point_to_point.cpp
    request.cpp
    status.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
    <local-visibility>global
  : # Default build
    <link>shared
  : # Usage requirements
    <library>../../serialization/build//boost_serialization
    <library>/mpi//mpi [ mpi.extra-requirements ]
  ;

  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
                <python-debugging>on:<define>BOOST_DEBUG_PYTHON
                -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
                <tag>@python-tag
                <conditional>@python.require-py
                <local-visibility>global

              : # 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//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
                <python-debugging>on:<define>BOOST_DEBUG_PYTHON
              ;

            mpi_python_libs = boost_mpi_python mpi ;
  }
}
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." 
      ;
}
else
{
  alias boost_mpi ;
}

boost-install boost_mpi $(mpi_python_libs) ;