# SPDX-FileCopyrightText: 2026 Christian Tosta # SPDX-License-Identifier: GPL-2.0-or-later # @file targets/debian/cmake/CPackRules.cmake # @brief Centralized CPack packaging rules for DEB and RPM option(BUILD_DEB "Build DEB package" OFF) option(BUILD_RPM "Build RPM package" OFF) set(CPACK_SOURCE_IGNORE_FILES "/.gitea$" "/.gitignore$" "/.git/" "/[.]agignore$" "/[.]dockerignore$" "/[.]editorconfig$" "/[.]gitea/" "/[.]github/" "/[.]vimrc$" "/build/" "/Makefile$" "pkg\\.spec\\.in$" "~$|\\.swp$" ) set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}") if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ActBuilder.cmake") include(cmake/ActBuilder.cmake) endif() file(READ "${CMAKE_CURRENT_SOURCE_DIR}/metadata.json" METADATA_JSON) string(JSON CPACK_PACKAGE_NAME GET ${METADATA_JSON} "name") string(JSON CPACK_PACKAGE_VERSION GET ${METADATA_JSON} "version") string(JSON CPACK_PACKAGE_RELEASE GET ${METADATA_JSON} "release") string(JSON CPACK_PACKAGE_VENDOR GET ${METADATA_JSON} "maintainer") set(CPACK_VERBATIM_VARIABLES YES) if(CPACK_PACKAGING_INSTALL_PREFIX AND NOT CPACK_PACKAGING_INSTALL_PREFIX STREQUAL "/") set(PACKAGE_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}") elseif(CMAKE_INSTALL_PREFIX AND NOT CMAKE_INSTALL_PREFIX STREQUAL "/") set(PACKAGE_PREFIX "${CMAKE_INSTALL_PREFIX}") else() set(PACKAGE_PREFIX "/usr/local") endif() set(CPACK_PACKAGING_INSTALL_PREFIX "${PACKAGE_PREFIX}") set(CPACK_SET_DESTDIR ON) set(CPACK_PACKAGE_RELOCATABLE "OFF") if(BUILD_RPM) set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_BINARY_DIR}/${CPACK_PACKAGE_NAME}.spec") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkg.spec.in" "${CPACK_RPM_USER_BINARY_SPECFILE}" @ONLY IMMEDIATE ) elseif(BUILD_DEB) set(CPACK_GENERATOR "DEB") string(JSON CPACK_DEBIAN_PACKAGE_MAINTAINER GET ${METADATA_JSON} "maintainer") string(JSON CPACK_DEBIAN_PACKAGE_ARCHITECTURE GET ${METADATA_JSON} "architecture") # Build and runtime dependencies string(JSON DEPENDS_LEN LENGTH ${METADATA_JSON} "deb-depends") set(CPACK_DEBIAN_PACKAGE_DEPENDS "") math(EXPR DEPENDS_MAX "${DEPENDS_LEN} - 1") foreach(i RANGE 0 ${DEPENDS_MAX}) string(JSON DEP GET ${METADATA_JSON} "deb-depends" ${i}) list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${DEP}) endforeach() list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS) set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE ON) endif() include(CPack)