Warning, /network/libktorrent/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
0002
0003 cmake_policy(SET CMP0057 NEW)
0004
0005 # KDE Application Version, managed by release script
0006 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0007 set (RELEASE_SERVICE_VERSION_MINOR "04")
0008 set (RELEASE_SERVICE_VERSION_MICRO "70")
0009 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0010
0011
0012 set(Boost_MIN_VERSION "1.71.0")
0013 set(LibGMP_MIN_VERSION "6.0.0")
0014 set(LibGcrypt_MIN_VERSION "1.4.5")
0015 set(KF_MIN_VERSION "5.240.0")
0016 set(QT_MIN_VERSION "6.5.0")
0017
0018 set (SOVERSION 6)
0019
0020 project(LIBKTORRENT VERSION ${RELEASE_SERVICE_VERSION})
0021
0022 # set some default settings
0023 enable_testing()
0024
0025 find_package(ECM ${KF_MIN_VERSION} NO_MODULE)
0026
0027 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
0028
0029 #
0030 # checks for functions and stuff
0031 #
0032 include(CheckIncludeFiles)
0033 include(CheckFunctionExists)
0034 include(CheckTypeSize) #XFS
0035
0036 include(KDEInstallDirs)
0037 include(KDECMakeSettings)
0038 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0039 include(KDECompilerSettings NO_POLICY_SCOPE)
0040 include(FeatureSummary)
0041 include(GenerateExportHeader)
0042 include(ECMMarkAsTest)
0043 include(ECMSetupVersion)
0044 include(KDEClangFormat)
0045 include(KDEGitCommitHooks)
0046 include(CMakePackageConfigHelpers)
0047
0048 set(CMAKE_CXX_STANDARD 17)
0049 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0050 set(QT_REQUIRED_VERSION "6.5.0")
0051 set(KF_MIN_VERSION "5.240.0")
0052 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX LIBKTORRENT
0053 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/libktorrent_version.h"
0054 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KTorrent6ConfigVersion.cmake"
0055 SOVERSION "${SOVERSION}")
0056
0057 find_package(Qt6 "${QT_MIN_VERSION}" CONFIG REQUIRED COMPONENTS
0058 Core
0059 Network
0060 Xml
0061 Test
0062 )
0063
0064 find_package(Qt6Core5Compat REQUIRED)
0065
0066 # Load the frameworks we need
0067 find_package(KF6 "${KF_MIN_VERSION}" REQUIRED COMPONENTS
0068 Archive
0069 Crash
0070 I18n
0071 KIO
0072 Solid
0073 )
0074
0075 find_package(Boost "${Boost_MIN_VERSION}" MODULE REQUIRED)
0076 find_package(LibGMP "${LibGMP_MIN_VERSION}" REQUIRED)
0077 find_package(LibGcrypt "${LibGcrypt_MIN_VERSION}" REQUIRED)
0078
0079 kde_enable_exceptions()
0080 add_definitions(
0081 -DQT_USE_QSTRINGBUILDER
0082 -DQT_NO_CAST_TO_ASCII
0083 # -DQT_NO_CAST_FROM_ASCII
0084 -DQT_STRICT_ITERATORS
0085 -DQT_NO_URL_CAST_FROM_STRING
0086 -DQT_NO_CAST_FROM_BYTEARRAY
0087 -DQT_NO_CAST_TO_BYTEARRAY
0088 -DQT_NO_KEYWORDS
0089 -DQT_USE_FAST_OPERATOR_PLUS
0090 )
0091 add_definitions(-DTRANSLATION_DOMAIN="libktorrent6")
0092
0093 #XFS prealloc
0094 check_include_files(xfs/xfs.h HAVE_XFS_XFS_H)
0095 if(HAVE_XFS_XFS_H)
0096 set(CMAKE_EXTRA_INCLUDE_FILES xfs/xfs.h)
0097 check_type_size(__u64 HAVE___U64)
0098 check_type_size(__s64 HAVE___S64)
0099 set(CMAKE_EXTRA_INCLUDE_FILES)
0100 endif()
0101
0102 # check for 64 bit file I/O functions
0103 check_function_exists(fopen64 HAVE_FOPEN64)
0104 check_function_exists(fseeko64 HAVE_FSEEKO64)
0105 check_function_exists(fseeko HAVE_FSEEKO)
0106 check_function_exists(ftello64 HAVE_FTELLO64)
0107 check_function_exists(ftello HAVE_FTELLO)
0108 check_function_exists(fstat64 HAVE_FSTAT64)
0109 check_function_exists(stat64 HAVE_STAT64)
0110 check_function_exists(ftruncate64 HAVE_FTRUNCATE64)
0111 check_function_exists(lseek64 HAVE_LSEEK64)
0112 check_function_exists(mmap64 HAVE_MMAP64)
0113 check_function_exists(munmap64 HAVE_MUNMAP64)
0114 check_function_exists(posix_fallocate64 HAVE_POSIX_FALLOCATE64)
0115 check_function_exists(posix_fallocate HAVE_POSIX_FALLOCATE)
0116 check_function_exists(fallocate HAVE_FALLOCATE)
0117 check_function_exists(statvfs HAVE_STATVFS)
0118 check_function_exists(statvfs64 HAVE_STATVFS64)
0119
0120 add_subdirectory(src)
0121 if(BUILD_TESTING)
0122 add_subdirectory(testlib)
0123 endif()
0124 add_subdirectory(examples)
0125 add_subdirectory(doc)
0126
0127 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KTorrent6")
0128
0129 configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KTorrent6Config.cmake.in"
0130 "${CMAKE_CURRENT_BINARY_DIR}/KTorrent6Config.cmake"
0131 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0132 PATH_VARS KDE_INSTALL_INCLUDEDIR
0133 )
0134
0135 # Install the CMake modules needed to use libktorrent
0136 add_subdirectory(cmake)
0137
0138 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KTorrent6Config.cmake"
0139 "${CMAKE_CURRENT_BINARY_DIR}/KTorrent6ConfigVersion.cmake"
0140 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0141 COMPONENT Devel)
0142
0143 install(EXPORT KTorrent6Targets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KTorrent6Targets.cmake)
0144
0145 ki18n_install(po)
0146
0147 # add clang-format target for all our real source files
0148 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0149 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0150 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0151
0152 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0153