CMake/Modules/CPackDeb.cmake

102 lines
3.2 KiB
CMake

# CPack script for creating Debian package
# Author: Mathieu Malaterre
#
# http://wiki.debian.org/HowToPackageForDebian
IF(CMAKE_BINARY_DIR)
MESSAGE(FATAL_ERROR "CPackDeb.cmake may only be used by CPack internally.")
ENDIF(CMAKE_BINARY_DIR)
IF(NOT UNIX)
MESSAGE(FATAL_ERROR "CPackDeb.cmake may only be used under UNIX.")
ENDIF(NOT UNIX)
FIND_PROGRAM(AR_EXECUTABLE ar)
IF(NOT AR_EXECUTABLE)
# Is there a *NIX out there without ar ?
MESSAGE(FATAL_ERROR "Debian package requires ar executable")
ENDIF(NOT AR_EXECUTABLE)
# Let's define the control file found in debian package:
# Binary package:
# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
# DEBIAN/control
# debian policy enforce lower case for package name
# Package: (mandatory)
IF(NOT DEBIAN_PACKAGE_NAME)
STRING(TOLOWER "${CPACK_PACKAGE_NAME}" DEBIAN_PACKAGE_NAME)
ENDIF(NOT DEBIAN_PACKAGE_NAME)
# Version: (mandatory)
IF(NOT DEBIAN_PACKAGE_VERSION)
IF(NOT CPACK_PACKAGE_VERSION)
MESSAGE(FATAL_ERROR "Debian package requires a package version")
ENDIF(NOT CPACK_PACKAGE_VERSION)
SET(DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
ENDIF(NOT DEBIAN_PACKAGE_VERSION)
# Architecture: (mandatory)
IF(NOT DEBIAN_PACKAGE_ARCHITECTURE)
# There is no such thing as i686 architecture on debian, you should use i386 instead
# $ dpkg --print-architecture
SET(DEBIAN_PACKAGE_ARCHITECTURE i386)
ENDIF(NOT DEBIAN_PACAKGE_ARCHITECTURE)
# have a look at GET_PROPERTY(result GLOBAL ENABLED_FEATURES), this returns
# the successful FIND_PACKAGE() calls, maybe this can help
# Depends:
IF(NOT DEBIAN_PACKAGE_DEPENDS)
MESSAGE(STATUS "DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
ENDIF(NOT DEBIAN_PACKAGE_DEPENDS)
# Maintainer: (mandatory)
IF(NOT DEBIAN_PACKAGE_MAINTAINER)
IF(NOT CPACK_PACKAGE_CONTACT)
MESSAGE(FATAL_ERROR "Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or DEBIAN_PACKAGE_MAINTAINER")
ENDIF(NOT CPACK_PACKAGE_CONTACT)
SET(DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
ENDIF(NOT DEBIAN_PACKAGE_MAINTAINER)
# Description: (mandatory)
IF(NOT DEBIAN_PACKAGE_DESCRIPTION)
IF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
MESSAGE(FATAL_ERROR "Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or DEBIAN_PACKAGE_DESCRIPTION")
ENDIF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
SET(DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
ENDIF(NOT DEBIAN_PACKAGE_DESCRIPTION)
# Section: (recommended)
IF(NOT DEBIAN_PACKAGE_SECTION)
SET(DEBIAN_PACKAGE_SECTION "devel")
ENDIF(NOT DEBIAN_PACKAGE_SECTION)
# Priority: (recommended)
IF(NOT DEBIAN_PACKAGE_PRIORITY)
SET(DEBIAN_PACKAGE_PRIORITY "optional")
ENDIF(NOT DEBIAN_PACKAGE_PRIORITY )
# Recommends:
# You should set: DEBIAN_PACKAGE_RECOMMENDS
# Suggests:
# You should set: DEBIAN_PACKAGE_SUGGESTS
# For debian source packages:
# debian/control
# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
# .dsc
# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
# Builds-Depends:
#IF(NOT DEBIAN_PACKAGE_BUILDS_DEPENDS)
# SET(DEBIAN_PACKAGE_BUILDS_DEPENDS
# "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
# )
#ENDIF(NOT DEBIAN_PACKAGE_BUILDS_DEPENDS)