File Use-more-target-centric-cmake-code.patch of Package kmplayer5
From 0b7535b408dfc665c55ddcbc3402cd749ed5c2a5 Mon Sep 17 00:00:00 2001
From: "Friedrich W. H. Kossebau" <kossebau@kde.org>
Date: Wed, 19 May 2021 01:40:47 +0200
Subject: [PATCH] Use more target-centric cmake code
GIT_SILENT
---
CMakeLists.txt | 6 ++---
src/CMakeLists.txt | 4 ----
src/app/CMakeLists.txt | 17 +++++++-------
src/backends/npp/CMakeLists.txt | 8 +++----
src/backends/phonon/CMakeLists.txt | 14 ++++++-----
src/lib/CMakeLists.txt | 37 ++++++++++++++++++------------
src/part/CMakeLists.txt | 19 +++++++--------
7 files changed, 55 insertions(+), 50 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30519f0e..c5ea6908 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(kmplayer)
@@ -9,8 +9,8 @@ SET(KMPLAYER_PATCH_VERSION "0b")
SET(KMPLAYER_VERSION_STRING
"${KMPLAYER_MAJOR_VERSION}.${KMPLAYER_MINOR_VERSION}.${KMPLAYER_PATCH_VERSION}")
-set(QT_MIN_VERSION "5.12.0")
-set(KF5_MIN_VERSION "5.69.0")
+set(QT_MIN_VERSION "5.15.0")
+set(KF5_MIN_VERSION "5.80.0")
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0b0a415a..e2e4369b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,10 +2,6 @@ set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_DEBUGFULL "-DDEBUG ${CMAKE_CXX_FLAGS_DEBUGFULL}")
set(CMAKE_CXX_FLAGS_PROFILE "-DDEBUG ${CMAKE_CXX_FLAGS_PROFILE}")
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
-)
-
configure_file(config-kmplayer.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-kmplayer.h)
add_subdirectory(lib)
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 4cc242bc..f89bf08c 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -1,14 +1,17 @@
-add_definitions(-DKMPLAYER_VERSION_STRING="\\\"${KMPLAYER_VERSION_STRING}\\\"")
+kf5_add_kdeinit_executable(kmplayer)
-set(kmplayer_SRCS
+target_sources(kdeinit_kmplayer PRIVATE
kmplayer.cpp
kmplayer_lists.cpp
kmplayertvsource.cpp
#kmplayerbroadcast.cpp
#kmplayervdr.cpp
+ main.cpp
+
+ kmplayer.qrc
)
-ecm_qt_declare_logging_category(kmplayer_SRCS
+ecm_qt_declare_logging_category(kdeinit_kmplayer
HEADER kmplayerapp_log.h
IDENTIFIER LOG_KMPLAYER_APP
CATEGORY_NAME kmplayer.app
@@ -16,20 +19,16 @@ ecm_qt_declare_logging_category(kmplayer_SRCS
EXPORT KMPLAYER
)
-qt5_add_resources(kmplayer_SRCS
- kmplayer.qrc
+target_compile_definitions(kdeinit_kmplayer PRIVATE
+ -DKMPLAYER_VERSION_STRING="\\\"${KMPLAYER_VERSION_STRING}\\\""
)
-kf5_add_kdeinit_executable(kmplayer ${kmplayer_SRCS} main.cpp)
-
target_link_libraries(kdeinit_kmplayer
kmplayercommon
KF5::IconThemes
Qt5::X11Extras
)
-target_link_libraries(kmplayer kdeinit_kmplayer)
-
install(TARGETS kdeinit_kmplayer ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
install(TARGETS kmplayer ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
diff --git a/src/backends/npp/CMakeLists.txt b/src/backends/npp/CMakeLists.txt
index d54fc9d0..b0b8e58f 100644
--- a/src/backends/npp/CMakeLists.txt
+++ b/src/backends/npp/CMakeLists.txt
@@ -1,16 +1,16 @@
-include_directories(
+add_executable(knpplayer)
+
+target_include_directories(knpplayer PRIVATE
${GLibDBus_INCLUDE_DIRS}
${GTK_INCLUDE_DIRS}
${GThread_INCLUDE_DIRS}
${GModule_INCLUDE_DIRS}
)
-set(knpplayer_SRCS
+target_sources(knpplayer PRIVATE
npplayer.cpp
)
-add_executable(knpplayer ${knpplayer_SRCS})
-
target_link_libraries(knpplayer
${GLibDBus_LIBRARIES}
${GTK_LIBRARIES}
diff --git a/src/backends/phonon/CMakeLists.txt b/src/backends/phonon/CMakeLists.txt
index b915b0c4..78b3e56c 100644
--- a/src/backends/phonon/CMakeLists.txt
+++ b/src/backends/phonon/CMakeLists.txt
@@ -1,17 +1,19 @@
-set(kphononplayer_SRCS
- phononplayer.cpp
-)
+add_executable(kphononplayer)
-qt5_add_dbus_adaptor(kphononplayer_SRCS
+set(kphononplayer_dbus_SRCS)
+qt5_add_dbus_adaptor(kphononplayer_dbus_SRCS
${CMAKE_SOURCE_DIR}/src/lib/org.kde.kmplayer.agent.xml
phononplayer.h Agent
)
-qt5_add_dbus_adaptor(kphononplayer_SRCS
+qt5_add_dbus_adaptor(kphononplayer_dbus_SRCS
${CMAKE_SOURCE_DIR}/src/lib/org.kde.kmplayer.streamagent.xml
phononplayer.h Stream
)
-add_executable(kphononplayer ${kphononplayer_SRCS})
+target_sources(kphononplayer PRIVATE
+ phononplayer.cpp
+ ${kphononplayer_dbus_SRCS}
+)
target_link_libraries(kphononplayer
Phonon::phonon4qt5
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 129ea01a..931e58e5 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -1,11 +1,8 @@
-add_definitions(-DTRANSLATION_DOMAIN=\"kmplayer\")
+add_library(kmplayercommon SHARED)
-include_directories(
- ${CAIRO_INCLUDE_DIRS}
- ${EXPAT_INCLUDE_DIRS}
-)
+target_compile_definitions(kmplayercommon PRIVATE -DTRANSLATION_DOMAIN=\"kmplayer\")
-set(libkmplayercommon_SRCS
+target_sources(kmplayercommon PRIVATE
kmplayerview.cpp
playmodel.cpp
playlistview.cpp
@@ -29,7 +26,7 @@ set(libkmplayercommon_SRCS
viewarea.cpp
)
-ecm_qt_declare_logging_category(libkmplayercommon_SRCS
+ecm_qt_declare_logging_category(kmplayercommon
HEADER kmplayercommon_log.h
IDENTIFIER LOG_KMPLAYER_COMMON
CATEGORY_NAME kmplayer.common
@@ -37,39 +34,49 @@ ecm_qt_declare_logging_category(libkmplayercommon_SRCS
EXPORT KMPLAYER
)
-qt5_add_dbus_adaptor(libkmplayercommon_SRCS
+set(libkmplayercommon_dbus_SRCS)
+qt5_add_dbus_adaptor(libkmplayercommon_dbus_SRCS
org.kde.kmplayer.master.xml
kmplayerprocess.h KMPlayer::MasterProcessInfo
)
-qt5_add_dbus_adaptor(libkmplayercommon_SRCS
+qt5_add_dbus_adaptor(libkmplayercommon_dbus_SRCS
org.kde.kmplayer.streammaster.xml
kmplayerprocess.h KMPlayer::MasterProcess
)
-qt5_add_dbus_adaptor(libkmplayercommon_SRCS
+qt5_add_dbus_adaptor(libkmplayercommon_dbus_SRCS
org.kde.kmplayer.part.xml
kmplayerpartbase.h KMPlayer::PartBase
)
if (KMPLAYER_WITH_NPP)
- qt5_add_dbus_adaptor(libkmplayercommon_SRCS
+ qt5_add_dbus_adaptor(libkmplayercommon_dbus_SRCS
org.kde.kmplayer.callback.xml
kmplayerprocess.h KMPlayer::NpPlayer
)
- qt5_add_dbus_adaptor(libkmplayercommon_SRCS
+ qt5_add_dbus_adaptor(libkmplayercommon_dbus_SRCS
org.kde.kmplayer.stream.xml
kmplayerprocess.h KMPlayer::NpStream
)
-endif (KMPLAYER_WITH_NPP)
+endif ()
set_source_files_properties(org.freedesktop.PowerManagement.Inhibit.xml
PROPERTIES NO_NAMESPACE TRUE
)
-qt5_add_dbus_interfaces(libkmplayercommon_SRCS org.freedesktop.PowerManagement.Inhibit.xml)
+qt5_add_dbus_interfaces(libkmplayercommon_dbus_SRCS org.freedesktop.PowerManagement.Inhibit.xml)
-add_library(kmplayercommon SHARED ${libkmplayercommon_SRCS})
+target_sources(kmplayercommon PRIVATE
+ ${libkmplayercommon_dbus_SRCS}
+)
generate_export_header(kmplayercommon)
+target_include_directories(kmplayercommon
+ PUBLIC
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/..>" # config file
+ PRIVATE
+ ${CAIRO_INCLUDE_DIRS}
+ ${EXPAT_INCLUDE_DIRS}
+)
target_link_libraries(kmplayercommon
PUBLIC
KF5::MediaPlayer
diff --git a/src/part/CMakeLists.txt b/src/part/CMakeLists.txt
index 8bfcf31b..f5db0918 100644
--- a/src/part/CMakeLists.txt
+++ b/src/part/CMakeLists.txt
@@ -1,12 +1,18 @@
configure_file(kmplayer_part.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/kmplayer_part.desktop @ONLY)
-add_definitions(-DTRANSLATION_DOMAIN=\"kmplayer\")
+add_library(kmplayerpart MODULE)
-add_definitions(-DKMPLAYER_VERSION_STRING="\\\"${KMPLAYER_VERSION_STRING}\\\"")
+target_compile_definitions(kmplayerpart PRIVATE
+ -DTRANSLATION_DOMAIN=\"kmplayer\"
+ -DKMPLAYER_VERSION_STRING="\\\"${KMPLAYER_VERSION_STRING}\\\""
+)
-set(kmplayerpart_SRCS kmplayer_part.cpp)
+target_sources(kmplayerpart PRIVATE
+ kmplayer_part.cpp
+ kmplayer_part.qrc
+)
-ecm_qt_declare_logging_category(kmplayerpart_SRCS
+ecm_qt_declare_logging_category(kmplayerpart
HEADER kmplayerpart_log.h
IDENTIFIER LOG_KMPLAYER_PART
CATEGORY_NAME kmplayer.kpart
@@ -14,11 +20,6 @@ ecm_qt_declare_logging_category(kmplayerpart_SRCS
EXPORT KMPLAYER
)
-qt5_add_resources(kmplayerpart_SRCS
- kmplayer_part.qrc
-)
-
-add_library(kmplayerpart MODULE ${kmplayerpart_SRCS})
kcoreaddons_desktop_to_json(kmplayerpart ${CMAKE_CURRENT_BINARY_DIR}/kmplayer_part.desktop)
target_link_libraries(kmplayerpart
--
GitLab