-# Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2022-2024 Soren Stoutner <soren@stoutner.com>
#
-# This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
+# This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc/>.
#
-# Privacy Browser PC is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option) any later
+# version.
#
-# Privacy Browser PC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
#
-# You should have received a copy of the GNU General Public License
-# along with Privacy Browser PC. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Set the minimum CMake version.
cmake_minimum_required(VERSION 3.16)
+# Name the project.
project(privacybrowser)
# Set the minimum framework versions.
-set(QT_MIN_VERSION "5.15.0")
-set(KDE_FRAMEWORKS_MIN_VERSION "5.83.0")
+set(QT_MIN_VERSION "6.0.0")
+set(KDE_FRAMEWORKS_MIN_VERSION "6.0.0")
+# Load the Extra CMake Modules that correspond to the KDE Frameworks version.
find_package(ECM ${KDE_FRAMEWORKS_MIN_VERSION} REQUIRED NO_MODULE)
+
+# Set the CMake module path.
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+# Include the KDE modules.
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
+# Include the Extra CMake Modules.
include(ECMInstallIcons)
include(ECMQtDeclareLoggingCategory)
include(FeatureSummary)
-find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core Gui Widgets)
+# Disable forcing of PIE, which appears to cause problems with Ubuntu's build system. <https://bugs.launchpad.net/ubuntu/+source/privacybrowser/+bug/2078732>
+# Include the Position Independent Executable checker. <https://cmake.org/cmake/help/latest/policy/CMP0083.html>
+#include(CheckPIESupported)
+
+# Check to see if Position Independent Executable is supported in the current linker and environment.
+#check_pie_supported()
+
+# Add the Position Independent Executable compiler flag if it is supported in the current linker and environment. <https://cmake.org/cmake/help/latest/variable/CMAKE_POSITION_INDEPENDENT_CODE.html>
+#set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+# Load the Qt components.
+find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
+ Core
+ Gui
+ PrintSupport
+ Sql
+ WebEngineCore
+ WebEngineWidgets
+ Widgets
+)
-find_package(KF5 ${KDE_FRAMEWORKS_MIN_VERSION} REQUIRED COMPONENTS
+# Load the KDE Frameworks components.
+find_package(KF6 ${KDE_FRAMEWORKS_MIN_VERSION} REQUIRED COMPONENTS
+ Completion
ConfigWidgets
CoreAddons
Crash
DBusAddons
DocTools
I18n
+ Notifications
+ KIO
XmlGui
)
+# Add the subdirectories.
add_subdirectory(doc)
add_subdirectory(src)
-# Make it possible to use the po files fetched by the fetch-translations step
-ki18n_install(po)
-kdoctools_install(po)
+# Install the PO files. These should be enabled once there are PO translations.
+#ki18n_install(po)
+#kdoctools_install(po)
+# Generate a summary.
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)