2007-06-13 03:48:24 +02:00
|
|
|
# This Jamfile requires boost-build v2 to build.
|
|
|
|
# The version shipped with boost 1.34.0
|
2004-02-18 01:08:20 +01:00
|
|
|
|
2004-02-04 21:20:53 +01:00
|
|
|
import modules ;
|
2004-02-21 12:52:21 +01:00
|
|
|
import os ;
|
2005-01-11 03:13:07 +01:00
|
|
|
import errors ;
|
2006-08-31 02:26:41 +02:00
|
|
|
import feature : feature ;
|
2004-02-04 21:20:53 +01:00
|
|
|
|
|
|
|
BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
|
|
|
|
|
2004-07-25 23:44:53 +02:00
|
|
|
ECHO "BOOST_ROOT =" $(BOOST_ROOT) ;
|
|
|
|
ECHO "OS =" [ os.name ] ;
|
|
|
|
|
2007-07-07 23:27:36 +02:00
|
|
|
if $(BOOST_ROOT)
|
2005-01-11 03:13:07 +01:00
|
|
|
{
|
2007-07-07 23:27:36 +02:00
|
|
|
use-project /boost : $(BOOST_ROOT) ;
|
2005-01-11 03:13:07 +01:00
|
|
|
}
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# rule for linking the correct libraries depending
|
|
|
|
# on features and target-os
|
|
|
|
rule linking ( properties * )
|
2007-06-13 03:48:24 +02:00
|
|
|
{
|
|
|
|
local result ;
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# openssl libraries, if enabled
|
2007-08-20 06:58:56 +02:00
|
|
|
if <openssl>sha-1 in $(properties)
|
|
|
|
|| <openssl>pe in $(properties)
|
2007-06-13 03:48:24 +02:00
|
|
|
{
|
2007-09-10 09:51:58 +02:00
|
|
|
# exclude gcc from a regular windows build to make mingw
|
|
|
|
# link against the regular unix library name
|
2007-12-16 00:38:54 +01:00
|
|
|
|
|
|
|
if <target-os>windows in $(properties)
|
|
|
|
{
|
|
|
|
result += <library>gdi32 ;
|
|
|
|
}
|
|
|
|
|
2007-09-10 09:51:58 +02:00
|
|
|
if <target-os>windows in $(properties) && ! <toolset>gcc in $(properties)
|
2007-06-13 03:48:24 +02:00
|
|
|
{
|
2007-06-13 19:36:26 +02:00
|
|
|
result += <library>ssleay32
|
|
|
|
<library>libeay32
|
|
|
|
<library>advapi32
|
|
|
|
<library>user32
|
|
|
|
<library>shell32
|
|
|
|
;
|
2007-06-13 03:48:24 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2008-01-27 23:39:50 +01:00
|
|
|
result += <library>crypto <library>ssl ;
|
2007-06-13 03:48:24 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# socket functions on windows require winsock libraries
|
2007-08-20 06:58:56 +02:00
|
|
|
if <target-os>windows in $(properties)
|
|
|
|
|| <target-os>cygwin in $(properties)
|
2007-06-13 19:36:26 +02:00
|
|
|
{
|
|
|
|
result += <library>ws2_32
|
|
|
|
<library>wsock32
|
|
|
|
<define>WIN32_LEAN_AND_MEAN
|
|
|
|
<define>_WIN32_WINNT=0x0500
|
|
|
|
<define>__USE_W32_SOCKETS
|
|
|
|
<define>WIN32
|
|
|
|
<define>_WIN32
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
2007-08-21 19:43:19 +02:00
|
|
|
if <test-coverage>on in $(properties)
|
|
|
|
&& ( <toolset>gcc in $(properties)
|
|
|
|
|| <toolset>darwin in $(properties) )
|
|
|
|
{
|
|
|
|
result += <cxxflags>-fprofile-arcs <cxxflags>-ftest-coverage ;
|
|
|
|
}
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# clock_gettime on linux requires librt
|
|
|
|
if <target-os>linux in $(properties)
|
|
|
|
{
|
2007-06-15 19:54:35 +02:00
|
|
|
# when do one need to link against librt?
|
|
|
|
# result += <library>rt ;
|
2007-06-13 19:36:26 +02:00
|
|
|
}
|
|
|
|
|
2007-07-07 23:27:36 +02:00
|
|
|
if <boost>system in $(properties)
|
|
|
|
{
|
2007-11-30 01:35:09 +01:00
|
|
|
result += <library>boost_filesystem
|
|
|
|
<library>boost_thread <library>boost_iostreams
|
2007-07-07 23:27:36 +02:00
|
|
|
;
|
|
|
|
}
|
|
|
|
|
2007-08-20 06:58:56 +02:00
|
|
|
if <toolset>gcc in $(properties)
|
|
|
|
&& <target-os>linux in $(properties)
|
|
|
|
&& <variant>debug in $(properties)
|
|
|
|
{
|
|
|
|
# for backtraces in assertion failures
|
|
|
|
# which only works on ELF targets with gcc
|
2007-09-01 06:08:39 +02:00
|
|
|
result += <linkflags>-export-dynamic <cxxflags>-rdynamic ;
|
2007-08-20 06:58:56 +02:00
|
|
|
}
|
|
|
|
|
2007-07-07 23:27:36 +02:00
|
|
|
if <boost>source in $(properties)
|
|
|
|
{
|
|
|
|
result += <library>/boost/thread//boost_thread
|
|
|
|
<library>/boost/filesystem//boost_filesystem
|
2007-11-30 01:35:09 +01:00
|
|
|
<library>/boost/iostreams//boost_iostreams
|
2007-07-07 23:27:36 +02:00
|
|
|
<include>$(BOOST_ROOT)
|
|
|
|
<define>BOOST_ALL_NO_LIB
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
2007-06-13 03:48:24 +02:00
|
|
|
return $(result) ;
|
|
|
|
}
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# rule for adding the right source files
|
|
|
|
# depending on target-os and features
|
|
|
|
rule building ( properties * )
|
2007-06-13 03:48:24 +02:00
|
|
|
{
|
|
|
|
local result ;
|
|
|
|
|
2007-12-31 00:30:14 +01:00
|
|
|
if ( <target-os>linux in $(properties)
|
2007-09-17 04:32:51 +02:00
|
|
|
|| <target-os>darwin in $(properties) )
|
|
|
|
&& ( <toolset>gcc in $(properties)
|
|
|
|
|| <toolset>darwin in $(properties) )
|
2007-09-01 06:08:39 +02:00
|
|
|
{
|
|
|
|
result += <source>src/assert.cpp ;
|
|
|
|
}
|
|
|
|
|
2007-06-13 03:48:24 +02:00
|
|
|
if <openssl>off in $(properties)
|
|
|
|
{
|
|
|
|
result += <source>src/sha1.cpp ;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if <openssl>pe in $(properties)
|
|
|
|
{
|
|
|
|
result += <source>src/pe_crypto.cpp ;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
if <target-os>windows in $(properties)
|
|
|
|
{
|
|
|
|
result += <source>src/file_win.cpp ;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
result += <source>src/file.cpp ;
|
|
|
|
}
|
|
|
|
|
2007-12-26 05:44:25 +01:00
|
|
|
if <memdebug>on in $(properties)
|
|
|
|
{
|
|
|
|
result += <source>src/memdebug.cpp ;
|
|
|
|
}
|
|
|
|
|
2007-06-13 03:48:24 +02:00
|
|
|
return $(result) ;
|
|
|
|
}
|
2004-03-17 13:14:44 +01:00
|
|
|
|
2008-01-12 19:47:26 +01:00
|
|
|
feature bandwidth-limit-logging : off on : composite propagated link-incompatible ;
|
|
|
|
feature.compose <bandwidth-limit-logging>on : <define>TORRENT_VERBOSE_BANDWIDTH_LIMIT ;
|
|
|
|
|
2008-01-13 07:17:56 +01:00
|
|
|
feature invariant-checks : on off : composite propagated link-incompatible ;
|
|
|
|
feature.compose <invariant-checks>off : <define>TORRENT_DISABLE_INVARIANT_CHECKS ;
|
|
|
|
|
2007-09-25 22:36:02 +02:00
|
|
|
feature disk-stats : off on : composite propagated link-incompatible ;
|
2007-09-17 10:15:54 +02:00
|
|
|
feature.compose <disk-stats>on : <define>TORRENT_DISK_STATS ;
|
|
|
|
|
2007-12-27 07:37:18 +01:00
|
|
|
feature memdebug : off on : composite propagated ;
|
|
|
|
feature.compose <memdebug>on : <define>TORRENT_MEMDEBUG ;
|
2007-12-26 05:44:25 +01:00
|
|
|
|
2008-02-07 08:09:52 +01:00
|
|
|
feature logging : none default errors verbose : composite propagated link-incompatible ;
|
2006-09-01 05:06:00 +02:00
|
|
|
feature.compose <logging>default : <define>TORRENT_LOGGING ;
|
2008-02-17 22:37:20 +01:00
|
|
|
feature.compose <logging>errors : <define>TORRENT_ERROR_LOGGING ;
|
2006-09-01 05:06:00 +02:00
|
|
|
feature.compose <logging>verbose : <define>TORRENT_VERBOSE_LOGGING ;
|
2004-11-01 00:16:08 +01:00
|
|
|
|
2007-09-25 22:36:02 +02:00
|
|
|
feature dht-support : on off logging : composite propagated link-incompatible ;
|
2006-09-01 05:06:00 +02:00
|
|
|
feature.compose <dht-support>off : <define>TORRENT_DISABLE_DHT ;
|
|
|
|
feature.compose <dht-support>logging : <define>TORRENT_DHT_VERBOSE_LOGGING ;
|
2004-02-04 12:00:29 +01:00
|
|
|
|
2007-09-25 22:36:02 +02:00
|
|
|
feature openssl : pe sha-1 off : composite propagated link-incompatible ;
|
2007-06-13 03:48:24 +02:00
|
|
|
feature.compose <openssl>pe : <define>TORRENT_USE_OPENSSL ;
|
|
|
|
feature.compose <openssl>sha-1 : <define>TORRENT_USE_OPENSSL <define>TORRENT_DISABLE_ENCRYPTION ;
|
|
|
|
feature.compose <openssl>off : <define>TORRENT_DISABLE_ENCRYPTION ;
|
2007-04-15 06:30:52 +02:00
|
|
|
|
2007-09-25 22:36:02 +02:00
|
|
|
feature resolve-countries : on off : composite propagated link-incompatible ;
|
2007-05-02 21:47:38 +02:00
|
|
|
feature.compose <resolve-countries>off : <define>TORRENT_DISABLE_RESOLVE_COUNTRIES ;
|
|
|
|
|
2007-04-18 21:12:30 +02:00
|
|
|
feature character-set : ansi unicode : composite propagated link-incompatible ;
|
|
|
|
feature.compose <character-set>unicode : <define>_UNICODE <define>UNICODE ;
|
|
|
|
|
2007-06-13 03:48:24 +02:00
|
|
|
feature zlib : shipped system : composite propagated link-incompatible ;
|
2007-06-06 02:41:20 +02:00
|
|
|
|
2007-09-25 22:36:02 +02:00
|
|
|
feature statistics : off on : composite propagated link-incompatible ;
|
2007-05-14 00:01:21 +02:00
|
|
|
feature.compose <statistics>on : <define>TORRENT_STATS ;
|
|
|
|
|
2007-05-14 09:31:01 +02:00
|
|
|
feature upnp-logging : off on : composite propagated link-incompatible ;
|
|
|
|
feature.compose <upnp-logging>on : <define>TORRENT_UPNP_LOGGING ;
|
|
|
|
|
2007-07-07 23:27:36 +02:00
|
|
|
feature boost : system source : link-incompatible propagated ;
|
|
|
|
|
2007-08-03 08:13:26 +02:00
|
|
|
feature debug-iterators : off on : composite propagated link-incompatible ;
|
|
|
|
feature.compose <debug-iterators>on : <define>_SCL_SECURE=1 <define>_GLIBCXX_DEBUG ;
|
|
|
|
|
2007-08-21 19:43:19 +02:00
|
|
|
feature test-coverage : off on : composite propagated ;
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# required for openssl on windows
|
|
|
|
lib ssleay32 : : <name>ssleay32 ;
|
|
|
|
lib libeay32 : : <name>libeay32 ;
|
|
|
|
lib advapi32 : : <name>Advapi32 ;
|
|
|
|
lib user32 : : <name>User32 ;
|
|
|
|
lib shell32 : : <name>shell32 ;
|
|
|
|
lib gdi32 : : <name>gdi32 ;
|
|
|
|
|
2007-07-08 22:21:22 +02:00
|
|
|
local library-search-path = <search>/opt/local/lib <search>/usr/lib <search>/usr/local/lib <search>/sw/lib ;
|
|
|
|
|
|
|
|
lib filesystem : : <name>boost_filesystem $(library-search-path) ;
|
|
|
|
lib thread : : <name>boost_thread $(library-search-path) ;
|
2007-07-07 23:27:36 +02:00
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# openssl on linux/bsd/macos etc.
|
2007-06-13 03:48:24 +02:00
|
|
|
lib crypto : : <name>crypto ;
|
2008-01-27 23:39:50 +01:00
|
|
|
lib ssl : : <name>ssl ;
|
2007-06-13 19:36:26 +02:00
|
|
|
|
|
|
|
# time functions used on linux require librt
|
|
|
|
lib librt : : <name>rt ;
|
|
|
|
|
|
|
|
# libz
|
2007-06-13 03:48:24 +02:00
|
|
|
lib zlib-target : : <name>z ;
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
# socket libraries on windows
|
|
|
|
lib wsock32 : : <name>wsock32 ;
|
|
|
|
lib ws2_32 : : <name>ws2_32 ;
|
|
|
|
|
2003-10-23 01:00:57 +02:00
|
|
|
SOURCES =
|
2007-04-17 02:23:46 +02:00
|
|
|
alert
|
2007-12-31 00:30:14 +01:00
|
|
|
assert
|
2007-05-05 02:29:33 +02:00
|
|
|
connection_queue
|
2007-04-17 02:23:46 +02:00
|
|
|
entry
|
|
|
|
escape_string
|
2008-01-30 19:32:13 +01:00
|
|
|
gzip
|
2007-04-17 02:23:46 +02:00
|
|
|
http_connection
|
2007-04-25 20:26:35 +02:00
|
|
|
http_stream
|
2008-01-12 10:36:03 +01:00
|
|
|
http_parser
|
2007-04-17 02:23:46 +02:00
|
|
|
identify_client
|
|
|
|
ip_filter
|
|
|
|
peer_connection
|
|
|
|
bt_peer_connection
|
|
|
|
web_peer_connection
|
2007-04-25 20:26:35 +02:00
|
|
|
instantiate_connection
|
2007-04-17 02:23:46 +02:00
|
|
|
natpmp
|
|
|
|
piece_picker
|
|
|
|
policy
|
|
|
|
session
|
|
|
|
session_impl
|
2007-05-31 01:35:14 +02:00
|
|
|
socks4_stream
|
2007-04-25 20:26:35 +02:00
|
|
|
socks5_stream
|
2007-04-17 02:23:46 +02:00
|
|
|
stat
|
|
|
|
storage
|
2007-11-30 01:35:09 +01:00
|
|
|
mapped_storage
|
2007-04-17 02:23:46 +02:00
|
|
|
torrent
|
|
|
|
torrent_handle
|
|
|
|
torrent_info
|
|
|
|
tracker_manager
|
|
|
|
http_tracker_connection
|
|
|
|
udp_tracker_connection
|
|
|
|
sha1
|
2007-12-09 05:15:24 +01:00
|
|
|
udp_socket
|
2007-04-17 02:23:46 +02:00
|
|
|
upnp
|
|
|
|
logger
|
|
|
|
file_pool
|
|
|
|
lsd
|
2007-06-10 22:46:09 +02:00
|
|
|
disk_io_thread
|
2007-09-10 01:52:34 +02:00
|
|
|
enum_net
|
|
|
|
broadcast_socket
|
2007-12-03 07:03:16 +01:00
|
|
|
magnet_uri
|
2007-12-18 07:04:54 +01:00
|
|
|
|
|
|
|
# -- extensions --
|
|
|
|
metadata_transfer
|
|
|
|
ut_pex
|
|
|
|
ut_metadata
|
|
|
|
smart_ban
|
2006-09-01 05:06:00 +02:00
|
|
|
;
|
2006-08-01 17:27:08 +02:00
|
|
|
|
2006-09-01 05:06:00 +02:00
|
|
|
KADEMLIA_SOURCES =
|
2007-04-17 02:23:46 +02:00
|
|
|
kademlia/closest_nodes
|
|
|
|
kademlia/dht_tracker
|
|
|
|
kademlia/node
|
|
|
|
kademlia/refresh
|
|
|
|
kademlia/rpc_manager
|
|
|
|
kademlia/find_data
|
|
|
|
kademlia/node_id
|
|
|
|
kademlia/routing_table
|
|
|
|
kademlia/traversal_algorithm
|
2004-02-21 12:52:21 +01:00
|
|
|
;
|
2004-02-08 17:04:50 +01:00
|
|
|
|
2004-03-28 19:45:37 +02:00
|
|
|
ZLIB_SOURCES =
|
2007-04-17 02:23:46 +02:00
|
|
|
adler32
|
|
|
|
compress
|
|
|
|
crc32
|
|
|
|
deflate
|
|
|
|
gzio
|
|
|
|
infback
|
|
|
|
inffast
|
|
|
|
inflate
|
|
|
|
inftrees
|
|
|
|
trees
|
|
|
|
uncompr
|
|
|
|
zutil
|
2004-03-28 19:45:37 +02:00
|
|
|
;
|
|
|
|
|
2007-06-13 03:48:24 +02:00
|
|
|
local usage-requirements =
|
2006-09-01 05:06:00 +02:00
|
|
|
<include>./include
|
|
|
|
<include>./include/libtorrent
|
2007-06-06 02:41:20 +02:00
|
|
|
<zlib>shipped:<include>./zlib
|
2006-09-01 05:06:00 +02:00
|
|
|
<variant>release:<define>NDEBUG
|
|
|
|
<define>_FILE_OFFSET_BITS=64
|
2007-07-07 23:27:36 +02:00
|
|
|
<define>BOOST_MULTI_INDEX_DISABLE_SERIALIZATION
|
2007-06-13 19:36:26 +02:00
|
|
|
<conditional>@linking
|
2007-06-13 03:48:24 +02:00
|
|
|
<zlib>system:<library>zlib-target
|
2006-09-01 05:06:00 +02:00
|
|
|
# these compiler settings just makes the compiler standard conforming
|
|
|
|
<toolset>msvc:<cxxflags>/Zc:wchar_t
|
|
|
|
<toolset>msvc:<cxxflags>/Zc:forScope
|
2006-11-02 13:44:33 +01:00
|
|
|
# disable bogus deprecation warnings on msvc8
|
|
|
|
<toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
|
|
|
|
<toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
|
2007-09-01 06:08:39 +02:00
|
|
|
# msvc optimizations
|
|
|
|
<toolset>msvc,<variant>release:<linkflags>/OPT:ICF=5
|
|
|
|
<toolset>msvc,<variant>release:<linkflags>/OPT:REF
|
|
|
|
# disable warning C4503: decorated name length exceeded, name was truncated
|
|
|
|
<toolset>msvc:<cxxflags>/wd4503
|
2007-09-10 09:51:58 +02:00
|
|
|
# disable some warnings for gcc
|
|
|
|
<toolset>gcc:<cxxflags>-fno-strict-aliasing
|
|
|
|
<toolset>gcc:<cxxflags>-Wno-missing-braces
|
2006-09-01 05:06:00 +02:00
|
|
|
;
|
|
|
|
|
2007-06-13 19:36:26 +02:00
|
|
|
project torrent ;
|
|
|
|
|
2003-10-23 01:00:57 +02:00
|
|
|
lib torrent
|
2007-06-13 03:48:24 +02:00
|
|
|
|
|
|
|
: # sources
|
2007-04-17 02:23:46 +02:00
|
|
|
src/$(SOURCES).cpp
|
2007-06-13 03:48:24 +02:00
|
|
|
|
|
|
|
: # requirements
|
|
|
|
<define>BOOST_THREAD_USE_LIB
|
|
|
|
<threading>multi
|
|
|
|
<link>shared:<define>TORRENT_BUILDING_SHARED
|
2007-04-17 02:23:46 +02:00
|
|
|
<dht-support>on:<source>src/$(KADEMLIA_SOURCES).cpp
|
|
|
|
<dht-support>logging:<source>src/$(KADEMLIA_SOURCES).cpp
|
2007-06-06 02:41:20 +02:00
|
|
|
<zlib>shipped:<source>zlib/$(ZLIB_SOURCES).c
|
2007-06-13 19:36:26 +02:00
|
|
|
<conditional>@building
|
2007-06-13 03:48:24 +02:00
|
|
|
$(usage-requirements)
|
|
|
|
|
|
|
|
: # default build
|
|
|
|
<link>static
|
|
|
|
|
|
|
|
: # usage requirements
|
|
|
|
$(usage-requirements)
|
2003-10-23 01:00:57 +02:00
|
|
|
;
|
|
|
|
|