2007-01-10 17:11:43 +01:00
|
|
|
import python ;
|
2014-03-23 08:34:18 +01:00
|
|
|
import feature : feature ;
|
2014-11-28 19:58:18 +01:00
|
|
|
import project ;
|
|
|
|
import targets ;
|
|
|
|
import "class" : new ;
|
2007-01-10 17:11:43 +01:00
|
|
|
|
2007-06-13 06:22:06 +02:00
|
|
|
use-project /torrent : ../.. ;
|
|
|
|
|
2009-03-02 06:43:56 +01:00
|
|
|
lib boost_python : : <target-os>darwin <name>boost_python-mt $(boost-library-search-path) ;
|
|
|
|
lib boost_python : : <name>boost_python ;
|
2008-05-08 03:53:05 +02:00
|
|
|
|
2014-03-23 08:34:18 +01:00
|
|
|
feature visibility : default hidden : composite propagated link-incompatible ;
|
|
|
|
feature.compose <visibility>hidden : <cflags>-fvisibility=hidden <cxxflags>-fvisibility-inlines-hidden ;
|
|
|
|
|
2014-03-31 08:43:29 +02:00
|
|
|
feature libtorrent-link : static shared : ;
|
2014-11-28 19:58:18 +01:00
|
|
|
feature libtorrent-python-pic : off on : composite propagated link-incompatible ;
|
2014-04-01 04:12:11 +02:00
|
|
|
feature.compose <libtorrent-python-pic>on : <cflags>-fPIC ;
|
2014-03-31 08:43:29 +02:00
|
|
|
|
2008-11-23 21:41:24 +01:00
|
|
|
rule libtorrent_linking ( properties * )
|
|
|
|
{
|
|
|
|
local result ;
|
|
|
|
|
2014-12-02 11:18:07 +01:00
|
|
|
if ! <target-os>windows in $(properties)
|
|
|
|
&& <toolset>gcc in $(properties)
|
2008-11-23 21:41:24 +01:00
|
|
|
{
|
2014-04-01 04:12:11 +02:00
|
|
|
result += <libtorrent-python-pic>on ;
|
2008-11-23 21:41:24 +01:00
|
|
|
}
|
|
|
|
|
2012-03-22 04:33:54 +01:00
|
|
|
if <toolset>gcc in $(properties)
|
2013-04-27 21:35:41 +02:00
|
|
|
|| <toolset>darwin in $(properties)
|
|
|
|
|| <toolset>clang in $(properties)
|
|
|
|
|| <toolset>clang-darwin in $(properties)
|
2012-03-22 04:33:54 +01:00
|
|
|
{
|
2014-03-23 08:34:18 +01:00
|
|
|
result += <visibility>hidden ;
|
|
|
|
|
|
|
|
if ( <toolset>gcc in $(properties) )
|
|
|
|
{
|
|
|
|
result += <linkflags>-Wl,-Bsymbolic ;
|
|
|
|
}
|
2012-03-22 04:33:54 +01:00
|
|
|
}
|
2008-12-20 22:12:39 +01:00
|
|
|
|
2011-07-19 03:54:57 +02:00
|
|
|
if <boost>source in $(properties)
|
|
|
|
{
|
2014-12-02 11:18:07 +01:00
|
|
|
# linux must link dynamically against boost python because it pulls
|
|
|
|
# in libpthread, which must be linked dynamically since we're building a .so
|
|
|
|
# (the static build of libpthread is not position independent)
|
2014-04-02 05:34:53 +02:00
|
|
|
if <boost-link>shared in $(properties) || <target-os>linux in $(properties)
|
2011-07-19 03:54:57 +02:00
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/boost/python//boost_python/<link>shared ;
|
2011-07-19 03:54:57 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/boost/python//boost_python/<link>static ;
|
2013-04-27 21:35:41 +02:00
|
|
|
}
|
|
|
|
|
2014-03-31 08:43:29 +02:00
|
|
|
if <libtorrent-link>shared in $(properties)
|
2013-04-27 21:35:41 +02:00
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/torrent//torrent/<link>shared/<boost-link>shared ;
|
2013-04-27 21:35:41 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/torrent//torrent/<link>static/<boost-link>static ;
|
2011-07-19 03:54:57 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
result += <library>boost_python ;
|
2014-03-23 08:34:18 +01:00
|
|
|
|
2014-03-31 08:43:29 +02:00
|
|
|
if <libtorrent-link>shared in $(properties)
|
2014-03-23 08:34:18 +01:00
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/torrent//torrent/<link>shared/<boost-link>shared ;
|
2014-03-23 08:34:18 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-03-31 08:43:29 +02:00
|
|
|
result += <library>/torrent//torrent/<link>static/<boost-link>static ;
|
2014-03-23 08:34:18 +01:00
|
|
|
}
|
2011-07-19 03:54:57 +02:00
|
|
|
}
|
|
|
|
|
2008-11-23 21:41:24 +01:00
|
|
|
return $(result) ;
|
|
|
|
}
|
|
|
|
|
2014-11-28 19:58:18 +01:00
|
|
|
# this is a copy of the rule from boost-build's python-extension, but without
|
|
|
|
# specifying <suppress-import-lib>no as a mandatory property. That property
|
|
|
|
# would otherwise cause build failures because it suppresses linking against the
|
|
|
|
# runtime library and kernel32 on windows
|
|
|
|
|
|
|
|
rule my-python-extension ( name : sources * : requirements * : default-build * :
|
|
|
|
usage-requirements * )
|
|
|
|
{
|
|
|
|
requirements += <use>/python//python_for_extensions ;
|
|
|
|
|
|
|
|
local project = [ project.current ] ;
|
|
|
|
|
|
|
|
targets.main-target-alternative
|
|
|
|
[ new typed-target $(name) : $(project) : PYTHON_EXTENSION
|
|
|
|
: [ targets.main-target-sources $(sources) : $(name) ]
|
|
|
|
: [ targets.main-target-requirements $(requirements) : $(project) ]
|
|
|
|
: [ targets.main-target-default-build $(default-build) : $(project) ]
|
|
|
|
] ;
|
|
|
|
}
|
|
|
|
|
|
|
|
my-python-extension libtorrent
|
2014-03-23 08:34:18 +01:00
|
|
|
: # sources
|
|
|
|
src/module.cpp
|
2007-01-10 17:11:43 +01:00
|
|
|
src/big_number.cpp
|
2009-02-20 09:58:36 +01:00
|
|
|
src/converters.cpp
|
2009-02-21 09:39:26 +01:00
|
|
|
src/create_torrent.cpp
|
2007-01-10 17:11:43 +01:00
|
|
|
src/fingerprint.cpp
|
|
|
|
src/utility.cpp
|
|
|
|
src/session.cpp
|
|
|
|
src/entry.cpp
|
|
|
|
src/torrent_info.cpp
|
2012-11-23 21:43:42 +01:00
|
|
|
src/string.cpp
|
2007-01-10 17:11:43 +01:00
|
|
|
src/torrent_handle.cpp
|
|
|
|
src/torrent_status.cpp
|
|
|
|
src/session_settings.cpp
|
|
|
|
src/version.cpp
|
|
|
|
src/alert.cpp
|
|
|
|
src/datetime.cpp
|
|
|
|
src/peer_info.cpp
|
2008-02-17 22:17:43 +01:00
|
|
|
src/ip_filter.cpp
|
2008-10-02 07:00:40 +02:00
|
|
|
src/magnet_uri.cpp
|
2011-06-25 22:11:31 +02:00
|
|
|
src/error_code.cpp
|
2014-03-23 08:34:18 +01:00
|
|
|
: # requirements
|
|
|
|
<include>src
|
2008-11-23 21:41:24 +01:00
|
|
|
<conditional>@libtorrent_linking
|
2014-03-23 08:34:18 +01:00
|
|
|
: # default build
|
2012-03-22 05:37:32 +01:00
|
|
|
<boost-link>static
|
2014-03-31 08:43:29 +02:00
|
|
|
<libtorrent-link>static
|
2014-11-28 19:58:18 +01:00
|
|
|
<suppress-import-lib>false
|
2007-01-10 17:11:43 +01:00
|
|
|
;
|
|
|
|
|
2010-03-28 04:06:50 +02:00
|
|
|
install stage_module : libtorrent : <location>. ;
|
|
|
|
|