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)