From 71fe36cdc55588ec6776839b0efd058977eaac2e Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 25 Nov 2022 16:01:00 +0200 Subject: Use cmake imported targets to let it sort out the compiler flag details These imported targets passed to target_link_library() are supposed to handle all the pesky compilation, linkage etc details behind the scenes. I was pretty sure I was missing a trick with this, but this sure isn't exactly underlined in the documentation. Unroll the supposedly helpful loop for handling plugins: turns out doing this cmake native way is plenty shorter and more obvious too. The unroll kinda belongs to a separate commit but that'd be rather painful for very little if any gain. Fixes: #2269 and a whole class of similar cases, allegedly --- plugins/CMakeLists.txt | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) (limited to 'plugins') diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index b662ed2c7..3309c964e 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,51 +1,42 @@ -set(plugins prioreset syslog) +add_library(prioreset MODULE prioreset.c) +add_library(syslog MODULE syslog.c) if(WITH_SELINUX) - set(selinux_libs ${SELINUX_LDFLAGS}) - set(selinux_flags ${SELINUX_CFLAGS}) - list(APPEND plugins selinux) + add_library(selinux MODULE selinux.c) + target_link_libraries(selinux PRIVATE PkgConfig::SELINUX) endif() if(WITH_DBUS) - pkg_check_modules(DBUS dbus-1 REQUIRED) - set(systemd_inhibit_libs ${DBUS_LDFLAGS}) - set(systemd_inhibit_flags ${DBUS_CFLAGS}) - set(dbus_announce_libs ${DBUS_LDFLAGS}) - set(dbus_announce_flags ${DBUS_CFLAGS}) - list(APPEND plugins systemd_inhibit dbus_announce) + pkg_check_modules(DBUS REQUIRED IMPORTED_TARGET dbus-1) + add_library(systemd_inhibit MODULE systemd_inhibit.c) + target_link_libraries(systemd_inhibit PRIVATE PkgConfig::DBUS) + add_library(dbus_announce MODULE dbus_announce.c) + target_link_libraries(dbus_announce PRIVATE PkgConfig::DBUS) endif() -if(WITH_IMA) - set(ima_libs imaevm) - list(APPEND plugins ima) +if(WITH_IMAEVM) + add_library(ima MODULE ima.c) + target_link_libraries(ima PRIVATE imaevm) endif() if(WITH_FAPOLICYD) - list(APPEND plugins fapolicyd) + add_library(fapolicyd MODULE fapolicyd.c) endif() if(WITH_AUDIT) - set(audit_libs ${AUDIT_LDFLAGS}) - list(APPEND plugins audit) + add_library(audit MODULE audit.c) + target_link_libraries(audit PRIVATE PkgConfig::AUDIT) endif() if(WITH_FSVERITY) - set(fsverity_libs ${FSVERITY_LDFLAGS}) - list(APPEND plugins fsverity) + add_library(fsverity MODULE fsverity.c) + target_link_libraries(fsverity PRIVATE PkgConfig::FSVERITY) endif() set(plugindir ${CMAKE_INSTALL_FULL_LIBDIR}/rpm-plugins) +get_property(plugins DIRECTORY PROPERTY BUILDSYSTEM_TARGETS) foreach(plugin ${plugins}) - add_library(${plugin} MODULE ${plugin}.c) - set(ln ${plugin}_libs) - if (${ln}) - target_link_libraries(${plugin} PRIVATE ${${ln}}) - endif() - set(fn ${plugin}_flags) - if (${fn}) - target_compile_options(${plugin} PRIVATE ${${fn}}) - endif() install(TARGETS ${plugin} DESTINATION ${plugindir}) endforeach() -- cgit v1.2.1