# Copyright 2022-2024 Soren Stoutner <soren@stoutner.com>.
#
# 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.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with Privacy Browser PC.  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")

# 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(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
    Core
    Gui
    PrintSupport
    Sql
    WebEngineCore
    WebEngineWidgets
    Widgets
)

# Load the KDE Frameworks components.
find_package(KF5 ${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)
