mirror of https://gitee.com/bigwinds/arangodb
152 lines
4.4 KiB
Plaintext
152 lines
4.4 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
|
|
: 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) ; } }
|
|
|
|
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) ]
|
|
: # default build
|
|
<link>shared
|
|
: # usage requirements
|
|
<link>static:<define>BOOST_PYTHON_STATIC_LIB
|
|
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
|
;
|
|
|
|
}
|
|
|
|
lib_boost_python ;
|
|
boost-install boost_python ;
|
|
|
|
if $(py3-version)
|
|
{
|
|
lib_boost_python yes ;
|
|
boost-install boost_python3 ;
|
|
}
|