|
1 | | -cmake_minimum_required(VERSION 3.5) |
| 1 | +cmake_minimum_required(VERSION 3.16) |
2 | 2 |
|
3 | | -set(KF5_VERSION "5.76.0") # handled by release scripts |
4 | | -project(KArchive VERSION ${KF5_VERSION}) |
| 3 | +set(KF_VERSION "6.21.0") # handled by release scripts |
| 4 | +project(KArchive VERSION ${KF_VERSION}) |
5 | 5 |
|
6 | 6 | include(FeatureSummary) |
7 | | -find_package(ECM 5.75.0 NO_MODULE) |
| 7 | +find_package(ECM 6.20.0 NO_MODULE) |
8 | 8 | set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") |
9 | 9 | feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) |
10 | 10 |
|
| 11 | +option(WITH_BZIP2 "Make bzip2 required" ON) |
| 12 | +option(WITH_LIBLZMA "Make liblzma required" ON) |
| 13 | +option(WITH_OPENSSL "Make openssl required" ON) |
| 14 | +option(WITH_LIBZSTD "Make libzstd required" ON) |
| 15 | + |
| 16 | +option(BUILD_FUZZERS "Build KArchive fuzzers" OFF) |
| 17 | + |
| 18 | +set(PKGCONFIG_REQUIRED_TYPE "") |
| 19 | + |
| 20 | +if(WITH_BZIP2) |
| 21 | + set(BZIP2_PACKAGE_TYPE "REQUIRED") |
| 22 | +else() |
| 23 | + set(BZIP2_PACKAGE_TYPE "RECOMMENDED") |
| 24 | +endif() |
| 25 | + |
| 26 | +if(WITH_LIBLZMA) |
| 27 | + set(LIBLZMA_PACKAGE_TYPE "REQUIRED") |
| 28 | +else() |
| 29 | + set(LIBLZMA_PACKAGE_TYPE "RECOMMENDED") |
| 30 | +endif() |
| 31 | + |
| 32 | +if(WITH_OPENSSL) |
| 33 | + set(OPENSSL_PACKAGE_TYPE "REQUIRED") |
| 34 | +else() |
| 35 | + set(OPENSSL_PACKAGE_TYPE "RECOMMENDED") |
| 36 | +endif() |
| 37 | + |
| 38 | +if(WITH_LIBZSTD) |
| 39 | + set(PKGCONFIG_REQUIRED_TYPE "REQUIRED") |
| 40 | + set(LIBZSTD_REQUIRED_TYPE "REQUIRED") |
| 41 | +else() |
| 42 | + set(LIBZSTD_REQUIRED_TYPE "") |
| 43 | +endif() |
11 | 44 |
|
12 | 45 | set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) |
13 | 46 |
|
14 | 47 | include(KDEInstallDirs) |
15 | 48 | include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) |
16 | 49 | include(KDECMakeSettings) |
| 50 | +include(KDEGitCommitHooks) |
| 51 | +include(ECMGenerateQDoc) |
17 | 52 |
|
18 | 53 | include(ECMGenerateExportHeader) |
19 | 54 |
|
20 | | -set(REQUIRED_QT_VERSION 5.12.0) |
21 | | -find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) |
| 55 | +set(REQUIRED_QT_VERSION 6.8.0) |
| 56 | +find_package(Qt6Core ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) |
22 | 57 |
|
23 | 58 | find_package(ZLIB) |
24 | 59 | set_package_properties(ZLIB PROPERTIES |
25 | | - URL "http://www.zlib.net" |
| 60 | + URL "https://www.zlib.net" |
26 | 61 | DESCRIPTION "Support for gzip compressed files and data streams" |
27 | 62 | TYPE REQUIRED |
28 | | - PURPOSE "Required by the core KDE libraries and some critical kioslaves" |
| 63 | + PURPOSE "Support for gzip compressed files and data streams" |
29 | 64 | ) |
30 | 65 |
|
31 | 66 | find_package(BZip2) |
32 | 67 | set_package_properties(BZip2 PROPERTIES |
33 | 68 | URL "https://sourceware.org/bzip2/" |
34 | 69 | DESCRIPTION "Support for BZip2 compressed files and data streams" |
35 | | - TYPE RECOMMENDED |
| 70 | + TYPE ${BZIP2_PACKAGE_TYPE} |
36 | 71 | PURPOSE "Support for BZip2 compressed files and data streams" |
37 | 72 | ) |
38 | 73 |
|
39 | 74 | find_package(LibLZMA) |
40 | 75 | set_package_properties(LibLZMA PROPERTIES |
41 | | - URL "http://tukaani.org/xz/" |
| 76 | + URL "https://tukaani.org/xz/" |
42 | 77 | DESCRIPTION "Support for xz compressed files and data streams" |
| 78 | + TYPE ${LIBLZMA_PACKAGE_TYPE} |
43 | 79 | PURPOSE "Support for xz compressed files and data streams" |
44 | 80 | ) |
45 | | -include_directories( |
46 | | - ${ZLIB_INCLUDE_DIR} |
| 81 | + |
| 82 | +find_package(OpenSSL) |
| 83 | +set_package_properties(OpenSSL PROPERTIES |
| 84 | + URL "https://www.openssl.org/" |
| 85 | + DESCRIPTION "Support for encrypted archives" |
| 86 | + TYPE ${OPENSSL_PACKAGE_TYPE} |
| 87 | + PURPOSE "Support for encrypted archives" |
| 88 | +) |
| 89 | + |
| 90 | + |
| 91 | +find_package(PkgConfig ${PKGCONFIG_REQUIRED_TYPE}) |
| 92 | +if (PkgConfig_FOUND) |
| 93 | + pkg_check_modules(LibZstd ${LIBZSTD_REQUIRED_TYPE} IMPORTED_TARGET "libzstd") |
| 94 | +endif() |
| 95 | +add_feature_info(LibZstd LibZstd_FOUND |
| 96 | + "Support for zstd compressed files and data streams" |
47 | 97 | ) |
48 | 98 |
|
49 | 99 | include(ECMSetupVersion) |
50 | 100 | include(ECMGenerateHeaders) |
51 | 101 | include(ECMQtDeclareLoggingCategory) |
52 | | -include(ECMAddQch) |
| 102 | +include(ECMDeprecationSettings) |
| 103 | +include(ECMPoQmTools) |
53 | 104 |
|
54 | 105 | set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].") |
55 | 106 |
|
56 | | -option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) |
57 | | -add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") |
58 | | - |
| 107 | +set(karchive_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/karchive_version.h") |
59 | 108 | ecm_setup_version(PROJECT |
60 | 109 | VARIABLE_PREFIX KARCHIVE |
61 | | - VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/karchive_version.h" |
62 | | - PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5ArchiveConfigVersion.cmake" |
63 | | - SOVERSION 5) |
64 | | -add_definitions(-DQT_NO_FOREACH) |
65 | | -add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) |
| 110 | + VERSION_HEADER "${karchive_version_header}" |
| 111 | + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake" |
| 112 | + SOVERSION 6) |
| 113 | + |
| 114 | +ecm_set_disabled_deprecation_versions( |
| 115 | + QT 6.10 |
| 116 | +) |
| 117 | + |
66 | 118 |
|
67 | 119 | add_subdirectory(src) |
68 | 120 | if (BUILD_TESTING) |
69 | 121 | add_subdirectory(autotests) |
70 | 122 | add_subdirectory(tests) |
71 | 123 | endif() |
72 | 124 |
|
73 | | -# create a Config.cmake and a ConfigVersion.cmake file and install them |
74 | | -set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Archive") |
75 | | - |
76 | | -if (BUILD_QCH) |
77 | | - ecm_install_qch_export( |
78 | | - TARGETS KF5Archive_QCH |
79 | | - FILE KF5ArchiveQchTargets.cmake |
80 | | - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" |
81 | | - COMPONENT Devel |
82 | | - ) |
83 | | - set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5ArchiveQchTargets.cmake\")") |
| 125 | +if (BUILD_FUZZERS) |
| 126 | + add_subdirectory(autotests/ossfuzz) |
84 | 127 | endif() |
85 | 128 |
|
| 129 | +ecm_install_po_files_as_qm(poqm) |
| 130 | + |
| 131 | +# create a Config.cmake and a ConfigVersion.cmake file and install them |
| 132 | +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Archive") |
| 133 | + |
86 | 134 | include(CMakePackageConfigHelpers) |
87 | 135 |
|
88 | 136 | configure_package_config_file( |
89 | | - "${CMAKE_CURRENT_SOURCE_DIR}/KF5ArchiveConfig.cmake.in" |
90 | | - "${CMAKE_CURRENT_BINARY_DIR}/KF5ArchiveConfig.cmake" |
| 137 | + "${CMAKE_CURRENT_SOURCE_DIR}/KF6ArchiveConfig.cmake.in" |
| 138 | + "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake" |
91 | 139 | INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} |
92 | 140 | ) |
93 | 141 |
|
94 | | -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/karchive_version.h |
95 | | - DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} |
| 142 | +install(FILES ${karchive_version_header} |
| 143 | + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KArchive |
96 | 144 | COMPONENT Devel) |
97 | 145 |
|
98 | 146 | install(FILES |
99 | | - "${CMAKE_CURRENT_BINARY_DIR}/KF5ArchiveConfig.cmake" |
100 | | - "${CMAKE_CURRENT_BINARY_DIR}/KF5ArchiveConfigVersion.cmake" |
| 147 | + "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake" |
| 148 | + "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake" |
101 | 149 | DESTINATION "${CMAKECONFIG_INSTALL_DIR}" |
102 | 150 | COMPONENT Devel) |
103 | 151 |
|
104 | | -install(EXPORT KF5ArchiveTargets |
| 152 | +install(EXPORT KF6ArchiveTargets |
105 | 153 | DESTINATION "${CMAKECONFIG_INSTALL_DIR}" |
106 | | - FILE KF5ArchiveTargets.cmake |
107 | | - NAMESPACE KF5::) |
| 154 | + FILE KF6ArchiveTargets.cmake |
| 155 | + NAMESPACE KF6::) |
| 156 | + |
| 157 | +include(ECMFeatureSummary) |
| 158 | +ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) |
108 | 159 |
|
109 | | -feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) |
| 160 | +kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) |
0 commit comments