Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix compilation with cmake #767

Merged
merged 3 commits into from
May 29, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
23 changes: 22 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
60 changes: 60 additions & 0 deletions cmake/Modules/FindIconv.cmake
Original file line number Diff line number Diff line change
@@ -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
)
8 changes: 4 additions & 4 deletions test/bdecode_benchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -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)
{
Expand All @@ -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)
Expand All @@ -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));
Expand Down
1 change: 1 addition & 0 deletions test/swarm_suite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions test/test_remap_files.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include "setup_transfer.hpp"
#include "test.hpp"

#include <iostream>
#include <fstream>
#include <boost/tuple/tuple.hpp>

Expand Down