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