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