experimental CMakeList file

This commit is contained in:
Arvid Norberg 2008-09-28 00:18:03 +00:00
parent 317d97b316
commit c80745ad13
1 changed files with 185 additions and 0 deletions

185
CMakeLists.txt Normal file
View File

@ -0,0 +1,185 @@
cmake_minimum_required(VERSION 2.6)
project(libtorrent)
set(sources
alert
assert
connection_queue
create_torrent
disk_buffer_holder
entry
error_code
file_storage
lazy_bdecode
escape_string
file
gzip
http_connection
http_stream
http_parser
identify_client
ip_filter
peer_connection
bt_peer_connection
web_peer_connection
instantiate_connection
natpmp
piece_picker
policy
session
session_impl
socks4_stream
socks5_stream
stat
storage
# mapped_storage
torrent
torrent_handle
torrent_info
tracker_manager
http_tracker_connection
udp_tracker_connection
sha1
udp_socket
upnp
logger
file_pool
lsd
disk_io_thread
enum_net
broadcast_socket
magnet_uri
parse_url
# -- extensions --
metadata_transfer
ut_pex
ut_metadata
smart_ban
)
set(kademlia_sources
closest_nodes
dht_tracker
node
refresh
rpc_manager
find_data
node_id
routing_table
traversal_algorithm
)
set(zlib_sources
adler32
compress
crc32
deflate
gzio
infback
inffast
inflate
inftrees
trees
uncompr
zutil
)
set(includes include zlib)
option(WITH_TCMALLOC "link against google performance tools tcmalloc" OFF)
option(USE_POOL_ALLOCATORS "Uses a pool allocator for disk and piece buffers" ON)
option(ENABLE_ENCRYPTION "link against openssl and enable encryption" ON)
option(ENABLE_GEOIP "link against LGPL GeoIP code from Maxmind, to enable geoip database support" OFF)
option(ENABLE_DHT "enable support for Mainline DHT" ON)
option(ENABLE_RESOLVE_COUNTRIES "enable support for resolving countries from peer IPs" ON)
option(ENABLE_UNICODE "enable unicode support" ON)
option(WITH_DEPRECATED_FUNCTIONS "enable deprecated functions for backwards compatibility" ON)
if (ENABLE_ENCRYPTION)
list(APPEND sources pe_crypto)
endif (ENABLE_ENCRYPTION)
foreach(s ${sources})
list(APPEND sources2 src/${s})
endforeach(s)
foreach(s ${zlib_sources})
list(APPEND zlib_sources2 zlib/${s})
endforeach(s)
if (ENABLE_DHT)
foreach(s ${kademlia_sources})
list(APPEND sources2 src/kademlia/${s})
endforeach(s)
else (ENABLE_DHT)
add_definitions(-DTORRENT_DISABLE_DHT)
endif (ENABLE_DHT)
add_library(z ${zlib_sources2})
add_library(torrent SHARED ${sources2} ${kademlia_sources2} ${zlib_sources2})
set(library_search_paths /usr/local/lib /usr/lib /opt/local/lib)
find_library(fs boost_filesystem-mt-1_35 ${library_search_paths})
target_link_libraries(torrent ${fs})
find_library(th boost_thread-mt-1_35 ${library_search_paths})
target_link_libraries(torrent ${th})
find_library(sys boost_system-mt-1_35 ${library_search_paths})
target_link_libraries(torrent ${sys})
if (WIN32)
target_link_libraries(torrent wsock32 ws2_32)
endif (WIN32)
if (ENABLE_ENCRYPTION)
add_definitions(-DTORRENT_USE_OPENSSL)
if (WIN32)
target_link_libraries(torrent ssleay32 libeay32 advapi32 user32 shell32 gdi32)
else (WIN32)
target_link_libraries(torrent crypto ssl)
endif (WIN32)
else (ENABLE_ENCRYPTION)
add_definitions(-DTORRENT_DISABLE_ENCRYPTION)
endif (ENABLE_ENCRYPTION)
if (NOT USE_POOL_ALLOCATORS)
add_definitions(-DTORRENT_DISABLE_POOL_ALLOCATOR)
endif (NOT USE_POOL_ALLOCATORS)
if (NOT ENABLE_GEOIP)
add_definitions(-DTORRENT_DISABLE_GEO_IP)
endif (NOT ENABLE_GEOIP)
if (NOT ENABLE_RESOLVE_COUNTRIES)
add_definitions(-DTORRENT_DISABLE_RESOLVE_COUNTRIES)
endif (NOT ENABLE_RESOLVE_COUNTRIES)
if (ENABLE_UNICODE)
add_definitions(-DUNICODE -D_UNICODE)
endif (ENABLE_UNICODE)
if (NOT WITH_DEPRECATED_FUNCTIONS)
add_definitions(-DTORRENT_NO_DEPRECATE)
endif (NOT WITH_DEPRECATED_FUNCTIONS)
if (MSVC)
# disable bogus deprecation warnings on msvc8
add_definitions(-D_SCL_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE)
# these compiler settings just makes the compiler standard conforming
add_definitions(/Zc:wchar_t /Zc:forScope)
# <toolset>msvc,<variant>release:<linkflags>/OPT:ICF=5
# <toolset>msvc,<variant>release:<linkflags>/OPT:REF
endif(MSVC)
message(${CMAKE_CONFIGURATION_TYPES})
add_definitions(-D_FILE_OFFSET_BITS=64)
if (WITH_TCMALLOC)
target_link_libraries(torrent tcmalloc)
endif (WITH_TCMALLOC)
target_link_libraries(torrent ${libraries} z)
include_directories(${includes})