Warning, /network/falkon/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # CMake version required. This must be the very first line, because it sets default policies affecting everything else 0002 cmake_minimum_required(VERSION 3.18) 0003 0004 # KDE Gear Version, managed by release script 0005 set(RELEASE_SERVICE_VERSION_MAJOR "24") 0006 set(RELEASE_SERVICE_VERSION_MINOR "04") 0007 set(RELEASE_SERVICE_VERSION_MICRO "70") 0008 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") 0009 0010 # Project name and version 0011 project(Falkon VERSION ${RELEASE_SERVICE_VERSION}) 0012 0013 set(KF_MAJOR_VERSION "6") 0014 set(QT_MIN_VERSION "6.4.0") 0015 set(KF_MIN_VERSION "5.240.0") 0016 0017 # Find ECM, with nice error handling in case of failure 0018 include(FeatureSummary) 0019 find_package(ECM ${KF_MIN_VERSION} CONFIG) 0020 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://invent.kde.org/frameworks/extra-cmake-modules") 0021 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) 0022 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 0023 0024 # Many includes from ECM, to get all the nice cmake functions and settings 0025 include(KDEInstallDirs) 0026 include(KDECMakeSettings) 0027 include(KDECompilerSettings NO_POLICY_SCOPE) 0028 include(ECMInstallIcons) 0029 include(ECMSetupVersion) 0030 include(ECMAddAppIcon) 0031 include(ECMQtDeclareLoggingCategory) 0032 include(ECMPoQmTools) 0033 0034 # Output dirs (like ECM 5.38 does) 0035 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") 0036 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") 0037 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") 0038 0039 if (UNIX AND NOT APPLE) 0040 set(FALKON_INSTALL_PLUGINDIR "${KDE_INSTALL_PLUGINDIR}/falkon") 0041 else() 0042 set(FALKON_INSTALL_PLUGINDIR "${KDE_INSTALL_PLUGINDIR}") 0043 endif() 0044 if (IS_ABSOLUTE ${FALKON_INSTALL_PLUGINDIR}) 0045 set(PLUGIN_PATH "${FALKON_INSTALL_PLUGINDIR}") 0046 else() 0047 set(PLUGIN_PATH "${CMAKE_INSTALL_PREFIX}/${FALKON_INSTALL_PLUGINDIR}") 0048 endif() 0049 if (NOT WIN32) 0050 set(FALKON_PLUGIN_PATH "${PLUGIN_PATH}" CACHE PATH "Default plugin search path") 0051 endif() 0052 0053 # Defines that are always set 0054 add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_USE_QSTRINGBUILDER -DQT_NO_CAST_TO_ASCII) 0055 0056 # Mandatory: Qt5/6 0057 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Widgets Network Sql QuickWidgets PrintSupport WebChannel) 0058 find_package(Qt6WebEngineCore ${QT_MIN_VERSION} REQUIRED) 0059 find_package(Qt6WebEngineWidgets ${QT_MIN_VERSION} REQUIRED) 0060 if (BUILD_TESTING) 0061 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Test) 0062 endif() 0063 if (NOT DISABLE_DBUS) 0064 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS DBus) 0065 endif() 0066 0067 if (UNIX AND NOT APPLE AND NOT NO_X11) 0068 add_definitions(-DQZ_WS_X11) 0069 find_package(XCB REQUIRED COMPONENTS XCB UTIL) 0070 endif() 0071 if (WIN32) 0072 add_definitions(-DW7API) 0073 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS WinExtras) 0074 0075 # taken from https://stackoverflow.com/a/40217291 0076 macro(get_WIN32_WINNT version) 0077 if (CMAKE_SYSTEM_VERSION) 0078 set(ver ${CMAKE_SYSTEM_VERSION}) 0079 string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver}) 0080 string(REGEX MATCH "^([0-9]+)" verMajor ${ver}) 0081 # Check for Windows 10, b/c we'll need to convert to hex 'A'. 0082 if ("${verMajor}" MATCHES "10") 0083 set(verMajor "A") 0084 string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver}) 0085 endif ("${verMajor}" MATCHES "10") 0086 # Remove all remaining '.' characters. 0087 string(REPLACE "." "" ver ${ver}) 0088 # Prepend each digit with a zero. 0089 string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver}) 0090 set(${version} "0x${ver}") 0091 endif(CMAKE_SYSTEM_VERSION) 0092 endmacro(get_WIN32_WINNT) 0093 0094 get_WIN32_WINNT(ver) 0095 add_definitions(-D_WIN32_WINNT=${ver}) 0096 endif() 0097 0098 find_package(Qt6Core5Compat) 0099 0100 # Mandatory: OpenSSL 0101 find_package(OpenSSL REQUIRED) 0102 0103 # Mandatory: KF6 0104 find_package(KF6 REQUIRED COMPONENTS Archive) 0105 0106 # KF5I18n: Mandatory with downloaded translations (only for ki18n_install) 0107 if (EXISTS "${CMAKE_SOURCE_DIR}/po") 0108 find_package(KF6I18n REQUIRED) 0109 endif() 0110 0111 # Optional: GnomeKeyring 0112 find_package(PkgConfig) 0113 if (PKG_CONFIG_FOUND) 0114 option(BUILD_KEYRING "Gnome keyring password plugin" ON) 0115 if (BUILD_KEYRING) 0116 pkg_check_modules(GNOME_KEYRING IMPORTED_TARGET gnome-keyring-1 ) 0117 endif() 0118 endif() 0119 0120 # Optional: KWallet, KIO, KCrash, KCoreAddons 0121 find_package(KF6Wallet ${KF_MIN_VERSION} CONFIG) 0122 set_package_properties(KF6Wallet PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0123 find_package(KF6KIO ${KF_MIN_VERSION} CONFIG) 0124 set_package_properties(KF6KIO PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0125 find_package(KF6Crash ${KF_MIN_VERSION} CONFIG) 0126 set_package_properties(KF6Crash PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0127 find_package(KF6CoreAddons ${KF_MIN_VERSION} CONFIG) 0128 set_package_properties(KF6CoreAddons PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0129 find_package(KF6Purpose ${KF_MIN_VERSION} CONFIG) 0130 set_package_properties(KF6Purpose PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0131 find_package(KF6JobWidgets ${KF_MIN_VERSION} CONFIG) 0132 set_package_properties(KF6JobWidgets PROPERTIES DESCRIPTION "KDE Frameworks Integration plugin" TYPE OPTIONAL) 0133 if (KF6Wallet_FOUND AND KF6KIO_FOUND AND KF6Crash_FOUND AND KF6CoreAddons_FOUND AND KF6Purpose_FOUND AND KF6JobWidgets_FOUND) 0134 set(ENABLE_KDE_FRAMEWORKS_INTEGRATION_PLUGIN TRUE) 0135 endif() 0136 0137 # Optional: PySide6 0138 option(BUILD_PYTHON_SUPPORT "Support for Python plugins" ON) 0139 if (BUILD_PYTHON_SUPPORT) 0140 find_package(Python3 COMPONENTS Development) 0141 find_package(PySide6 "6.4.0") 0142 find_package(Shiboken6 "6.4.0") 0143 find_package(Shiboken6Tools "6.4.0") 0144 set_package_properties(Python3 PROPERTIES DESCRIPTION "Python plugins" TYPE OPTIONAL) 0145 set_package_properties(PySide6 PROPERTIES DESCRIPTION "Python plugins" TYPE OPTIONAL) 0146 set_package_properties(Shiboken6 PROPERTIES DESCRIPTION "Python plugins" TYPE OPTIONAL) 0147 set_package_properties(Shiboken6Tools PROPERTIES DESCRIPTION "Python plugins" TYPE OPTIONAL) 0148 if (PySide6_FOUND AND Shiboken6_FOUND AND Shiboken6Tools_FOUND AND Python3_FOUND) 0149 set(ENABLE_PYTHON_PLUGINS TRUE) 0150 endif() 0151 endif() 0152 0153 find_package(Intl) 0154 if (Intl_FOUND) 0155 set(HAVE_LIBINTL TRUE) 0156 endif() 0157 0158 # Git revision 0159 if (EXISTS "${CMAKE_SOURCE_DIR}/.git") 0160 find_package(Git QUIET) 0161 if(GIT_FOUND) 0162 execute_process( 0163 COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD 0164 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 0165 OUTPUT_VARIABLE GIT_REVISION 0166 ) 0167 string(REGEX REPLACE "\n" "" GIT_REVISION "${GIT_REVISION}") 0168 set(FALKON_GIT_REVISION "${GIT_REVISION}") 0169 else() 0170 message(STATUS "Git revision could not be determined") 0171 endif() 0172 endif() 0173 0174 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/src/config.h) 0175 0176 # Include dirs used everywhere 0177 include_directories( 0178 ${CMAKE_SOURCE_DIR}/src/lib/3rdparty 0179 ${CMAKE_SOURCE_DIR}/src/lib/adblock 0180 ${CMAKE_SOURCE_DIR}/src/lib/app 0181 ${CMAKE_SOURCE_DIR}/src/lib/autofill 0182 ${CMAKE_SOURCE_DIR}/src/lib/bookmarks 0183 ${CMAKE_SOURCE_DIR}/src/lib/cookies 0184 ${CMAKE_SOURCE_DIR}/src/lib/downloads 0185 ${CMAKE_SOURCE_DIR}/src/lib/history 0186 ${CMAKE_SOURCE_DIR}/src/lib/navigation 0187 ${CMAKE_SOURCE_DIR}/src/lib/network 0188 ${CMAKE_SOURCE_DIR}/src/lib/notifications 0189 ${CMAKE_SOURCE_DIR}/src/lib/opensearch 0190 ${CMAKE_SOURCE_DIR}/src/lib/other 0191 ${CMAKE_SOURCE_DIR}/src/lib/plugins 0192 ${CMAKE_SOURCE_DIR}/src/lib/popupwindow 0193 ${CMAKE_SOURCE_DIR}/src/lib/preferences 0194 ${CMAKE_SOURCE_DIR}/src/lib/session 0195 ${CMAKE_SOURCE_DIR}/src/lib/sidebar 0196 ${CMAKE_SOURCE_DIR}/src/lib/tabwidget 0197 ${CMAKE_SOURCE_DIR}/src/lib/tools 0198 ${CMAKE_SOURCE_DIR}/src/lib/webengine 0199 ${CMAKE_SOURCE_DIR}/src/lib/webtab 0200 ) 0201 0202 # Finally, go into the subdirs 0203 add_subdirectory(src) 0204 0205 if (BUILD_TESTING) 0206 add_subdirectory(autotests) 0207 add_subdirectory(tests/benchmarks) 0208 endif() 0209 0210 # Tell releaseme that po is already taken care of 0211 # SKIP_PO_INSTALL 0212 0213 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)