CPackDeb.cmake 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
  32. ENDIF(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
  33. # have a look at GET_PROPERTY(result GLOBAL PROPERTY ENABLED_FEATURES),
  34. # this returns the successful FIND_PACKAGE() calls, maybe this can help
  35. # Depends:
  36. IF(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
  37. MESSAGE(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
  38. ENDIF(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
  39. # Maintainer: (mandatory)
  40. IF(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
  41. IF(NOT CPACK_PACKAGE_CONTACT)
  42. MESSAGE(FATAL_ERROR "Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
  43. ENDIF(NOT CPACK_PACKAGE_CONTACT)
  44. SET(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
  45. ENDIF(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
  46. # Description: (mandatory)
  47. IF(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
  48. IF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
  49. MESSAGE(FATAL_ERROR "Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
  50. ENDIF(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
  51. SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
  52. ENDIF(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
  53. # Section: (recommended)
  54. IF(NOT CPACK_DEBIAN_PACKAGE_SECTION)
  55. SET(CPACK_DEBIAN_PACKAGE_SECTION "devel")
  56. ENDIF(NOT CPACK_DEBIAN_PACKAGE_SECTION)
  57. # Priority: (recommended)
  58. IF(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
  59. SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
  60. ENDIF(NOT CPACK_DEBIAN_PACKAGE_PRIORITY )
  61. # Recommends:
  62. # You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
  63. # Suggests:
  64. # You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
  65. # For debian source packages:
  66. # debian/control
  67. # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
  68. # .dsc
  69. # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
  70. # Builds-Depends:
  71. #IF(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
  72. # SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
  73. # "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
  74. # )
  75. #ENDIF(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)