diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2022-11-25 16:01:00 +0200 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2022-11-28 11:31:21 +0200 |
commit | 71fe36cdc55588ec6776839b0efd058977eaac2e (patch) | |
tree | 5f6b7e4415c7f2270987d2f4d46ae0c661efd9a5 | |
parent | 17eb3a457a2d9f33ec7e9f031ccf7a951318cc7c (diff) | |
download | rpm-71fe36cdc55588ec6776839b0efd058977eaac2e.tar.gz |
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
-rw-r--r-- | CMakeLists.txt | 34 | ||||
-rw-r--r-- | build/CMakeLists.txt | 16 | ||||
-rw-r--r-- | lib/CMakeLists.txt | 10 | ||||
-rw-r--r-- | plugins/CMakeLists.txt | 45 | ||||
-rw-r--r-- | rpmio/CMakeLists.txt | 36 | ||||
-rw-r--r-- | sign/CMakeLists.txt | 2 |
6 files changed, 63 insertions, 80 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e3b82faa8..6a187c64c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,16 +118,16 @@ include(CheckIncludeFile) find_package(PkgConfig REQUIRED) find_package(ZLIB REQUIRED) find_package(BZip2) -find_package(LibLZMA) find_package(Iconv) -pkg_check_modules(LUA lua REQUIRED) -pkg_check_modules(POPT popt REQUIRED) -pkg_check_modules(MAGIC libmagic REQUIRED) -pkg_check_modules(READLINE readline) -pkg_check_modules(ZSTD libzstd) -pkg_check_modules(LIBELF libelf) -pkg_check_modules(LIBDW libdw) +pkg_check_modules(LUA REQUIRED IMPORTED_TARGET lua) +pkg_check_modules(POPT REQUIRED IMPORTED_TARGET popt) +pkg_check_modules(MAGIC REQUIRED IMPORTED_TARGET libmagic) +pkg_check_modules(READLINE IMPORTED_TARGET readline) +pkg_check_modules(ZSTD IMPORTED_TARGET libzstd) +pkg_check_modules(LIBELF IMPORTED_TARGET libelf) +pkg_check_modules(LIBDW IMPORTED_TARGET libdw) +pkg_check_modules(LIBLZMA IMPORTED_TARGET liblzma) if (ENABLE_OPENMP) find_package(OpenMP REQUIRED) @@ -138,7 +138,7 @@ if (ENABLE_NLS) endif() if (ENABLE_SQLITE) - pkg_check_modules(SQLITE sqlite3 REQUIRED) + pkg_check_modules(SQLITE REQUIRED IMPORTED_TARGET sqlite3) endif() if (ENABLE_PYTHON) @@ -146,31 +146,27 @@ if (ENABLE_PYTHON) endif() if (WITH_CAP) - pkg_check_modules(LIBCAP libcap REQUIRED) + pkg_check_modules(LIBCAP REQUIRED IMPORTED_TARGET libcap) endif() if (WITH_ACL) - pkg_check_modules(LIBACL libacl REQUIRED) + pkg_check_modules(LIBACL REQUIRED IMPORTED_TARGET libacl) endif() if (WITH_AUDIT) - pkg_check_modules(AUDIT audit REQUIRED) + pkg_check_modules(AUDIT REQUIRED IMPORTED_TARGET audit) endif() if (WITH_SELINUX) - pkg_check_modules(SELINUX libselinux REQUIRED) + pkg_check_modules(SELINUX REQUIRED IMPORTED_TARGET libselinux) endif() if (WITH_ARCHIVE) - pkg_check_modules(LIBARCHIVE libarchive REQUIRED) + pkg_check_modules(LIBARCHIVE REQUIRED IMPORTED_TARGET libarchive) endif() if (WITH_FSVERITY) - pkg_check_modules(FSVERITY libfsverity REQUIRED) -endif() - -if (NOT WITH_INTERNAL_OPENPGP) - pkg_check_modules(RPMSEQUOIA rpm-sequoia REQUIRED) + pkg_check_modules(FSVERITY REQUIRED IMPORTED_TARGET libfsverity) endif() find_program(__FIND_DEBUGINFO find-debuginfo) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index 6626bdcce..7155dad67 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -14,24 +14,22 @@ set_target_properties(librpmbuild PROPERTIES SOVERSION ${RPM_SOVERSION} ) target_sources(librpmbuild PRIVATE ${librpmbuild_SOURCES}) -target_include_directories(librpmbuild PRIVATE ${LUA_INCLUDE_DIRS}) target_link_libraries(librpmbuild PUBLIC librpmio librpm) target_link_libraries(librpmbuild PRIVATE libmisc - ${LUA_LIBRARIES} - ${POPT_LIBRARIES} - ${MAGIC_LIBRARIES} - ${LIBELF_LIBRARIES} - ${LIBDW_LIBRARIES} + PkgConfig::LUA + PkgConfig::POPT + PkgConfig::MAGIC + PkgConfig::LIBELF + PkgConfig::LIBDW ) if(WITH_CAP) - target_link_libraries(librpmbuild PRIVATE ${LIBCAP_LIBRARIES}) + target_link_libraries(librpmbuild PRIVATE PkgConfig::LIBCAP) endif() if(OpenMP_C_FOUND) - target_compile_options(librpmbuild PRIVATE ${OpenMP_C_FLAGS}) - target_link_libraries(librpmbuild PRIVATE ${OpenMP_C_LIBRARIES}) + target_link_libraries(librpmbuild PRIVATE OpenMP::OpenMP_C) endif() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 7eb1bc993..ae895b9b6 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -28,8 +28,7 @@ set(librpm_SOURCES if(ENABLE_SQLITE) list(APPEND librpm_SOURCES backend/sqlite.c) - target_include_directories(librpm PRIVATE ${SQLITE_INCLUDE_DIRS}) - target_link_libraries(librpm PRIVATE ${SQLITE_LIBRARIES}) + target_link_libraries(librpm PRIVATE PkgConfig::SQLITE) endif() if(ENABLE_NDB) @@ -46,11 +45,11 @@ if(ENABLE_BDB_RO) endif() if(WITH_ACL) - target_link_libraries(librpm PRIVATE ${LIBACL_LIBRARIES}) + target_link_libraries(librpm PRIVATE PkgConfig::LIBACL) endif() if(WITH_CAP) - target_link_libraries(librpm PRIVATE ${LIBCAP_LIBRARIES}) + target_link_libraries(librpm PRIVATE PkgConfig::LIBCAP) endif() add_custom_command(OUTPUT tagtbl.C @@ -59,8 +58,7 @@ add_custom_command(OUTPUT tagtbl.C ) target_sources(librpm PRIVATE ${librpm_SOURCES} tagtbl.C) -target_include_directories(librpm PRIVATE ${LUA_INCLUDE_DIRS}) target_link_libraries(librpm PUBLIC librpmio) -target_link_libraries(librpm PRIVATE ${POPT_LIBRARIES} ${LUA_LIBRARIES}) +target_link_libraries(librpm PRIVATE PkgConfig::POPT PkgConfig::LUA) install(TARGETS librpm) 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() diff --git a/rpmio/CMakeLists.txt b/rpmio/CMakeLists.txt index 1ea37afb6..7a25b6c12 100644 --- a/rpmio/CMakeLists.txt +++ b/rpmio/CMakeLists.txt @@ -12,19 +12,16 @@ if (WITH_INTERNAL_OPENPGP) if (WITH_OPENSSL) find_package(OpenSSL REQUIRED) list(APPEND librpmio_SOURCES digest_openssl.c) - target_include_directories(librpmio PRIVATE - ${OPENSSL_INCLUDE_DIRS}) - target_link_libraries(librpmio PRIVATE ${OPENSSL_LIBRARIES}) + target_link_libraries(librpmio PRIVATE OpenSSL:Crypto) else() - pkg_check_modules(LIBGCRYPT libgcrypt REQUIRED) + pkg_check_modules(LIBGCRYPT REQUIRED IMPORTED_TARGET libgcrypt) list(APPEND librpmio_SOURCES digest_libgcrypt.c) - target_include_directories(librpmio PRIVATE - ${LIBGCRYPT_INCLUDE_DIRS}) - target_link_libraries(librpmio PRIVATE ${LIBGCRYPT_LIBRARIES}) + target_link_libraries(librpmio PRIVATE PkgConfig::LIBGCRYPT) endif() else() + pkg_check_modules(RPMSEQUOIA REQUIRED IMPORTED_TARGET rpm-sequoia) list(APPEND librpmio_SOURCES rpmpgp_sequoia.c) - target_link_libraries(librpmio PRIVATE ${RPMSEQUOIA_LIBRARIES}) + target_link_libraries(librpmio PRIVATE PkgConfig::RPMSEQUOIA) endif() set_target_properties(librpmio PROPERTIES @@ -32,17 +29,20 @@ set_target_properties(librpmio PROPERTIES SOVERSION ${RPM_SOVERSION} ) target_sources(librpmio PRIVATE ${librpmio_SOURCES}) -target_include_directories(librpmio PRIVATE ${LUA_INCLUDE_DIRS}) -target_link_libraries(librpmio PRIVATE ${POPT_LIBRARIES} ${LUA_LIBRARIES}) +target_link_libraries(librpmio PRIVATE + PkgConfig::POPT + PkgConfig::LUA + ZLIB::ZLIB) -set(iolibs ZLIB BZIP2 LIBLZMA ZSTD) -foreach(lib ${iolibs}) - if (${${lib}_FOUND}) - target_include_directories(librpmio PRIVATE - ${${lib}_INCLUDE_DIRS}) - target_link_libraries(librpmio PRIVATE ${${lib}_LIBRARIES}) - endif() -endforeach() +if (ZSTD_FOUND) + target_link_libraries(librpmio PRIVATE PkgConfig::ZSTD) +endif() +if (LIBLZMA_FOUND) + target_link_libraries(librpmio PRIVATE PkgConfig::LIBLZMA) +endif() +if (BZIP2_FOUND) + target_link_libraries(librpmio PRIVATE BZip2::BZip2) +endif() install(TARGETS librpmio ) diff --git a/sign/CMakeLists.txt b/sign/CMakeLists.txt index 61fef9d3c..c35aa31bd 100644 --- a/sign/CMakeLists.txt +++ b/sign/CMakeLists.txt @@ -14,7 +14,7 @@ if (WITH_IMAEVM) endif() if (WITH_FSVERITY) list(APPEND librpmsign_SOURCES rpmsignverity.c) - target_link_libraries(librpmsign PRIVATE ${FSVERITY_LDFLAGS}) + target_link_libraries(librpmsign PRIVATE PkgConfig::FSVERITY) endif() target_sources(librpmsign PRIVATE ${librpmsign_SOURCES}) |