# 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 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.
#
# 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
# 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 "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)

# 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
)

# 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)

# 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)
