forked from premiere/premiere-libtorrent
Fix compilation with cmake (#767)
fix tests building with cmake. cmake: restore options parity with autotools
This commit is contained in:
parent
420b5f51e6
commit
9489eb23f4
|
@ -4,6 +4,8 @@ project(libtorrent)
|
|||
set (SOVERSION "8")
|
||||
set (VERSION "1.1.0")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${libtorrent_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
set(sources
|
||||
web_connection_base
|
||||
alert
|
||||
|
@ -163,7 +165,9 @@ option(encryption "link against openssl and enable encryption" ON)
|
|||
option(dht "enable support for Mainline DHT" ON)
|
||||
option(unicode "enable unicode support" ON)
|
||||
option(deprecated-functions "enable deprecated functions for backwards compatibility" ON)
|
||||
option(disk-stats "enable disk activity logging feature" OFF)
|
||||
option(exceptions "build with exception support" ON)
|
||||
option(libiconv "enable linking against system libiconv" OFF)
|
||||
option(logging "build with logging" ON)
|
||||
option(build_tests "build tests" OFF)
|
||||
|
||||
|
@ -191,6 +195,15 @@ find_package(Threads REQUIRED)
|
|||
include_directories(${includes})
|
||||
|
||||
add_definitions(-DTORRENT_BUILDING_LIBRARY)
|
||||
if (disk-stats)
|
||||
add_definitions(-DTORRENT_DISK_STATS)
|
||||
endif (disk-stats)
|
||||
|
||||
if (libiconv)
|
||||
find_package(Iconv REQUIRED)
|
||||
add_definitions(-DTORRENT_USE_ICONV)
|
||||
include_directories(SYSTEM ${ICONV_INCLUDE_DIR})
|
||||
endif (libiconv)
|
||||
|
||||
if (encryption)
|
||||
list(APPEND sources mpi pe_crypto)
|
||||
|
@ -280,6 +293,10 @@ if (encryption)
|
|||
target_link_libraries(torrent-rasterbar ${OPENSSL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if (libiconv)
|
||||
target_link_libraries(torrent-rasterbar ${ICONV_LIBRARIES})
|
||||
endif (libiconv)
|
||||
|
||||
if (NOT pool-allocators)
|
||||
add_definitions(-DTORRENT_DISABLE_POOL_ALLOCATOR)
|
||||
endif()
|
||||
|
@ -370,16 +387,20 @@ if(build_tests)
|
|||
add_library(test_common OBJECT test/main.cpp test/test.cpp
|
||||
test/setup_transfer.cpp test/dht_server.cpp test/udp_tracker.cpp
|
||||
test/peer_server.cpp test/web_seed_suite.cpp test/swarm_suite.cpp
|
||||
test/test_utils.cpp)
|
||||
test/test_utils.cpp test/make_torrent.hpp test/make_torrent.cpp
|
||||
test/settings.hpp test/settings.cpp)
|
||||
set_target_properties(test_common PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON)
|
||||
enable_testing()
|
||||
|
||||
foreach(s ${tests})
|
||||
get_filename_component (sn ${s} NAME_WE)
|
||||
add_executable(${sn} ${s} $<TARGET_OBJECTS:test_common>)
|
||||
target_link_libraries(${sn} torrent-rasterbar)
|
||||
set_target_properties(${sn} PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON)
|
||||
add_test(${sn} ${s})
|
||||
endforeach(s)
|
||||
|
||||
add_executable(bdecode_benchmark test/bdecode_benchmark.cpp)
|
||||
target_link_libraries(bdecode_benchmark torrent-rasterbar)
|
||||
set_target_properties(bdecode_benchmark PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON)
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
# - Try to find Iconv
|
||||
# Once done this will define
|
||||
#
|
||||
# ICONV_FOUND - system has Iconv
|
||||
# ICONV_INCLUDE_DIR - the Iconv include directory
|
||||
# ICONV_LIBRARIES - Link these to use Iconv
|
||||
# ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const
|
||||
#
|
||||
include(CheckCXXSourceCompiles)
|
||||
|
||||
IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
|
||||
# Already in cache, be silent
|
||||
SET(ICONV_FIND_QUIETLY TRUE)
|
||||
ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
|
||||
|
||||
FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
|
||||
|
||||
FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c)
|
||||
|
||||
IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
|
||||
SET(ICONV_FOUND TRUE)
|
||||
ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
|
||||
IF(ICONV_FOUND)
|
||||
check_cxx_source_compiles("
|
||||
#include <iconv.h>
|
||||
int main(){
|
||||
iconv_t conv = 0;
|
||||
const char* in = 0;
|
||||
size_t ilen = 0;
|
||||
char* out = 0;
|
||||
size_t olen = 0;
|
||||
iconv(conv, &in, &ilen, &out, &olen);
|
||||
return 0;
|
||||
}
|
||||
" ICONV_SECOND_ARGUMENT_IS_CONST )
|
||||
IF(ICONV_SECOND_ARGUMENT_IS_CONST)
|
||||
SET(ICONV_CONST "const")
|
||||
ENDIF(ICONV_SECOND_ARGUMENT_IS_CONST)
|
||||
ENDIF(ICONV_FOUND)
|
||||
set(CMAKE_REQUIRED_INCLUDES)
|
||||
set(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
IF(ICONV_FOUND)
|
||||
IF(NOT ICONV_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}")
|
||||
ENDIF(NOT ICONV_FIND_QUIETLY)
|
||||
ELSE(ICONV_FOUND)
|
||||
IF(Iconv_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find Iconv")
|
||||
ENDIF(Iconv_FIND_REQUIRED)
|
||||
ENDIF(ICONV_FOUND)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
ICONV_INCLUDE_DIR
|
||||
ICONV_LIBRARIES
|
||||
ICONV_SECOND_ARGUMENT_IS_CONST
|
||||
)
|
|
@ -138,7 +138,7 @@ int main(int argc, char* argv[])
|
|||
e = bdecode(&buf[0], &buf[0] + buf.size(), len);
|
||||
// entry& info = e["info"];
|
||||
}
|
||||
ptime stop(time_now_hires());
|
||||
time_point stop(clock_type::now());
|
||||
|
||||
std::fprintf(stderr, "(slow) bdecode done in %5d ns per message\n"
|
||||
, int(total_microseconds(stop - start) / 1000));
|
||||
|
@ -147,7 +147,7 @@ int main(int argc, char* argv[])
|
|||
// ===============================================
|
||||
|
||||
{
|
||||
ptime start(time_now_hires());
|
||||
time_point start(clock_type::now());
|
||||
lazy_entry e;
|
||||
for (int i = 0; i < 1000000; ++i)
|
||||
{
|
||||
|
@ -164,7 +164,7 @@ int main(int argc, char* argv[])
|
|||
// ===============================================
|
||||
|
||||
{
|
||||
ptime start(time_now_hires());
|
||||
time_point start(clock_type::now());
|
||||
bdecode_node e;
|
||||
e.reserve(100);
|
||||
for (int i = 0; i < 1000000; ++i)
|
||||
|
@ -173,7 +173,7 @@ int main(int argc, char* argv[])
|
|||
bdecode(&buf[0], &buf[0] + buf.size(), e, ec);
|
||||
// bdecode_node info = e.dict_find("info");
|
||||
}
|
||||
ptime stop(time_now_hires());
|
||||
time_point stop(clock_type::now());
|
||||
|
||||
std::fprintf(stderr, "bdecode done in %5d ns per message\n"
|
||||
, int(total_microseconds(stop - start) / 1000));
|
||||
|
|
|
@ -36,6 +36,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "libtorrent/alert_types.hpp"
|
||||
#include "libtorrent/time.hpp"
|
||||
#include "libtorrent/random.hpp"
|
||||
#include <iostream>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
||||
#include "test.hpp"
|
||||
|
|
|
@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "setup_transfer.hpp"
|
||||
#include "test.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
||||
|
|
Loading…
Reference in New Issue