diff options
-rw-r--r-- | CMakeLists.txt | 283 | ||||
-rw-r--r-- | build/CMakeLists.txt | 36 | ||||
-rw-r--r-- | cmconfig.h.in | 126 | ||||
-rw-r--r-- | docs/CMakeLists.txt | 33 | ||||
-rw-r--r-- | docs/man/CMakeLists.txt | 40 | ||||
-rw-r--r-- | fileattrs/CMakeLists.txt | 6 | ||||
-rw-r--r-- | include/rpm/CMakeLists.txt | 16 | ||||
-rw-r--r-- | lib/CMakeLists.txt | 66 | ||||
-rw-r--r-- | plugins/CMakeLists.txt | 51 | ||||
-rw-r--r-- | po/CMakeLists.txt | 16 | ||||
-rw-r--r-- | python/CMakeLists.txt | 27 | ||||
-rw-r--r-- | rpmio/CMakeLists.txt | 48 | ||||
-rw-r--r-- | scripts/CMakeLists.txt | 22 | ||||
-rw-r--r-- | sign/CMakeLists.txt | 19 |
14 files changed, 789 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..415a7f6dd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,283 @@ +#################################### +############ WARNING ############### +########## EXPERIMENTAL! ########### +#################################### + +cmake_minimum_required(VERSION 3.10) + +project(rpm + VERSION 4.18.90 + DESCRIPTION "The RPM Package Manager" + HOMEPAGE_URL "http://rpm.org" + LANGUAGES C +) + +# user configurable stuff +option(ENABLE_PYTHON "Enable Python bindings" ON) +option(ENABLE_PLUGINS "Enable plugin support" ON) +option(ENABLE_WERROR "Stop build on warnings" OFF) +option(ENABLE_SQLITE "Enable sqlite rpmdb support" ON) +option(ENABLE_NDB "Enable ndb rpmdb support" ON) +option(ENABLE_BDB_RO "Enable read-only Berkeley DB rpmdb support (EXPERIMENTAL)" OFF) + +option(WITH_INTERNAL_OPENPGP "Use internal OpenPGP parse (DEPRECATED)" ON) +option(WITH_OPENSSL "Use openssl (instead of libgcrypt) for internal crypto" OFF) + +option(WITH_CAP "Build with capability support" ON) +option(WITH_ACL "Build with ACL support" ON) +option(WITH_ARCHIVE "Build with libarchive support" ON) +option(WITH_SELINUX "Build with SELinux support" ON) +option(WITH_DBUS "Build with DBUS support" ON) +option(WITH_AUDIT "Build with audit support" ON) +option(WITH_FSVERITY "Build with fsverity support" OFF) +option(WITH_IMA "Build with IMA support" off) + +set(RPMCONFIGDIR "${CMAKE_INSTALL_PREFIX}/lib/rpm" CACHE PATH "rpm home") +set(RPMCANONVENDOR "vendor" CACHE STRING "rpm vendor string") + +# emulate libtool versioning +set(RPM_SOVERSION 9) +set(RPM_LIBVERSION ${RPM_SOVERSION}.3.0) + +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS ON) +set(CMAKE_SHARED_LIBRARY_PREFIX "") +set(CMAKE_SHARED_MODULE_PREFIX "") +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +include(GNUInstallDirs) +add_compile_definitions(_GNU_SOURCE) + +# autotools compat stuff +set(PACKAGE "${PROJECT_NAME}") +set(PACKAGE_NAME "${PROJECT_NAME}") +set(VERSION "${PROJECT_VERSION}") +set(PACKAGE_VERSION "${PROJECT_VERSION}") +set(PACKAGE_BUGREPORT "${PROJECT_HOMEPAGE_URL}") + +set(UID_0_USER root) +set(GID_0_GROUP root) + +function(makemacros) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix "\${prefix}") + set(CMAKE_INSTALL_PREFIX "\${prefix}") + set(acutils + awk ar as cpp cxx + ) + foreach (V ${acutils}) + string(TOUPPER ${V} n) + set(${n} /usr/bin/${V}) + endforeach() + set(extutils + 7zip bzip2 cat chmod chown cp curl file gpg grep gzip id cc ln + install lrzip lzip xz make mkdir mv patch rm sed tar unzip + zstd gem git hg bzr quilt ld objdump strip + ) + foreach (V ${extutils}) + string(TOUPPER ${V} n) + set(__${n} /usr/bin/${V}) + endforeach() + set(macrodirs + BINDIR SBINDIR LIBEXECDIR SYSCONFDIR RUNSTATEDIR + SHAREDSTATEDIR LOCALSTATEDIR RUNSTATEDIR LIB LIBDIR + INCLUDEDIR OLDINCLUDEDIR DATADIR DATAROOTDIR MANDIR + DOCDIR INFODIR + ) + foreach (V ${macrodirs}) + string(TOLOWER ${V} n) + set(${n} ${CMAKE_INSTALL_FULL_${V}}) + endforeach() + + set(DB_BACKEND sqlite) + set(__FIND_DEBUGINFO /usr/bin/find-debuginfo) + set(RUNDIR /run) + set(localstatedir /var) + + set(host_cpu ${CMAKE_HOST_SYSTEM_PROCESSOR}) + string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} host_os) + set(host_vendor redhat) + set(host ${host_cpu}-${host_vendor}-${host_os}) + + set(RPMCANONVENDOR ${host_vendor}) + set(RPMCANONOS ${host_os}) + set(RPMCANONGNU -gnu) + + configure_file(platform.in platform @ONLY) + configure_file(rpmrc.in rpmrc @ONLY) + configure_file(macros.in macros @ONLY) + configure_file(rpmpopt.in rpmpopt-${PROJECT_VERSION} @ONLY) + + install(CODE "execute_process( + COMMAND ${CMAKE_SOURCE_DIR}/installplatform + rpmrc platform macros + ${RPMCANONVENDOR} ${RPMCANONOS} ${RPMCANONGNU})" + ) +endfunction() + +include(CheckLibraryExists) +include(CheckFunctionExists) +include(CheckIncludeFile) + +find_package(PkgConfig REQUIRED) +find_package(OpenMP) +find_package(ZLIB REQUIRED) +find_package(BZip2) +find_package(LibLZMA) + +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(FSVERITY libfsverity) + +if (ENABLE_SQLITE) + pkg_check_modules(SQLITE sqlite3 REQUIRED) +endif() + +if (ENABLE_PYTHON) + find_package(Python3 COMPONENTS Interpreter Development REQUIRED) +endif() + +if (WITH_CAP) + pkg_check_modules(LIBCAP libcap REQUIRED) +endif() + +if (WITH_SELINUX) + pkg_check_modules(SELINUX libselinux REQUIRED) +endif() + +if (WITH_ARCHIVE) + pkg_check_modules(LIBARCHIVE libarchive REQUIRED) +endif() + +function(chkdef func) + string(TOUPPER ${func} FUNC) + set(HAVENAME HAVE_${FUNC}) + check_function_exists(${func} ${HAVENAME}) +endfunction() + +set(OPTFUNCS + stpcpy stpncpy putenv mempcpy fdatasync lutimes mergesort + getauxval setprogname __progname syncfs sched_getaffinity unshare + secure_getenv __secure_getenv) +foreach(f ${OPTFUNCS}) + chkdef(${f}) +endforeach() + +function(chkhdr inc) + string(MAKE_C_IDENTIFIER ${inc} ID) + string(TOUPPER ${ID} INC) + set(HAVENAME HAVE_${INC}) + check_include_file(${inc} ${HAVENAME}) +endfunction() + +set(OPTINCS + limits.h getopt.h + sys/utsname.h sys/systemcfg.h sys/param.h sys/auxv.h +) +foreach(f ${OPTINCS}) + chkhdr(${f}) +endforeach() + +configure_file(cmconfig.h.in config.h) +add_compile_definitions(HAVE_CONFIG_H) + +add_compile_definitions(MAJOR_IN_SYSMACROS) + +add_compile_definitions(RPMCONFIGDIR="${RPMCONFIGDIR}") +add_compile_definitions(LOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}") +add_compile_definitions(LOCALSTATEDIR="${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") +add_compile_definitions(SYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}") +add_compile_definitions(LIBRPMALIAS_FILENAME="rpmpopt-${VERSION}") +add_compile_definitions(LIBRPMALIAS_EXECPATH="${CMAKE_INSTALL_FULL_BINDIR}") + +# map module/package findings to autoconf tests +if (${BZIP2_FOUND}) + add_compile_definitions(HAVE_BZLIB_H) +endif() +if (${LIBLZMA_FOUND}) + add_compile_definitions(HAVE_LZMA_H) +endif() +if (${ZSTD_FOUND}) + add_compile_definitions(HAVE_ZSTD) +endif() + +if (ENABLE_WERROR) + add_compile_options(-Werror) +endif() + +include_directories(${CMAKE_BINARY_DIR}) +include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/include) + +add_subdirectory(docs) +add_subdirectory(include/rpm) +add_subdirectory(misc) +add_subdirectory(rpmio) +add_subdirectory(lib) +add_subdirectory(build) +add_subdirectory(sign) +add_subdirectory(po) + +if (ENABLE_PYTHON) + add_subdirectory(python) +endif() + +if (ENABLE_PLUGINS) + add_subdirectory(plugins) +endif() + + +add_subdirectory(fileattrs) +add_subdirectory(scripts) + +add_library(cliutils OBJECT cliutils.c cliutils.h) + +set(rpmbuild_libs librpmbuild) +set(rpmspec_libs librpmbuild ${READLINE_LIBRARIES}) +set(rpmsign_libs librpmsign) + +set(rpmlibs librpmio librpm ${POPT_LIBRARIES}) +set(rpmcli rpm rpmdb rpmkeys rpm2cpio rpmbuild rpmspec rpmsign) +if (WITH_ARCHIVE) + set(rpm2archive_libs ${LIBARCHIVE_LIBRARIES}) + list(APPEND rpmcli rpm2archive) +endif() + +foreach(cmd ${rpmcli}) + add_executable(${cmd} ${cmd}.c cliutils) + target_link_libraries(${cmd} PRIVATE ${rpmlibs} ${${cmd}_libs}) +endforeach() +install(TARGETS ${rpmcli}) + +foreach(cmd rpmverify rpmquery) + add_custom_target(${cmd} ALL COMMAND + ${CMAKE_COMMAND} -E create_symlink rpm ${cmd}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${cmd} TYPE BIN) +endforeach() + +set(rpmdeps_libs librpmbuild) +set(rpmlua_libs ${READLINE_LIBRARIES}) +set(rpmtools rpmdeps rpmgraph rpmlua rpmuncompress) +if (${LIBELF_FOUND}) + set(elfdeps_libs ${LIBELF_LIBRARIES}) + list(APPEND rpmtools elfdeps) +endif() +foreach(cmd ${rpmtools}) + add_executable(${cmd} tools/${cmd}.c) + target_link_libraries(${cmd} PRIVATE ${rpmlibs} ${${cmd}_libs}) +endforeach() +install(TARGETS elfdeps rpmdeps rpmuncompress DESTINATION ${RPMCONFIGDIR}) +install(TARGETS rpmgraph rpmlua) + +makemacros() +foreach(f macros rpmrc rpmpopt-${PROJECT_VERSION}) + install(FILES ${CMAKE_BINARY_DIR}/${f} DESTINATION ${RPMCONFIGDIR}) +endforeach() + +install(DIRECTORY DESTINATION ${RPMCONFIGDIR}/lua) +install(DIRECTORY DESTINATION ${RPMCONFIGDIR}/macros.d) +install(FILES CONTRIBUTING.md COPYING CREDITS INSTALL README TYPE DOC) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt new file mode 100644 index 000000000..813119224 --- /dev/null +++ b/build/CMakeLists.txt @@ -0,0 +1,36 @@ +set(librpmbuild_SOURCES + build.c files.c misc.c pack.c + parseSimpleScript.c parseChangelog.c parseDescription.c + parseFiles.c parsePreamble.c parsePrep.c parseReqs.c parseScript.c + parseSpec.c parseList.c reqprov.c rpmfc.c spec.c + parsePolicies.c policies.c + rpmbuild_internal.h rpmbuild_misc.h + speclua.c +) + +add_library(librpmbuild SHARED) +set_target_properties(librpmbuild PROPERTIES + VERSION ${RPM_LIBVERSION} + SOVERSION ${RPM_SOVERSION} +) +target_sources(librpmbuild PRIVATE ${librpmbuild_SOURCES}) +target_link_libraries(librpmbuild PUBLIC librpmio librpm) +target_link_libraries(librpmbuild PRIVATE + libmisc + ${LUA_LIBRARIES} + ${POPT_LIBRARIES} + ${MAGIC_LIBRARIES} + ${LIBELF_LIBRARIES} + ${LIBDW_LIBRARIES} +) + +if(WITH_CAP) + target_link_libraries(librpmbuild PRIVATE ${LIBCAP_LIBRARIES}) +endif() + +if(OpenMP_C_FOUND) + target_link_libraries(librpmbuild PRIVATE ${OpenMP_C_LIBRARIES}) +endif() + + +install(TARGETS librpmbuild) diff --git a/cmconfig.h.in b/cmconfig.h.in new file mode 100644 index 000000000..1803dd4cb --- /dev/null +++ b/cmconfig.h.in @@ -0,0 +1,126 @@ +#cmakedefine DBUS @DBUS@ +#cmakedefine ENABLE_INHIBIT_PLUGIN @ENABLE_INHIBIT_PLUGIN@ +#cmakedefine ENABLE_NDB @ENABLE_NDB@ +#cmakedefine ENABLE_NLS @ENABLE_NLS@ +#cmakedefine ENABLE_OPENMP @ENABLE_OPENMP@ +#cmakedefine ENABLE_PLUGINS @ENABLE_PLUGINS@ +#cmakedefine HAVE_BASENAME @HAVE_BASENAME@ +#cmakedefine HAVE_BN2BINPAD @HAVE_BN2BINPAD@ +#cmakedefine HAVE_BZLIB_H @HAVE_BZLIB_H@ +#cmakedefine HAVE_CAP_COMPARE @HAVE_CAP_COMPARE@ +#cmakedefine HAVE_DECL_FDATASYNC @HAVE_DECL_FDATASYNC@ +#cmakedefine HAVE_DIRENT_H @HAVE_DIRENT_H@ +#cmakedefine HAVE_DIRNAME @HAVE_DIRNAME@ +#cmakedefine HAVE_DLFCN_H @HAVE_DLFCN_H@ +#cmakedefine HAVE_DSA_SET0_KEY @HAVE_DSA_SET0_KEY@ +#cmakedefine HAVE_DSA_SET0_PQG @HAVE_DSA_SET0_PQG@ +#cmakedefine HAVE_DSA_SIG_SET0 @HAVE_DSA_SIG_SET0@ +#cmakedefine HAVE_DWELF_ELF_BEGIN @HAVE_DWELF_ELF_BEGIN@ +#cmakedefine HAVE_ELFUTILS_LIBDWELF_H @HAVE_ELFUTILS_LIBDWELF_H@ +#cmakedefine HAVE_EVP_MD_CTX_NEW @HAVE_EVP_MD_CTX_NEW@ +#cmakedefine HAVE_FCHMODAT @HAVE_FCHMODAT@ +#cmakedefine HAVE_FCHOWNAT @HAVE_FCHOWNAT@ +#cmakedefine HAVE_FDATASYNC @HAVE_FDATASYNC@ +#cmakedefine HAVE_FSTATAT @HAVE_FSTATAT@ +#cmakedefine HAVE_GELF_H @HAVE_GELF_H@ +#cmakedefine HAVE_GETADDRINFO @HAVE_GETADDRINFO@ +#cmakedefine HAVE_GETAUXVAL @HAVE_GETAUXVAL@ +#cmakedefine HAVE_GETCWD @HAVE_GETCWD@ +#cmakedefine HAVE_GETLINE @HAVE_GETLINE@ +#cmakedefine HAVE_GETOPT_H @HAVE_GETOPT_H@ +#cmakedefine HAVE_GETTEXT @HAVE_GETTEXT@ +#cmakedefine HAVE_GZSEEK @HAVE_GZSEEK@ +#cmakedefine HAVE_ICONV @HAVE_ICONV@ +#cmakedefine HAVE_INTTYPES_H @HAVE_INTTYPES_H@ +#cmakedefine HAVE_LCHOWN @HAVE_LCHOWN@ +#cmakedefine HAVE_LIBCRYPTO @HAVE_LIBCRYPTO@ +#cmakedefine HAVE_LIBDW @HAVE_LIBDW@ +#cmakedefine HAVE_LIBELF @HAVE_LIBELF@ +#cmakedefine HAVE_LIBNSL @HAVE_LIBNSL@ +#cmakedefine HAVE_LIBPTHREAD @HAVE_LIBPTHREAD@ +#cmakedefine HAVE_LIBSELINUX @HAVE_LIBSELINUX@ +#cmakedefine HAVE_LIBTHREAD @HAVE_LIBTHREAD@ +#cmakedefine HAVE_LIMITS_H @HAVE_LIMITS_H@ +#cmakedefine HAVE_LINKAT @HAVE_LINKAT@ +#cmakedefine HAVE_LINUX_FSVERITY_H @HAVE_LINUX_FSVERITY_H@ +#cmakedefine HAVE_LOCALTIME_R @HAVE_LOCALTIME_R@ +#cmakedefine HAVE_LSETXATTR @HAVE_LSETXATTR@ +#cmakedefine HAVE_LUTIMES @HAVE_LUTIMES@ +#cmakedefine HAVE_LZMA_H @HAVE_LZMA_H@ +#cmakedefine HAVE_MEMORY_H @HAVE_MEMORY_H@ +#cmakedefine HAVE_MEMPCPY @HAVE_MEMPCPY@ +#cmakedefine HAVE_MERGESORT @HAVE_MERGESORT@ +#cmakedefine HAVE_MKDIRAT @HAVE_MKDIRAT@ +#cmakedefine HAVE_MKFIFOAT @HAVE_MKFIFOAT@ +#cmakedefine HAVE_MKNODAT @HAVE_MKNODAT@ +#cmakedefine HAVE_MKSTEMP @HAVE_MKSTEMP@ +#cmakedefine HAVE_MREMAP @HAVE_MREMAP@ +#cmakedefine HAVE_NDIR_H @HAVE_NDIR_H@ +#cmakedefine HAVE_OPENAT @HAVE_OPENAT@ +#cmakedefine HAVE_OPENSSL_DSA_H @HAVE_OPENSSL_DSA_H@ +#cmakedefine HAVE_OPENSSL_EVP_H @HAVE_OPENSSL_EVP_H@ +#cmakedefine HAVE_OPENSSL_RSA_H @HAVE_OPENSSL_RSA_H@ +#cmakedefine HAVE_PTHREAD_H @HAVE_PTHREAD_H@ +#cmakedefine HAVE_PUTENV @HAVE_PUTENV@ +#cmakedefine HAVE_READLINE @HAVE_READLINE@ +#cmakedefine HAVE_REALPATH @HAVE_REALPATH@ +#cmakedefine HAVE_REGCOMP @HAVE_REGCOMP@ +#cmakedefine HAVE_RENAMEAT @HAVE_RENAMEAT@ +#cmakedefine HAVE_RSA_SET0_KEY @HAVE_RSA_SET0_KEY@ +#cmakedefine HAVE_SCHED_GETAFFINITY @HAVE_SCHED_GETAFFINITY@ +#cmakedefine HAVE_SECURE_GETENV @HAVE_SECURE_GETENV@ +#cmakedefine HAVE_SETENV @HAVE_SETENV@ +#cmakedefine HAVE_SETEXECFILECON @HAVE_SETEXECFILECON@ +#cmakedefine HAVE_SETPROGNAME @HAVE_SETPROGNAME@ +#cmakedefine HAVE_STATVFS @HAVE_STATVFS@ +#cmakedefine HAVE_STDINT_H @HAVE_STDINT_H@ +#cmakedefine HAVE_STDLIB_H @HAVE_STDLIB_H@ +#cmakedefine HAVE_STPCPY @HAVE_STPCPY@ +#cmakedefine HAVE_STPNCPY @HAVE_STPNCPY@ +#cmakedefine HAVE_STRINGS_H @HAVE_STRINGS_H@ +#cmakedefine HAVE_STRING_H @HAVE_STRING_H@ +#cmakedefine HAVE_STRUCT_DIRENT_D_TYPE @HAVE_STRUCT_DIRENT_D_TYPE@ +#cmakedefine HAVE_SYMLINKAT @HAVE_SYMLINKAT@ +#cmakedefine HAVE_SYNCFS @HAVE_SYNCFS@ +#cmakedefine HAVE_SYS_AUXV_H @HAVE_SYS_AUXV_H@ +#cmakedefine HAVE_SYS_DIR_H @HAVE_SYS_DIR_H@ +#cmakedefine HAVE_SYS_NDIR_H @HAVE_SYS_NDIR_H@ +#cmakedefine HAVE_SYS_PARAM_H @HAVE_SYS_PARAM_H@ +#cmakedefine HAVE_SYS_STAT_H @HAVE_SYS_STAT_H@ +#cmakedefine HAVE_SYS_SYSTEMCFG_H @HAVE_SYS_SYSTEMCFG_H@ +#cmakedefine HAVE_SYS_TYPES_H @HAVE_SYS_TYPES_H@ +#cmakedefine HAVE_SYS_UTSNAME_H @HAVE_SYS_UTSNAME_H@ +#cmakedefine HAVE_UNISTD_H @HAVE_UNISTD_H@ +#cmakedefine HAVE_UNLINKAT @HAVE_UNLINKAT@ +#cmakedefine HAVE_UNSETENV @HAVE_UNSETENV@ +#cmakedefine HAVE_UNSHARE @HAVE_UNSHARE@ +#cmakedefine HAVE_UTIMENSAT @HAVE_UTIMENSAT@ +#cmakedefine HAVE_UTIMES @HAVE_UTIMES@ +#cmakedefine HAVE_ZLIB_H @HAVE_ZLIB_H@ +#cmakedefine HAVE_ZSTD @HAVE_ZSTD@ +#cmakedefine HAVE___PROGNAME @HAVE___PROGNAME@ +#cmakedefine HAVE___SECURE_GETENV @HAVE___SECURE_GETENV@ +#cmakedefine MAJOR_IN_MKDEV @MAJOR_IN_MKDEV@ +#cmakedefine MAJOR_IN_SYSMACROS @MAJOR_IN_SYSMACROS@ +#cmakedefine RUNDIR @RUNDIR@ +#cmakedefine WITH_ACL @WITH_ACL@ +#cmakedefine WITH_AUDIT @WITH_AUDIT@ +#cmakedefine ENABLE_BDB_RO @ENABLE_BDB_RO@ +#cmakedefine WITH_CAP @WITH_CAP@ +#cmakedefine WITH_FSVERITY @WITH_FSVERITY@ +#cmakedefine WITH_IMAEVM @WITH_IMAEVM@ +#cmakedefine WITH_SELINUX @WITH_SELINUX@ +#cmakedefine ENABLE_SQLITE @ENABLE_SQLITE@ + +#cmakedefine UID_0_USER "@UID_0_USER@" +#cmakedefine GID_0_GROUP "@GID_0_GROUP@" + +#cmakedefine PACKAGE "@PACKAGE@" +#cmakedefine VERSION "@VERSION@" +#cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" +#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@" +#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" +#cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@" +#cmakedefine PACKAGE_URL "@PACKAGE_URL@" +#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" +#cmakedefine RPMCANONVENDOR "@RPMCANONVENDOR@" diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt new file mode 100644 index 000000000..24603a253 --- /dev/null +++ b/docs/CMakeLists.txt @@ -0,0 +1,33 @@ +find_program(PANDOC NAMES pandoc) + +add_subdirectory(man) + +set(refman + manual/arch_dependencies.md + manual/autosetup.md + manual/boolean_dependencies.md + manual/buildprocess.md + manual/conditionalbuilds.md + manual/dependencies.md + manual/dependency_generators.md + manual/devel_documentation.md + manual/file_triggers.md + manual/format.md + manual/hregions.md + manual/index.md + manual/large_files.md + manual/lua.md + manual/macros.md + manual/more_dependencies.md + manual/multiplebuilds.md + manual/plugins.md + manual/queryformat.md + manual/relocatable.md + manual/scriptlet_expansion.md + manual/signatures_digests.md + manual/spec.md + manual/tags.md + manual/triggers.md + manual/tsort.md +) +install(FILES ${refman} TYPE DOC) diff --git a/docs/man/CMakeLists.txt b/docs/man/CMakeLists.txt new file mode 100644 index 000000000..0b54e64c6 --- /dev/null +++ b/docs/man/CMakeLists.txt @@ -0,0 +1,40 @@ + +set(manuals + gendiff.1 rpm2cpio.8 + rpm.8 rpmbuild.8 rpmdb.8 rpmkeys.8 rpmsign.8 rpmspec.8 + rpmdeps.8 rpmgraph.8 rpmlua.8 rpm-misc.8 +) + +if (WITH_ARCHIVE) + list(APPEND manuals rpm2archive.8) +endif() + +if (ENABLE_PLUGINS) + list(APPEND manuals rpm-plugins.8 + rpm-plugin-prioreset.8 rpm-plugin-syslog.8) + if (WITH_AUDIT) + list(APPEND manuals rpm-plugin-audit.8) + endif() + if (WITH_DBUS) + list(APPEND manuals + rpm-plugin-dbus-announce.8 rpm-plugin-systemd-inhibit.8) + endif() + if (WITH_FAPOLICYD) + list(APPEND manuals rpm-plugin-fapolicyd.8) + endif() + if (WITH_IMA) + list(APPEND manuals rpm-plugin-ima.8) + endif() + if (WITH_SELINUX) + list(APPEND manuals rpm-plugin-selinux.8) + endif() +endif() + +foreach(man ${manuals}) + # XXX manuals should be pre-built in tarballs + if (DEFINED PANDOC) + add_custom_target(${man} ALL COMMAND ${PANDOC} + ${CMAKE_CURRENT_SOURCE_DIR}/${man}.md -o ${man}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${man} TYPE MAN) + endif() +endforeach() diff --git a/fileattrs/CMakeLists.txt b/fileattrs/CMakeLists.txt new file mode 100644 index 000000000..31cbc3ec2 --- /dev/null +++ b/fileattrs/CMakeLists.txt @@ -0,0 +1,6 @@ +set(fileattrs_DATA + debuginfo.attr desktop.attr elf.attr font.attr metainfo.attr + perl.attr perllib.attr pkgconfig.attr ocaml.attr + rpm_macro.attr script.attr) + +install(FILES ${fileattrs_DATA} DESTINATION ${RPMCONFIGDIR}/fileattrs) diff --git a/include/rpm/CMakeLists.txt b/include/rpm/CMakeLists.txt new file mode 100644 index 000000000..c9fbcc073 --- /dev/null +++ b/include/rpm/CMakeLists.txt @@ -0,0 +1,16 @@ +set(rpm_HEADERS + argv.h rpmbase64.h rpmcrypto.h rpmfileutil.h rpmio.h + rpmkeyring.h rpmlog.h rpmmacro.h rpmpgp.h rpmsq.h rpmstring.h + rpmstrpool.h rpmsw.h rpmurl.h rpmutil.h rpmver.h + + header.h rpmarchive.h rpmcallback.h rpmcli.h + rpmdb.h rpmds.h rpmfi.h rpmfiles.h rpmlib.h + rpmprob.h rpmps.h rpmtag.h rpmtd.h rpmte.h rpmte.h rpmts.h + rpmtypes.h + + rpmbuild.h rpmspec.h rpmfc.h + + rpmsign.h +) + +install(FILES ${rpm_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rpm ) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 000000000..d6b274c51 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,66 @@ +add_library(librpm SHARED) +set_target_properties(librpm PROPERTIES + VERSION ${RPM_LIBVERSION} + SOVERSION ${RPM_SOVERSION} +) + +set(librpm_SOURCES + backend/dbi.c backend/dbi.h backend/dummydb.c + backend/dbiset.c backend/dbiset.h + headerutil.c header.c headerfmt.c header_internal.h + rpmdb.c rpmdb_internal.h + fprint.c fprint.h tagname.c rpmtd.c + cpio.c cpio.h depends.c order.c formats.c tagexts.c fsm.c fsm.h + manifest.c manifest.h package.c + poptALL.c poptI.c poptQV.c psm.c query.c + rpmal.c rpmal.h rpmchecksig.c rpmds.c rpmds_internal.h + rpmfi.c rpmfi_internal.h + rpmgi.h rpmgi.c rpminstall.c rpmts_internal.h + rpmlead.c rpmlead.h rpmps.c rpmprob.c rpmrc.c + rpmte.c rpmte_internal.h rpmts.c rpmfs.h rpmfs.c + signature.c signature.h transaction.c + verify.c rpmlock.c rpmlock.h misc.h relocation.c + rpmscript.h rpmscript.c + rpmchroot.c rpmchroot.h + rpmplugins.c rpmplugins.h rpmplugin.h rpmug.c rpmug.h + rpmtriggers.h rpmtriggers.c rpmvs.c rpmvs.h +) + +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}) +endif() + +if(ENABLE_NDB) + list(APPEND librpm_SOURCES + backend/ndb/glue.c + backend/ndb/rpmpkg.c backend/ndb/rpmpkg.h + backend/ndb/rpmidx.c backend/ndb/rpmidx.h + backend/ndb/rpmxdb.c backend/ndb/rpmxdb.h + ) +endif() + +if(ENABLE_BDB_RO) + list(APPEND librpm_SOURCES backend/bdb_ro.c) + target_link_libraries(librpm PRIVATE ${SQLITE_LIBRARIES}) +endif() + +if(WITH_ACL) + target_link_libraries(librpm PRIVATE acl) +endif() + +if(WITH_CAP) + target_link_libraries(librpm PRIVATE ${LIBCAP_LIBRARIES}) +endif() + +add_custom_command(OUTPUT tagtbl.C + COMMAND AWK=gawk ${CMAKE_CURRENT_SOURCE_DIR}/gentagtbl.sh ${CMAKE_SOURCE_DIR}/include/rpm/rpmtag.h > tagtbl.C + DEPENDS ${CMAKE_SOURCE_DIR}/include/rpm/rpmtag.h gentagtbl.sh +) + +target_sources(librpm PRIVATE ${librpm_SOURCES} tagtbl.C) +target_link_libraries(librpm PUBLIC librpmio) +target_link_libraries(librpm PRIVATE ${POPT_LIBRARIES} ${LUA_LIBRARIES}) + +install(TARGETS librpm) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt new file mode 100644 index 000000000..05697a904 --- /dev/null +++ b/plugins/CMakeLists.txt @@ -0,0 +1,51 @@ +set(plugins prioreset syslog) + +if(WITH_SELINUX) + set(selinux_libs ${SELINUX_LDFLAGS}) + set(selinux_flags ${SELINUX_CFLAGS}) + list(APPEND plugins 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) +endif() + +if(WITH_IMA) + set(ima_libs imaevm) + list(APPEND plugins ima) +endif() + +if(WITH_FAPOLICYD) + list(APPEND plugins fapolicyd) +endif() + +if(WITH_AUDIT) + set(audit_libs -laudit) + list(APPEND plugins audit) +endif() + +if(FSVERITY_IOCTL) + set(fsverity_libs ${FSVERITY_LIBRARIES}) + list(APPEND plugins fsverity) +endif() + +set(plugindir ${CMAKE_INSTALL_FULL_LIBDIR}/rpm-plugins) + +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/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 000000000..4b62fa23b --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,16 @@ +find_package(Gettext) + +if(GETTEXT_FOUND) + # Discover our translations + file(READ LINGUAS linguas) + string(REPLACE " " ";" linguas ${linguas}) + set(linguas ${linguas}) + # Copy translations to build tree to avoid modifying source + foreach(lang ${linguas}) + string(STRIP ${lang} lang) + set(po ${lang}.po) + file(COPY ${po} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + list(APPEND pos ${CMAKE_CURRENT_BINARY_DIR}/${po}) + endforeach() + GETTEXT_CREATE_TRANSLATIONS(rpm.pot ALL ${pos}) +endif() diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt new file mode 100644 index 000000000..ac655c45d --- /dev/null +++ b/python/CMakeLists.txt @@ -0,0 +1,27 @@ +set(_rpm_SOURCES + rpmmodule.c rpmsystem-py.h + header-py.c header-py.h + rpmarchive-py.c rpmarchive-py.h + rpmds-py.c rpmds-py.h + rpmfd-py.c rpmfd-py.h + rpmfiles-py.c rpmfiles-py.h + rpmkeyring-py.c rpmkeyring-py.h + rpmmi-py.c rpmmi-py.h + rpmii-py.c rpmii-py.h + rpmps-py.c rpmps-py.h + rpmmacro-py.c rpmmacro-py.h + rpmstrpool-py.c rpmstrpool-py.h + rpmtd-py.c rpmtd-py.h + rpmte-py.c rpmte-py.h + rpmts-py.c rpmts-py.h + rpmver-py.c rpmver-py.h + spec-py.c spec-py.h +) + +Python3_add_library(_rpm ${_rpm_SOURCES}) +target_link_libraries(_rpm PRIVATE librpmio librpm librpmbuild librpmsign) + +install(TARGETS _rpm + DESTINATION ${Python3_SITEARCH}/rpm) +install(FILES rpm/transaction.py rpm/__init__.py + DESTINATION ${Python3_SITEARCH}/rpm) diff --git a/rpmio/CMakeLists.txt b/rpmio/CMakeLists.txt new file mode 100644 index 000000000..f003eae1f --- /dev/null +++ b/rpmio/CMakeLists.txt @@ -0,0 +1,48 @@ +add_library(librpmio SHARED) + +set(librpmio_SOURCES + argv.c base64.c digest.c expression.c macro.c rpmhook.h rpmhook.c + rpmio.c rpmlog.c rpmmalloc.c rgetopt.c rpmpgp.c rpmpgpval.h + rpmsq.c rpmsw.c url.c rpmio_internal.h rpmvercmp.c + rpmver.c rpmstring.c rpmfileutil.c rpmglob.c rpmkeyring.c + rpmstrpool.c rpmmacro_internal.h rpmlua.c rpmlua.h lposix.c) + +if (WITH_INTERNAL_OPENPGP) + list(APPEND librpmio_SOURCES rpmpgp_internal.h rpmpgp_internal.c) + 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}) + else() + pkg_check_modules(LIBGCRYPT libgcrypt REQUIRED) + list(APPEND librpmio_SOURCES digest_libgcrypt.c) + target_include_directories(librpmio PRIVATE + ${LIBGCRYPT_INCLUDE_DIRS}) + target_link_libraries(librpmio PRIVATE ${LIBGCRYPT_LIBRARIES}) + endif() +else() + find_library(RPMSEQUOIA librpm_sequoia.so.0 REQUIRED) + list(APPEND librpmio_SOURCES rpmpgp_sequoia.c) + target_link_libraries(librpmio PRIVATE ${RPMSEQUOIA}) +endif() + +set_target_properties(librpmio PROPERTIES + VERSION ${RPM_LIBVERSION} + SOVERSION ${RPM_SOVERSION} +) +target_sources(librpmio PRIVATE ${librpmio_SOURCES}) +target_link_libraries(librpmio PRIVATE ${POPT_LIBRARIES} ${LUA_LIBRARIES}) + +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() + +install(TARGETS librpmio +) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt new file mode 100644 index 000000000..235a3e339 --- /dev/null +++ b/scripts/CMakeLists.txt @@ -0,0 +1,22 @@ +set(rpmconfig_SCRIPTS + brp-compress brp-strip brp-strip-comment-note + brp-strip-static-archive brp-elfperms brp-remove-la-files + check-files check-prereqs + check-buildroot check-rpaths check-rpaths-worker + find-lang.sh find-requires find-provides + perl.prov perl.req + pkgconfigdeps.sh + ocamldeps.sh + fontconfig.prov script.req + rpm_macros_provides.sh + rpmdb_dump rpmdb_load + rpm2cpio.sh tgpg +) + +set(rpmconfig_DATA + rpm.daily rpm.log rpm.supp +) + +install(PROGRAMS gendiff TYPE BIN) +install(PROGRAMS ${rpmconfig_SCRIPTS} DESTINATION ${RPMCONFIGDIR}) +install(FILES ${rpmconfig_DATA} DESTINATION ${RPMCONFIGDIR}) diff --git a/sign/CMakeLists.txt b/sign/CMakeLists.txt new file mode 100644 index 000000000..78e5b70fa --- /dev/null +++ b/sign/CMakeLists.txt @@ -0,0 +1,19 @@ +set(librpmsign_SOURCES + rpmgensig.c rpmsignverity.c rpmsignfiles.c +) + +add_library(librpmsign SHARED) +set_target_properties(librpmsign PROPERTIES + VERSION ${RPM_LIBVERSION} + SOVERSION ${RPM_SOVERSION} +) +target_sources(librpmsign PRIVATE ${librpmsign_SOURCES}) +target_link_libraries(librpmsign PUBLIC librpmio librpm) +if (WITH_IMA) + target_link_libraries(librpmsign PRIVATE imaevm) +endif() +if (WITH_FSVERITY) + target_link_libraries(librpmsign PRIVATE ${FSVERITY_LIBRARIES}) +endif() + +install(TARGETS librpmsign) |