mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-05 08:51:19 -05:00
176 lines
5.1 KiB
Plaintext
176 lines
5.1 KiB
Plaintext
|
# Copyright David Abrahams 2001-2006. Distributed under 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)
|
||
|
|
||
|
import os ;
|
||
|
import indirect ;
|
||
|
import modules ;
|
||
|
import feature ;
|
||
|
|
||
|
import python ;
|
||
|
|
||
|
if ! [ python.configured ] && ! ( --without-python in [ modules.peek : ARGV ] )
|
||
|
{
|
||
|
# Attempt default configuration of python
|
||
|
import toolset : using ;
|
||
|
using python ;
|
||
|
}
|
||
|
|
||
|
if [ python.configured ] || ( --without-python in [ modules.peek : ARGV ] )
|
||
|
{
|
||
|
alias config-warning ;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
message config-warning
|
||
|
: "warning: No python installation configured and autoconfiguration"
|
||
|
: "note: failed. See http://www.boost.org/libs/python/doc/building.html"
|
||
|
: "note: for configuration instructions or pass --without-python to"
|
||
|
: "note: suppress this message and silently skip all Boost.Python targets"
|
||
|
;
|
||
|
}
|
||
|
|
||
|
rule find-py3-version
|
||
|
{
|
||
|
local versions = [ feature.values python ] ;
|
||
|
local py3ver ;
|
||
|
for local v in $(versions)
|
||
|
{
|
||
|
if $(v) >= 3.0
|
||
|
{
|
||
|
py3ver = $(v) ;
|
||
|
}
|
||
|
}
|
||
|
return $(py3ver) ;
|
||
|
}
|
||
|
|
||
|
py3-version = [ find-py3-version ] ;
|
||
|
|
||
|
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) ; } }
|
||
|
|
||
|
rule lib_boost_python ( is-py3 ? )
|
||
|
{
|
||
|
|
||
|
lib [ cond $(is-py3) : boost_python3 : boost_python ]
|
||
|
: # sources
|
||
|
numeric.cpp
|
||
|
list.cpp
|
||
|
long.cpp
|
||
|
dict.cpp
|
||
|
tuple.cpp
|
||
|
str.cpp
|
||
|
slice.cpp
|
||
|
|
||
|
converter/from_python.cpp
|
||
|
converter/registry.cpp
|
||
|
converter/type_id.cpp
|
||
|
object/enum.cpp
|
||
|
object/class.cpp
|
||
|
object/function.cpp
|
||
|
object/inheritance.cpp
|
||
|
object/life_support.cpp
|
||
|
object/pickle_support.cpp
|
||
|
errors.cpp
|
||
|
module.cpp
|
||
|
converter/builtin_converters.cpp
|
||
|
converter/arg_to_python_base.cpp
|
||
|
object/iterator.cpp
|
||
|
object/stl_iterator.cpp
|
||
|
object_protocol.cpp
|
||
|
object_operators.cpp
|
||
|
wrapper.cpp
|
||
|
import.cpp
|
||
|
exec.cpp
|
||
|
object/function_doc_signature.cpp
|
||
|
: # requirements
|
||
|
<link>static:<define>BOOST_PYTHON_STATIC_LIB
|
||
|
<define>BOOST_PYTHON_SOURCE
|
||
|
|
||
|
# On Windows, all code using Python has to link to the Python
|
||
|
# import library.
|
||
|
#
|
||
|
# On *nix we never link libboost_python to libpython. When
|
||
|
# extending Python, all Python symbols are provided by the
|
||
|
# Python interpreter executable. When embedding Python, the
|
||
|
# client executable is expected to explicitly link to
|
||
|
# /python//python (the target representing libpython) itself.
|
||
|
#
|
||
|
# 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 ]
|
||
|
|
||
|
# we prevent building when there is no python available
|
||
|
# as it's not possible anyway, and to cause dependents to
|
||
|
# fail to build
|
||
|
[ unless [ python.configured ] : <build>no ]
|
||
|
<dependency>config-warning
|
||
|
|
||
|
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
||
|
[ cond $(is-py3) : <python>$(py3-version) ]
|
||
|
|
||
|
-<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
|
||
|
<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
|
||
|
|
||
|
: # default build
|
||
|
<link>shared
|
||
|
: # usage requirements
|
||
|
<link>static:<define>BOOST_PYTHON_STATIC_LIB
|
||
|
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
||
|
;
|
||
|
}
|
||
|
|
||
|
rule lib_boost_numpy ( is-py3 ? )
|
||
|
{
|
||
|
numpy-include = [ python.numpy-include ] ;
|
||
|
lib [ cond $(is-py3) : boost_numpy3 : boost_numpy ]
|
||
|
: # sources
|
||
|
numpy/dtype.cpp
|
||
|
numpy/matrix.cpp
|
||
|
numpy/ndarray.cpp
|
||
|
numpy/numpy.cpp
|
||
|
numpy/scalars.cpp
|
||
|
numpy/ufunc.cpp
|
||
|
: # requirements
|
||
|
[ cond [ python.numpy ] : <library>/python//python_for_extensions ]
|
||
|
[ unless [ python.numpy ] : <build>no ]
|
||
|
<include>$(numpy-include)
|
||
|
<library>boost_python
|
||
|
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
||
|
[ cond $(is-py3) : <python>$(py3-version) ]
|
||
|
|
||
|
-<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
|
||
|
<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).python-tag
|
||
|
|
||
|
: # default build
|
||
|
<link>shared
|
||
|
: # usage requirements
|
||
|
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
||
|
;
|
||
|
}
|
||
|
|
||
|
libraries = boost_python ;
|
||
|
libraries3 = boost_python3 ;
|
||
|
if [ python.numpy ]
|
||
|
{
|
||
|
libraries += boost_numpy ;
|
||
|
libraries3 += boost_numpy3 ;
|
||
|
}
|
||
|
|
||
|
lib_boost_python ;
|
||
|
lib_boost_numpy ;
|
||
|
|
||
|
if $(py3-version)
|
||
|
{
|
||
|
lib_boost_python yes ;
|
||
|
lib_boost_numpy yes ;
|
||
|
libraries += $(libraries3) ;
|
||
|
}
|
||
|
|
||
|
boost-install $(libraries) ;
|