2005-11-01 19:30:39 +01:00
|
|
|
/*
|
|
|
|
|
2018-04-09 09:04:33 +02:00
|
|
|
Copyright (c) 2005-2018, Arvid Norberg
|
2005-11-01 19:30:39 +01:00
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions
|
|
|
|
are met:
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer in
|
|
|
|
the documentation and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of the author nor the names of its
|
|
|
|
contributors may be used to endorse or promote products derived
|
|
|
|
from this software without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
|
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef TORRENT_CONFIG_HPP_INCLUDED
|
|
|
|
#define TORRENT_CONFIG_HPP_INCLUDED
|
|
|
|
|
2020-04-19 21:53:36 +02:00
|
|
|
#include <cstddef>
|
|
|
|
|
2015-12-14 01:44:42 +01:00
|
|
|
#include "libtorrent/aux_/disable_warnings_push.hpp"
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#define _FILE_OFFSET_BITS 64
|
|
|
|
|
2005-11-01 19:30:39 +01:00
|
|
|
#include <boost/config.hpp>
|
2020-03-13 12:15:39 +01:00
|
|
|
#include <boost/version.hpp>
|
2016-05-15 19:28:22 +02:00
|
|
|
|
|
|
|
#include "libtorrent/aux_/disable_warnings_pop.hpp"
|
|
|
|
|
2018-04-26 09:01:14 +02:00
|
|
|
// TODO: don't include that here. Make each header that use the export macros
|
|
|
|
// include it instead. and move it to aux_
|
2018-05-13 21:59:50 +02:00
|
|
|
#include "libtorrent/aux_/export.hpp"
|
2014-07-22 07:35:05 +02:00
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#ifdef __linux__
|
|
|
|
#include <linux/version.h> // for LINUX_VERSION_CODE and KERNEL_VERSION
|
|
|
|
#endif // __linux
|
|
|
|
|
2016-05-15 19:28:22 +02:00
|
|
|
#if defined __MINGW64__ || defined __MINGW32__
|
|
|
|
// GCC warns on format codes that are incompatible with glibc, which the windows
|
|
|
|
// format codes are. So we need to disable those for mingw targets
|
|
|
|
#pragma GCC diagnostic ignored "-Wformat"
|
|
|
|
#pragma GCC diagnostic ignored "-Wformat-extra-args"
|
2012-08-16 05:03:29 +02:00
|
|
|
#endif
|
2015-12-14 01:44:42 +01:00
|
|
|
|
2019-11-20 12:32:23 +01:00
|
|
|
#if defined __GNUC__
|
2009-08-30 09:38:52 +02:00
|
|
|
|
2016-02-21 05:40:45 +01:00
|
|
|
#ifdef _GLIBCXX_CONCEPT_CHECKS
|
|
|
|
#define TORRENT_COMPLETE_TYPES_REQUIRED 1
|
|
|
|
#endif
|
|
|
|
|
2009-08-30 09:38:52 +02:00
|
|
|
// ======= SUNPRO =========
|
|
|
|
|
|
|
|
#elif defined __SUNPRO_CC
|
|
|
|
|
2016-02-21 05:40:45 +01:00
|
|
|
#define TORRENT_COMPLETE_TYPES_REQUIRED 1
|
|
|
|
|
2009-08-30 09:38:52 +02:00
|
|
|
// ======= MSVC =========
|
|
|
|
|
|
|
|
#elif defined BOOST_MSVC
|
2005-11-01 19:30:39 +01:00
|
|
|
|
2011-02-21 06:24:41 +01:00
|
|
|
// class X needs to have dll-interface to be used by clients of class Y
|
|
|
|
#pragma warning(disable:4251)
|
|
|
|
|
2017-03-18 01:47:10 +01:00
|
|
|
// auto and decltype(auto) return types supports since MSVS2015
|
|
|
|
// https://msdn.microsoft.com/en-us/library/hh567368.aspx
|
|
|
|
// we need to force C++14 feature due VS2017 inability to parse C++11 syntax
|
|
|
|
#if defined(_MSC_VER) && (_MSC_VER > 1900)
|
|
|
|
#define TORRENT_AUTO_RETURN_TYPES 1
|
|
|
|
#endif
|
2005-11-01 19:30:39 +01:00
|
|
|
#endif
|
|
|
|
|
2009-08-30 09:38:52 +02:00
|
|
|
|
2009-11-28 23:41:21 +01:00
|
|
|
// ======= PLATFORMS =========
|
2009-08-30 09:38:52 +02:00
|
|
|
|
2005-11-01 19:30:39 +01:00
|
|
|
|
2008-02-18 01:36:17 +01:00
|
|
|
// set up defines for target environments
|
2009-12-09 08:29:09 +01:00
|
|
|
// ==== AMIGA ===
|
|
|
|
#if defined __AMIGA__ || defined __amigaos__ || defined __AROS__
|
|
|
|
#define TORRENT_AMIGA
|
|
|
|
#define TORRENT_USE_IOSTREAM 0
|
|
|
|
// set this to 1 to disable all floating point operations
|
|
|
|
// (disables some float-dependent APIs)
|
|
|
|
#define TORRENT_NO_FPU 1
|
|
|
|
#define TORRENT_USE_I2P 0
|
2011-02-09 10:54:45 +01:00
|
|
|
#ifndef TORRENT_USE_ICONV
|
2009-12-09 10:55:19 +01:00
|
|
|
#define TORRENT_USE_ICONV 0
|
2011-02-09 10:54:45 +01:00
|
|
|
#endif
|
2009-12-09 08:29:09 +01:00
|
|
|
|
|
|
|
// ==== Darwin/BSD ===
|
|
|
|
#elif (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ \
|
2008-02-18 01:36:17 +01:00
|
|
|
|| defined __OpenBSD__ || defined __bsdi__ || defined __DragonFly__ \
|
|
|
|
|| defined __FreeBSD_kernel__
|
|
|
|
#define TORRENT_BSD
|
2009-12-09 10:55:19 +01:00
|
|
|
// we don't need iconv on mac, because
|
|
|
|
// the locale is always utf-8
|
|
|
|
#if defined __APPLE__
|
2013-05-09 04:32:12 +02:00
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
# ifndef TORRENT_USE_ICONV
|
|
|
|
# define TORRENT_USE_ICONV 0
|
|
|
|
# define TORRENT_USE_LOCALE 0
|
|
|
|
# endif
|
2013-05-09 04:32:12 +02:00
|
|
|
#include <AvailabilityMacros.h>
|
2017-04-12 05:53:13 +02:00
|
|
|
#include <TargetConditionals.h>
|
2013-05-09 04:32:12 +02:00
|
|
|
|
|
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
|
2014-12-29 17:50:22 +01:00
|
|
|
// on OSX, use the built-in common crypto for built-in
|
2016-06-23 19:20:35 +02:00
|
|
|
# if !defined TORRENT_USE_LIBCRYPTO && !defined TORRENT_USE_LIBGCRYPT
|
2014-07-06 21:18:00 +02:00
|
|
|
# define TORRENT_USE_COMMONCRYPTO 1
|
|
|
|
# endif // TORRENT_USE_OPENSSL
|
2013-05-09 04:32:12 +02:00
|
|
|
#endif // MAC_OS_X_VERSION_MIN_REQUIRED
|
|
|
|
|
2013-05-26 23:36:20 +02:00
|
|
|
// execinfo.h is available in the MacOS X 10.5 SDK.
|
|
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
|
|
|
|
#define TORRENT_USE_EXECINFO 1
|
|
|
|
#endif
|
|
|
|
|
2017-04-07 23:53:12 +02:00
|
|
|
#define TORRENT_USE_SYSTEMCONFIGURATION 1
|
|
|
|
|
2017-04-12 05:53:13 +02:00
|
|
|
#if TARGET_OS_IPHONE
|
|
|
|
#define TORRENT_USE_SC_NETWORK_REACHABILITY 1
|
|
|
|
#endif
|
2014-07-06 21:18:00 +02:00
|
|
|
#endif // __APPLE__
|
|
|
|
|
2019-02-26 14:44:16 +01:00
|
|
|
#define TORRENT_HAS_SYMLINK 1
|
2017-01-15 00:13:09 +01:00
|
|
|
#define TORRENT_USE_DEV_RANDOM 1
|
2014-07-06 21:18:00 +02:00
|
|
|
#define TORRENT_HAVE_MMAP 1
|
|
|
|
|
2010-02-15 08:16:41 +01:00
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
2014-07-06 21:18:00 +02:00
|
|
|
|
2011-02-15 08:42:46 +01:00
|
|
|
#define TORRENT_USE_IFADDRS 1
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_SYSCTL 1
|
|
|
|
#define TORRENT_USE_IFCONF 1
|
|
|
|
|
2009-12-09 08:29:09 +01:00
|
|
|
|
|
|
|
// ==== LINUX ===
|
2008-02-18 01:36:17 +01:00
|
|
|
#elif defined __linux__
|
|
|
|
#define TORRENT_LINUX
|
2014-07-06 21:18:00 +02:00
|
|
|
|
2016-08-03 06:35:40 +02:00
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) && !defined __ANDROID__
|
2014-07-06 21:18:00 +02:00
|
|
|
# define TORRENT_USE_PREADV 1
|
|
|
|
# define TORRENT_USE_PREAD 0
|
|
|
|
#else
|
|
|
|
# define TORRENT_USE_PREADV 0
|
|
|
|
# define TORRENT_USE_PREAD 1
|
|
|
|
#endif
|
|
|
|
|
2019-02-26 14:44:16 +01:00
|
|
|
#define TORRENT_HAS_SYMLINK 1
|
2014-07-06 21:18:00 +02:00
|
|
|
#define TORRENT_HAVE_MMAP 1
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_NETLINK 1
|
2017-06-27 06:34:24 +02:00
|
|
|
#define TORRENT_USE_IFADDRS 0
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_IFCONF 1
|
|
|
|
#define TORRENT_HAS_SALEN 0
|
2016-07-01 06:13:03 +02:00
|
|
|
#define TORRENT_USE_FDATASYNC 1
|
2013-11-27 17:58:02 +01:00
|
|
|
|
|
|
|
// ===== ANDROID ===== (almost linux, sort of)
|
|
|
|
#if defined __ANDROID__
|
2017-01-22 06:03:54 +01:00
|
|
|
#define TORRENT_ANDROID
|
2013-11-27 17:58:02 +01:00
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
|
|
|
#define TORRENT_USE_ICONV 0
|
2014-07-06 21:18:00 +02:00
|
|
|
#else // ANDROID
|
2015-09-21 23:58:20 +02:00
|
|
|
|
|
|
|
// posix_fallocate() is available under this condition
|
|
|
|
#if _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L
|
|
|
|
#define TORRENT_HAS_FALLOCATE 1
|
|
|
|
#else
|
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#endif // ANDROID
|
2013-11-27 17:58:02 +01:00
|
|
|
|
2015-06-20 22:50:44 +02:00
|
|
|
#if defined __GLIBC__ && ( defined __x86_64__ || defined __i386 \
|
2015-06-20 22:36:23 +02:00
|
|
|
|| defined _M_X64 || defined _M_IX86 )
|
2013-05-26 23:36:20 +02:00
|
|
|
#define TORRENT_USE_EXECINFO 1
|
|
|
|
#endif
|
2010-02-14 05:05:18 +01:00
|
|
|
|
|
|
|
// ==== MINGW ===
|
2016-05-15 19:28:22 +02:00
|
|
|
#elif defined __MINGW32__ || defined __MINGW64__
|
2009-07-01 01:03:54 +02:00
|
|
|
#define TORRENT_MINGW
|
2010-02-14 05:05:18 +01:00
|
|
|
#define TORRENT_WINDOWS
|
2011-02-09 10:54:45 +01:00
|
|
|
#ifndef TORRENT_USE_ICONV
|
2014-02-13 08:42:37 +01:00
|
|
|
# define TORRENT_USE_ICONV 0
|
|
|
|
# define TORRENT_USE_LOCALE 1
|
2011-02-09 10:54:45 +01:00
|
|
|
#endif
|
2010-02-14 05:05:18 +01:00
|
|
|
#define TORRENT_USE_RLIMIT 0
|
2011-04-10 05:45:13 +02:00
|
|
|
#define TORRENT_USE_NETLINK 0
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_GETADAPTERSADDRESSES 1
|
|
|
|
#define TORRENT_HAS_SALEN 0
|
2011-04-10 05:45:13 +02:00
|
|
|
#define TORRENT_USE_GETIPFORWARDTABLE 1
|
2017-07-02 17:39:06 +02:00
|
|
|
#define TORRENT_USE_UNC_PATHS 1
|
2014-07-06 21:18:00 +02:00
|
|
|
// these are emulated on windows
|
|
|
|
#define TORRENT_USE_PREADV 1
|
|
|
|
#define TORRENT_USE_PWRITEV 1
|
2014-02-13 08:42:37 +01:00
|
|
|
|
2019-03-28 20:45:39 +01:00
|
|
|
// mingw doesn't implement random_device.
|
|
|
|
#define TORRENT_BROKEN_RANDOM_DEVICE 1
|
|
|
|
|
2019-02-12 11:26:05 +01:00
|
|
|
# if !defined TORRENT_USE_LIBCRYPTO && !defined TORRENT_USE_LIBGCRYPT
|
|
|
|
// unless some other crypto library has been specified, default to the native
|
|
|
|
// windows CryptoAPI
|
|
|
|
#define TORRENT_USE_CRYPTOAPI 1
|
|
|
|
|
|
|
|
#ifdef NTDDI_VERSION
|
|
|
|
# if (NTDDI_VERSION > NTDDI_WINXPSP2)
|
|
|
|
# define TORRENT_USE_CRYPTOAPI_SHA_512 1
|
|
|
|
# endif
|
|
|
|
#else // NTDDI_VERSION not defined so use simple _WIN32_WINNT check
|
|
|
|
# if _WIN32_WINNT >= 0x0600
|
|
|
|
# define TORRENT_USE_CRYPTOAPI_SHA_512 1
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
2009-12-09 08:29:09 +01:00
|
|
|
// ==== WINDOWS ===
|
2016-05-24 05:02:52 +02:00
|
|
|
#elif defined _WIN32
|
2008-02-18 01:36:17 +01:00
|
|
|
#define TORRENT_WINDOWS
|
2011-04-09 05:49:46 +02:00
|
|
|
#ifndef TORRENT_USE_GETIPFORWARDTABLE
|
2014-07-06 21:18:00 +02:00
|
|
|
# define TORRENT_USE_GETIPFORWARDTABLE 1
|
2011-04-09 05:49:46 +02:00
|
|
|
#endif
|
2016-07-05 14:40:09 +02:00
|
|
|
|
2018-04-26 09:01:14 +02:00
|
|
|
#ifndef NOMINMAX
|
|
|
|
#define NOMINMAX
|
|
|
|
#endif
|
|
|
|
|
2016-07-05 14:40:09 +02:00
|
|
|
# if !defined TORRENT_USE_LIBCRYPTO && !defined TORRENT_USE_LIBGCRYPT
|
|
|
|
// unless some other crypto library has been specified, default to the native
|
|
|
|
// windows CryptoAPI
|
|
|
|
#define TORRENT_USE_CRYPTOAPI 1
|
2016-11-19 17:07:33 +01:00
|
|
|
|
|
|
|
#ifdef NTDDI_VERSION
|
|
|
|
# if (NTDDI_VERSION > NTDDI_WINXPSP2)
|
|
|
|
# define TORRENT_USE_CRYPTOAPI_SHA_512 1
|
|
|
|
# endif
|
|
|
|
#else // NTDDI_VERSION not defined so use simple _WIN32_WINNT check
|
|
|
|
# if _WIN32_WINNT >= 0x0600
|
|
|
|
# define TORRENT_USE_CRYPTOAPI_SHA_512 1
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
2016-07-05 14:40:09 +02:00
|
|
|
#endif
|
|
|
|
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_GETADAPTERSADDRESSES 1
|
|
|
|
#define TORRENT_HAS_SALEN 0
|
2009-12-09 10:55:19 +01:00
|
|
|
// windows has its own functions to convert
|
2011-02-09 10:54:45 +01:00
|
|
|
#ifndef TORRENT_USE_ICONV
|
2014-07-06 21:18:00 +02:00
|
|
|
# define TORRENT_USE_ICONV 0
|
|
|
|
# define TORRENT_USE_LOCALE 1
|
2011-02-09 10:54:45 +01:00
|
|
|
#endif
|
2010-02-14 05:05:18 +01:00
|
|
|
#define TORRENT_USE_RLIMIT 0
|
2010-02-15 08:16:41 +01:00
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
2017-07-02 17:39:06 +02:00
|
|
|
#define TORRENT_USE_UNC_PATHS 1
|
2014-07-06 21:18:00 +02:00
|
|
|
// these are emulated on windows
|
|
|
|
#define TORRENT_USE_PREADV 1
|
|
|
|
#define TORRENT_USE_PWRITEV 1
|
2009-12-09 08:29:09 +01:00
|
|
|
|
2015-03-09 09:35:16 +01:00
|
|
|
// ==== WINRT ===
|
|
|
|
#if defined(WINAPI_FAMILY_PARTITION)
|
|
|
|
# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \
|
|
|
|
&& !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
|
|
|
# define TORRENT_WINRT
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
2009-12-09 08:29:09 +01:00
|
|
|
// ==== SOLARIS ===
|
2015-06-20 22:36:23 +02:00
|
|
|
#elif defined sun || defined __sun
|
2009-01-27 09:24:48 +01:00
|
|
|
#define TORRENT_SOLARIS
|
2011-04-09 05:49:46 +02:00
|
|
|
#define TORRENT_USE_IFCONF 1
|
2011-09-05 01:29:47 +02:00
|
|
|
#define TORRENT_HAS_SALEN 0
|
2014-07-06 21:18:00 +02:00
|
|
|
#define TORRENT_HAVE_MMAP 1
|
2019-02-26 14:44:16 +01:00
|
|
|
#define TORRENT_HAS_SYMLINK 1
|
2009-12-09 08:29:09 +01:00
|
|
|
|
|
|
|
// ==== BEOS ===
|
2009-11-28 23:41:21 +01:00
|
|
|
#elif defined __BEOS__ || defined __HAIKU__
|
|
|
|
#define TORRENT_BEOS
|
|
|
|
#include <storage/StorageDefs.h> // B_PATH_NAME_LENGTH
|
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
2011-02-09 10:54:45 +01:00
|
|
|
#ifndef TORRENT_USE_ICONV
|
2009-12-09 10:55:19 +01:00
|
|
|
#define TORRENT_USE_ICONV 0
|
2011-02-09 10:54:45 +01:00
|
|
|
#endif
|
2011-07-14 16:16:32 +02:00
|
|
|
|
|
|
|
// ==== GNU/Hurd ===
|
|
|
|
#elif defined __GNU__
|
|
|
|
#define TORRENT_HURD
|
|
|
|
#define TORRENT_USE_IFADDRS 1
|
|
|
|
#define TORRENT_USE_IFCONF 1
|
2019-02-26 14:44:16 +01:00
|
|
|
#define TORRENT_HAS_SYMLINK 1
|
2011-07-14 16:16:32 +02:00
|
|
|
|
2012-09-24 18:13:57 +02:00
|
|
|
// ==== eCS(OS/2) ===
|
|
|
|
#elif defined __OS2__
|
|
|
|
#define TORRENT_OS2
|
|
|
|
#define TORRENT_HAS_FALLOCATE 0
|
|
|
|
#define TORRENT_USE_IFCONF 1
|
|
|
|
#define TORRENT_USE_SYSCTL 1
|
|
|
|
#define TORRENT_USE_WRITEV 0
|
|
|
|
#define TORRENT_USE_READV 0
|
|
|
|
|
2008-02-18 01:36:17 +01:00
|
|
|
#else
|
2014-11-17 04:41:01 +01:00
|
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
#pragma message ( "unknown OS, assuming BSD" )
|
|
|
|
#else
|
|
|
|
#warning "unknown OS, assuming BSD"
|
|
|
|
#endif
|
|
|
|
|
2008-02-18 01:36:17 +01:00
|
|
|
#define TORRENT_BSD
|
|
|
|
#endif
|
|
|
|
|
2015-04-20 02:01:27 +02:00
|
|
|
#define TORRENT_UNUSED(x) (void)(x)
|
|
|
|
|
2015-05-10 07:11:51 +02:00
|
|
|
#if defined __GNUC__ || defined __clang__
|
2015-09-02 07:30:40 +02:00
|
|
|
#define TORRENT_FORMAT(fmt, ellipsis) __attribute__((__format__(__printf__, fmt, ellipsis)))
|
2015-05-10 07:11:51 +02:00
|
|
|
#else
|
|
|
|
#define TORRENT_FORMAT(fmt, ellipsis)
|
|
|
|
#endif
|
|
|
|
|
2019-03-28 20:45:39 +01:00
|
|
|
#ifndef TORRENT_BROKEN_RANDOM_DEVICE
|
|
|
|
#define TORRENT_BROKEN_RANDOM_DEVICE 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
// libiconv presence detection is not implemented yet
|
2009-12-09 10:55:19 +01:00
|
|
|
#ifndef TORRENT_USE_ICONV
|
2009-10-26 02:29:39 +01:00
|
|
|
#define TORRENT_USE_ICONV 1
|
2009-03-01 01:02:33 +01:00
|
|
|
#endif
|
|
|
|
|
2011-04-09 05:49:46 +02:00
|
|
|
#ifndef TORRENT_HAS_SALEN
|
|
|
|
#define TORRENT_HAS_SALEN 1
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TORRENT_USE_GETADAPTERSADDRESSES
|
|
|
|
#define TORRENT_USE_GETADAPTERSADDRESSES 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TORRENT_USE_NETLINK
|
|
|
|
#define TORRENT_USE_NETLINK 0
|
|
|
|
#endif
|
|
|
|
|
2013-05-26 23:36:20 +02:00
|
|
|
#ifndef TORRENT_USE_EXECINFO
|
|
|
|
#define TORRENT_USE_EXECINFO 0
|
|
|
|
#endif
|
|
|
|
|
2011-04-09 05:49:46 +02:00
|
|
|
#ifndef TORRENT_USE_SYSCTL
|
|
|
|
#define TORRENT_USE_SYSCTL 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TORRENT_USE_GETIPFORWARDTABLE
|
|
|
|
#define TORRENT_USE_GETIPFORWARDTABLE 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#ifndef TORRENT_USE_LOCALE
|
|
|
|
#define TORRENT_USE_LOCALE 0
|
2011-08-07 06:41:10 +02:00
|
|
|
#endif
|
|
|
|
|
2017-07-01 19:12:55 +02:00
|
|
|
#if defined BOOST_NO_STD_WSTRING
|
|
|
|
#error your C++ standard library appears to be missing std::wstring. This type is required on windows
|
|
|
|
#endif
|
2009-11-28 23:41:21 +01:00
|
|
|
|
|
|
|
#ifndef TORRENT_HAS_FALLOCATE
|
|
|
|
#define TORRENT_HAS_FALLOCATE 1
|
|
|
|
#endif
|
2009-10-26 02:29:39 +01:00
|
|
|
|
2013-05-09 04:32:12 +02:00
|
|
|
#ifndef TORRENT_USE_COMMONCRYPTO
|
|
|
|
#define TORRENT_USE_COMMONCRYPTO 0
|
|
|
|
#endif
|
|
|
|
|
2017-04-07 23:53:12 +02:00
|
|
|
#ifndef TORRENT_USE_SYSTEMCONFIGURATION
|
|
|
|
#define TORRENT_USE_SYSTEMCONFIGURATION 0
|
|
|
|
#endif
|
|
|
|
|
2017-04-12 05:53:13 +02:00
|
|
|
#ifndef TORRENT_USE_SC_NETWORK_REACHABILITY
|
|
|
|
#define TORRENT_USE_SC_NETWORK_REACHABILITY 0
|
|
|
|
#endif
|
|
|
|
|
2016-07-05 14:40:09 +02:00
|
|
|
#ifndef TORRENT_USE_CRYPTOAPI
|
|
|
|
#define TORRENT_USE_CRYPTOAPI 0
|
|
|
|
#endif
|
|
|
|
|
2016-11-19 17:07:33 +01:00
|
|
|
#ifndef TORRENT_USE_CRYPTOAPI_SHA_512
|
|
|
|
#define TORRENT_USE_CRYPTOAPI_SHA_512 0
|
|
|
|
#endif
|
|
|
|
|
2017-01-15 00:13:09 +01:00
|
|
|
#ifndef TORRENT_USE_DEV_RANDOM
|
|
|
|
#define TORRENT_USE_DEV_RANDOM 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#ifndef TORRENT_HAVE_MMAP
|
|
|
|
#define TORRENT_HAVE_MMAP 0
|
|
|
|
#endif
|
|
|
|
|
2010-03-03 08:42:51 +01:00
|
|
|
#ifndef TORRENT_COMPLETE_TYPES_REQUIRED
|
|
|
|
#define TORRENT_COMPLETE_TYPES_REQUIRED 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#ifndef TORRENT_USE_FDATASYNC
|
|
|
|
#define TORRENT_USE_FDATASYNC 0
|
|
|
|
#endif
|
|
|
|
|
2012-02-23 07:46:23 +01:00
|
|
|
#ifndef TORRENT_USE_UNC_PATHS
|
|
|
|
#define TORRENT_USE_UNC_PATHS 0
|
|
|
|
#endif
|
|
|
|
|
2010-02-14 05:05:18 +01:00
|
|
|
#ifndef TORRENT_USE_RLIMIT
|
|
|
|
#define TORRENT_USE_RLIMIT 1
|
|
|
|
#endif
|
|
|
|
|
2011-02-15 08:42:46 +01:00
|
|
|
#ifndef TORRENT_USE_IFADDRS
|
|
|
|
#define TORRENT_USE_IFADDRS 0
|
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
// if preadv() exists, we assume pwritev() does as well
|
|
|
|
#ifndef TORRENT_USE_PREADV
|
|
|
|
#define TORRENT_USE_PREADV 0
|
2009-12-09 08:29:09 +01:00
|
|
|
#endif
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
// if pread() exists, we assume pwrite() does as well
|
|
|
|
#ifndef TORRENT_USE_PREAD
|
|
|
|
#define TORRENT_USE_PREAD 1
|
2009-12-09 08:29:09 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TORRENT_NO_FPU
|
|
|
|
#define TORRENT_NO_FPU 0
|
|
|
|
#endif
|
|
|
|
|
2012-02-01 07:24:30 +01:00
|
|
|
#ifndef TORRENT_USE_IOSTREAM
|
|
|
|
#ifndef BOOST_NO_IOSTREAM
|
2009-12-09 08:29:09 +01:00
|
|
|
#define TORRENT_USE_IOSTREAM 1
|
|
|
|
#else
|
|
|
|
#define TORRENT_USE_IOSTREAM 0
|
|
|
|
#endif
|
2012-02-01 07:24:30 +01:00
|
|
|
#endif
|
2009-12-09 08:29:09 +01:00
|
|
|
|
|
|
|
#ifndef TORRENT_USE_I2P
|
|
|
|
#define TORRENT_USE_I2P 1
|
|
|
|
#endif
|
|
|
|
|
2017-03-18 01:47:10 +01:00
|
|
|
#ifndef TORRENT_AUTO_RETURN_TYPES
|
|
|
|
#define TORRENT_AUTO_RETURN_TYPES 0
|
|
|
|
#endif
|
|
|
|
|
2009-05-20 10:57:08 +02:00
|
|
|
#if !defined(TORRENT_READ_HANDLER_MAX_SIZE)
|
2018-11-10 15:45:25 +01:00
|
|
|
# if defined _GLIBCXX_DEBUG || !defined NDEBUG
|
2019-12-18 14:08:01 +01:00
|
|
|
// internal
|
2019-11-17 13:33:47 +01:00
|
|
|
constexpr std::size_t TORRENT_READ_HANDLER_MAX_SIZE = 432;
|
2013-05-11 09:42:40 +02:00
|
|
|
# else
|
2019-12-18 14:08:01 +01:00
|
|
|
// internal
|
2013-12-02 05:24:10 +01:00
|
|
|
// if this is not divisible by 8, we're wasting space
|
2017-12-25 12:36:12 +01:00
|
|
|
constexpr std::size_t TORRENT_READ_HANDLER_MAX_SIZE = 342;
|
2013-05-11 09:42:40 +02:00
|
|
|
# endif
|
2009-05-20 10:57:08 +02:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined(TORRENT_WRITE_HANDLER_MAX_SIZE)
|
2018-11-10 15:45:25 +01:00
|
|
|
# if defined _GLIBCXX_DEBUG || !defined NDEBUG
|
2019-12-18 14:08:01 +01:00
|
|
|
// internal
|
2019-11-17 13:33:47 +01:00
|
|
|
constexpr std::size_t TORRENT_WRITE_HANDLER_MAX_SIZE = 432;
|
2013-05-11 09:42:40 +02:00
|
|
|
# else
|
2019-12-18 14:08:01 +01:00
|
|
|
// internal
|
2013-12-02 05:24:10 +01:00
|
|
|
// if this is not divisible by 8, we're wasting space
|
2017-12-25 12:36:12 +01:00
|
|
|
constexpr std::size_t TORRENT_WRITE_HANDLER_MAX_SIZE = 342;
|
2013-05-11 09:42:40 +02:00
|
|
|
# endif
|
2009-05-20 10:57:08 +02:00
|
|
|
#endif
|
2009-03-01 01:02:33 +01:00
|
|
|
|
2019-02-26 14:44:16 +01:00
|
|
|
#ifndef TORRENT_HAS_SYMLINK
|
|
|
|
#define TORRENT_HAS_SYMLINK 0
|
|
|
|
#endif
|
|
|
|
|
2014-01-19 20:45:50 +01:00
|
|
|
// debug builds have asserts enabled by default, release
|
|
|
|
// builds have asserts if they are explicitly enabled by
|
|
|
|
// the release_asserts macro.
|
|
|
|
#ifndef TORRENT_USE_ASSERTS
|
|
|
|
#define TORRENT_USE_ASSERTS 0
|
|
|
|
#endif // TORRENT_USE_ASSERTS
|
|
|
|
|
2016-07-02 01:46:59 +02:00
|
|
|
#ifndef TORRENT_USE_INVARIANT_CHECKS
|
2014-01-20 02:36:59 +01:00
|
|
|
#define TORRENT_USE_INVARIANT_CHECKS 0
|
|
|
|
#endif
|
|
|
|
|
2018-12-13 01:17:06 +01:00
|
|
|
#if TORRENT_USE_INVARIANT_CHECKS && !TORRENT_USE_ASSERTS
|
|
|
|
#error "invariant checks cannot be enabled without asserts"
|
|
|
|
#endif
|
|
|
|
|
2011-02-25 18:00:36 +01:00
|
|
|
// for non-exception builds
|
|
|
|
#ifdef BOOST_NO_EXCEPTIONS
|
|
|
|
#define TORRENT_TRY if (true)
|
|
|
|
#define TORRENT_CATCH(x) else if (false)
|
2014-08-16 09:46:06 +02:00
|
|
|
#define TORRENT_CATCH_ALL else if (false)
|
2011-03-10 06:01:36 +01:00
|
|
|
#define TORRENT_DECLARE_DUMMY(x, y) x y
|
2011-02-25 18:00:36 +01:00
|
|
|
#else
|
|
|
|
#define TORRENT_TRY try
|
|
|
|
#define TORRENT_CATCH(x) catch(x)
|
2014-08-16 09:46:06 +02:00
|
|
|
#define TORRENT_CATCH_ALL catch(...)
|
2011-03-10 06:01:36 +01:00
|
|
|
#define TORRENT_DECLARE_DUMMY(x, y)
|
2011-02-25 18:00:36 +01:00
|
|
|
#endif // BOOST_NO_EXCEPTIONS
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
// SSE is x86 / amd64 specific. On top of that, we only
|
|
|
|
// know how to access it on msvc and gcc (and gcc compatibles).
|
|
|
|
// GCC requires the user to enable SSE support in order for
|
|
|
|
// the program to have access to the intrinsics, this is
|
|
|
|
// indicated by the __SSE4_1__ macro
|
2014-11-10 03:05:46 +01:00
|
|
|
#ifndef TORRENT_HAS_SSE
|
|
|
|
|
2014-07-06 21:18:00 +02:00
|
|
|
#if (defined _M_AMD64 || defined _M_IX86 || defined _M_X64 \
|
|
|
|
|| defined __amd64__ || defined __i386 || defined __i386__ \
|
|
|
|
|| defined __x86_64__ || defined __x86_64) \
|
2016-06-27 19:46:15 +02:00
|
|
|
&& (defined __GNUC__ || (defined _MSC_VER && _MSC_VER >= 1600))
|
2014-07-06 21:18:00 +02:00
|
|
|
#define TORRENT_HAS_SSE 1
|
|
|
|
#else
|
|
|
|
#define TORRENT_HAS_SSE 0
|
|
|
|
#endif
|
|
|
|
|
2014-11-10 03:05:46 +01:00
|
|
|
#endif // TORRENT_HAS_SSE
|
|
|
|
|
2018-04-25 14:27:35 +02:00
|
|
|
#if (defined __arm__ || defined __aarch64__ || defined _M_ARM || defined _M_ARM64)
|
2016-06-26 18:01:42 +02:00
|
|
|
#define TORRENT_HAS_ARM 1
|
|
|
|
#else
|
|
|
|
#define TORRENT_HAS_ARM 0
|
|
|
|
#endif // TORRENT_HAS_ARM
|
|
|
|
|
|
|
|
#ifndef __has_builtin
|
|
|
|
#define __has_builtin(x) 0 // for non-clang compilers
|
|
|
|
#endif
|
|
|
|
|
2016-11-20 03:14:16 +01:00
|
|
|
#if (TORRENT_HAS_SSE && defined __GNUC__)
|
2016-06-26 18:01:42 +02:00
|
|
|
# define TORRENT_HAS_BUILTIN_CLZ 1
|
|
|
|
#elif (TORRENT_HAS_ARM && defined __GNUC__ && !defined __clang__)
|
|
|
|
# define TORRENT_HAS_BUILTIN_CLZ 1
|
|
|
|
#elif (defined __clang__ && __has_builtin(__builtin_clz))
|
|
|
|
# define TORRENT_HAS_BUILTIN_CLZ 1
|
|
|
|
#else
|
|
|
|
# define TORRENT_HAS_BUILTIN_CLZ 0
|
|
|
|
#endif // TORRENT_HAS_BUILTIN_CLZ
|
2011-02-25 18:00:36 +01:00
|
|
|
|
2016-11-20 03:14:16 +01:00
|
|
|
#if (TORRENT_HAS_SSE && defined __GNUC__)
|
2016-08-07 22:21:08 +02:00
|
|
|
# define TORRENT_HAS_BUILTIN_CTZ 1
|
|
|
|
#elif (TORRENT_HAS_ARM && defined __GNUC__ && !defined __clang__)
|
|
|
|
# define TORRENT_HAS_BUILTIN_CTZ 1
|
|
|
|
#elif (defined __clang__ && __has_builtin(__builtin_ctz))
|
|
|
|
# define TORRENT_HAS_BUILTIN_CTZ 1
|
|
|
|
#else
|
|
|
|
# define TORRENT_HAS_BUILTIN_CTZ 0
|
|
|
|
#endif // TORRENT_HAS_BUILTIN_CTZ
|
|
|
|
|
2016-06-28 00:51:43 +02:00
|
|
|
#if TORRENT_HAS_ARM && defined __ARM_NEON
|
|
|
|
# define TORRENT_HAS_ARM_NEON 1
|
|
|
|
#else
|
|
|
|
# define TORRENT_HAS_ARM_NEON 0
|
|
|
|
#endif // TORRENT_HAS_ARM_NEON
|
2005-11-01 19:30:39 +01:00
|
|
|
|
2016-06-30 17:37:55 +02:00
|
|
|
#if TORRENT_HAS_ARM && defined __ARM_FEATURE_CRC32
|
|
|
|
# define TORRENT_HAS_ARM_CRC32 1
|
|
|
|
#else
|
|
|
|
#if defined TORRENT_FORCE_ARM_CRC32
|
|
|
|
# define TORRENT_HAS_ARM_CRC32 1
|
|
|
|
#else
|
|
|
|
# define TORRENT_HAS_ARM_CRC32 0
|
|
|
|
#endif
|
|
|
|
#endif // TORRENT_HAS_ARM_CRC32
|
|
|
|
|
2017-04-12 20:05:53 +02:00
|
|
|
namespace libtorrent {}
|
|
|
|
|
|
|
|
// create alias
|
|
|
|
namespace lt = libtorrent;
|
|
|
|
|
2016-06-28 00:51:43 +02:00
|
|
|
#endif // TORRENT_CONFIG_HPP_INCLUDED
|