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)