CPackDeb.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # CPack script for creating Debian package
  2. # Author: Mathieu Malaterre
  3. #
  4. # http://wiki.debian.org/HowToPackageForDebian
  5. IF(CMAKE_BINARY_DIR)
  6. MESSAGE(FATAL_ERROR "CPackDeb.cmake may only be used by CPack internally.")
  7. ENDIF(CMAKE_BINARY_DIR)
  8. IF(NOT UNIX)
  9. MESSAGE(FATAL_ERROR "CPackDeb.cmake may only be used under UNIX.")
  10. ENDIF(NOT UNIX)
  11. # Let's define the control file found in debian package:
  12. # Binary package:
  13. # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
  14. # DEBIAN/control
  15. # debian policy enforce lower case for package name
  16. # Package: (mandatory)
  17. IF(NOT CPACK_DEBIAN_PACKAGE_NAME)
  18. STRING(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
  19. ENDIF(NOT CPACK_DEBIAN_PACKAGE_NAME)
  20. # Version: (mandatory)
  21. IF(NOT CPACK_DEBIAN_PACKAGE_VERSION)
  22. IF(NOT CPACK_PACKAGE_VERSION)
  23. MESSAGE(FATAL_ERROR "Debian package requires a package version")
  24. ENDIF(NOT CPACK_PACKAGE_VERSION)
  25. SET(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
  26. ENDIF(NOT CPACK_DEBIAN_PACKAGE_VERSION)
  27. # Architecture: (mandatory)
  28. IF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
  29. # There is no such thing as i686 architecture on debian, you should use i386 instead
  30. # $ dpkg --print-architecture
  31. FIND_PROGRAM(DPKG_CMD dpkg)
  32. IF(NOT DPKG_CMD)
  33. MESSAGE(STATUS "Can not find dpkg in your path, default to i386.")
  34. SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
  35. ENDIF(NOT DPKG_CMD)
  36. EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture
  37. OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
  38. OUTPUT_STRIP_TRAILING_WHITESPACE
  39. )
  40. ENDIF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
  41. # have a look at GET_PROPERTY(result GLOBAL PROPERTY ENABLED_FEATURES),
  42. # this returns the successful FIND_PACKAGE() calls, maybe this can help
  43. # Depends:
  44. # You should set: DEBIAN_PACKAGE_DEPENDS
  45. # TODO: automate 'objdump -p | grep NEEDED'
  46. IF(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
  47. MESSAGE(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
  48. ENDIF(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
  49. # Maintainer: (mandatory)
  50. IF(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
  51. IF(NOT CPACK_PACKAGE_CONTACT)
  52. MESSAGE(FATAL_ERROR "Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
  53. ENDIF(NOT CPACK_PACKAGE_CONTACT)
  54. SET(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
  55. ENDIF(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
  56. # Description: (mandatory)
  57. IF(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
  58. IF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
  59. MESSAGE(FATAL_ERROR "Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
  60. ENDIF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
  61. SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
  62. ENDIF(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
  63. # Section: (recommended)
  64. IF(NOT CPACK_DEBIAN_PACKAGE_SECTION)
  65. SET(CPACK_DEBIAN_PACKAGE_SECTION "devel")
  66. ENDIF(NOT CPACK_DEBIAN_PACKAGE_SECTION)
  67. # Priority: (recommended)
  68. IF(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
  69. SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
  70. ENDIF(NOT CPACK_DEBIAN_PACKAGE_PRIORITY )
  71. # Recommends:
  72. # You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
  73. # Suggests:
  74. # You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
  75. # CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
  76. # This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive)
  77. # Typical examples are:
  78. # - conffiles
  79. # - postinst
  80. # - postrm
  81. # - prerm"
  82. # Usage:
  83. # SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
  84. # "${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
  85. # For debian source packages:
  86. # debian/control
  87. # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
  88. # .dsc
  89. # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
  90. # Builds-Depends:
  91. #IF(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
  92. # SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
  93. # "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
  94. # )
  95. #ENDIF(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)