cmake_minimum_required(VERSION 3.16)

project(kshutdown)

set(CMAKE_CXX_STANDARD 17) # adds -std=gnu++17 option
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050F00)
add_definitions(-Wextra -Wpedantic -Wswitch-enum)

if (KS_FORCE_KF5)
	message(STATUS "Forcing KF5 and Qt 5.x")
else()
	find_package(Qt6 COMPONENTS Widgets DBus)
endif()

if (Qt6_FOUND)
	message(STATUS "Qt 6.x found")
else()
	message(STATUS "Qt 6.x NOT found. Trying Qt 5.x instead")

	find_package(Qt5 5.15 REQUIRED COMPONENTS Widgets DBus)
endif()

if(KS_PURE_QT)
	add_definitions(-DKS_PURE_QT)

	set(DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share)
	set(ICON_INSTALL_DIR ${DATA_INSTALL_DIR}/icons)
	set(XDG_APPS_INSTALL_DIR ${DATA_INSTALL_DIR}/applications)
# TODO: https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
else()
	add_definitions(-DKS_KF5)

	find_package(ECM REQUIRED NO_MODULE)
	set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})

	include(KDEInstallDirs)
	include(KDECompilerSettings)
# TODO: include(KDEFrameworkCompilerSettings) (?)
	include(KDECMakeSettings)

	if (Qt6_FOUND)
		# NOTE: for compatibility with KF5 (used in {po,src}/CMakeLists.txt)
		set(ICON_INSTALL_DIR ${KDE_INSTALL_FULL_ICONDIR})
		set(LOCALE_INSTALL_DIR ${KDE_INSTALL_FULL_LOCALEDIR})
		set(KNOTIFYRC_INSTALL_DIR ${KDE_INSTALL_FULL_KNOTIFYRCDIR})
		set(XDG_APPS_INSTALL_DIR ${KDE_INSTALL_FULL_APPDIR})

		find_package(KF6 REQUIRED COMPONENTS
			Config
			ConfigWidgets
			CoreAddons
			Crash
			DBusAddons
			GlobalAccel
			I18n
			IdleTime
			Notifications
			NotifyConfig
			StatusNotifierItem
			XmlGui
		)
	endif()

	if (Qt5_FOUND)
		find_package(KF5 REQUIRED COMPONENTS
			Config
			ConfigWidgets
			Crash
			DBusAddons
			GlobalAccel
			I18n
			IdleTime
			Notifications
			NotifyConfig
			XmlGui
		)
	endif()

	add_subdirectory(po)
endif()

include(FeatureSummary)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)

add_subdirectory(src)
