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