Files
hdk-sdl/cmake/HDKPackaging.cmake
T
2026-05-17 11:28:29 +00:00

72 lines
2.9 KiB
CMake

# HDK Packaging Policy
# Define variables for CPack
set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_VERSION "${CMAKE_PROJECT_VERSION}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_DESCRIPTION}")
# We mainly want component-based installations for nice split packages
set(CPACK_DEB_COMPONENT_INSTALL ON CACHE INTERNAL "Enable component install")
# Setup Debian Generator
set(CPACK_GENERATOR "DEB" CACHE INTERNAL "Deb generator")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "HDK Team" CACHE INTERNAL "HDK Team")
# Source package generator
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP" CACHE INTERNAL "Sources")
set(CPACK_SOURCE_IGNORE_FILES
"/.git/"
"/build/"
"/build.*/"
".*~$"
CACHE INTERNAL "Ignores"
)
# Component specific configurations
string(TOUPPER "${PROJECT_NAME}" UPPER_PROJ_NAME)
# CPack explicitly needs UPPERCASE. Hyphens must remain hyphens in modern CMake CPack.
# Only include RELEASE component for actual library/asset projects, not the root
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(COMP_RELEASE "${UPPER_PROJ_NAME}_RELEASE")
endif()
set(COMP_DEV "${UPPER_PROJ_NAME}_DEV")
set(COMP_DOC "${UPPER_PROJ_NAME}_DOC")
set(COMP_EXAMPLES "${UPPER_PROJ_NAME}_EXAMPLES")
if(DEFINED COMP_RELEASE)
set(CPACK_DEBIAN_${COMP_RELEASE}_PACKAGE_NAME "${PROJECT_NAME}" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_RELEASE}_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}.deb" CACHE INTERNAL "")
endif()
set(CPACK_DEBIAN_${COMP_DEV}_PACKAGE_NAME "${PROJECT_NAME}-dev" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_DOC}_PACKAGE_NAME "${PROJECT_NAME}-doc" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_EXAMPLES}_PACKAGE_NAME "${PROJECT_NAME}-examples" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_DEV}_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-dev.deb" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_DOC}_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-doc.deb" CACHE INTERNAL "")
set(CPACK_DEBIAN_${COMP_EXAMPLES}_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-examples.deb" CACHE INTERNAL "")
# Apply dependencies for each component
if(DEFINED ${PROJECT_NAME}_DEBIAN_RELEASE_DEPENDS)
set(CPACK_DEBIAN_${COMP_RELEASE}_PACKAGE_DEPENDS "${${PROJECT_NAME}_DEBIAN_RELEASE_DEPENDS}" CACHE INTERNAL "")
endif()
if(DEFINED ${PROJECT_NAME}_DEBIAN_DEV_DEPENDS)
set(CPACK_DEBIAN_${COMP_DEV}_PACKAGE_DEPENDS "${${PROJECT_NAME}_DEBIAN_DEV_DEPENDS}" CACHE INTERNAL "")
elseif(DEFINED ${PROJECT_NAME}_DEBIAN_DEPENDS)
set(CPACK_DEBIAN_${COMP_DEV}_PACKAGE_DEPENDS "${${PROJECT_NAME}_DEBIAN_DEPENDS}" CACHE INTERNAL "")
endif()
if(DEFINED ${PROJECT_NAME}_DEBIAN_EXAMPLES_DEPENDS)
set(CPACK_DEBIAN_${COMP_EXAMPLES}_PACKAGE_DEPENDS "${${PROJECT_NAME}_DEBIAN_EXAMPLES_DEPENDS}" CACHE INTERNAL "")
endif()
if(DEFINED ${PROJECT_NAME}_DEBIAN_DOC_DEPENDS)
set(CPACK_DEBIAN_${COMP_DOC}_PACKAGE_DEPENDS "${${PROJECT_NAME}_DEBIAN_DOC_DEPENDS}" CACHE INTERNAL "")
endif()
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
include(CPack)
endif()