CPack.cmake 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. # Pick a configuration file
  2. SET(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
  3. IF(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
  4. SET(cpack_input_file "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
  5. ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
  6. SET(cpack_source_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
  7. IF(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
  8. SET(cpack_source_input_file "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
  9. ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
  10. # Macro for setting values if a user did not overwrite them
  11. MACRO(cpack_set_if_not_set name value)
  12. IF(NOT DEFINED "${name}")
  13. SET(${name} "${value}")
  14. ENDIF(NOT DEFINED "${name}")
  15. ENDMACRO(cpack_set_if_not_set)
  16. # Macro to encode variables for the configuration file
  17. MACRO(cpack_encode_variables)
  18. SET(_CPACK_OTHER_VARIABLES_)
  19. GET_CMAKE_PROPERTY(res VARIABLES)
  20. FOREACH(var ${res})
  21. IF("xxx${var}" MATCHES "xxxCPACK")
  22. SET(_CPACK_OTHER_VARIABLES_
  23. "${_CPACK_OTHER_VARIABLES_}\nSET(${var} \"${${var}}\")")
  24. ENDIF("xxx${var}" MATCHES "xxxCPACK")
  25. ENDFOREACH(var ${res})
  26. ENDMACRO(cpack_encode_variables)
  27. # Set the package name
  28. cpack_set_if_not_set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
  29. cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MAJOR "0")
  30. cpack_set_if_not_set(CPACK_PACKAGE_VERSION_MINOR "1")
  31. cpack_set_if_not_set(CPACK_PACKAGE_VERSION_PATCH "1")
  32. cpack_set_if_not_set(CPACK_PACKAGE_VERSION
  33. "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
  34. cpack_set_if_not_set(CPACK_PACKAGE_VENDOR "Humanity")
  35. cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
  36. "${CMAKE_PROJECT_NAME} built using CMake")
  37. cpack_set_if_not_set(CPACK_PACKAGE_DESCRIPTION_FILE
  38. "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
  39. cpack_set_if_not_set(CPACK_RESOURCE_FILE_LICENSE
  40. "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt")
  41. cpack_set_if_not_set(CPACK_RESOURCE_FILE_README
  42. "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
  43. cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
  44. "${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
  45. IF(CPACK_NSIS_MODIFY_PATH)
  46. SET(CPACK_NSIS_MODIFY_PATH ON)
  47. ENDIF(CPACK_NSIS_MODIFY_PATH)
  48. SET(__cpack_system_name ${CMAKE_SYSTEM_NAME})
  49. IF(${__cpack_system_name} MATCHES Windows)
  50. IF(CMAKE_CL_64)
  51. SET(__cpack_system_name win64)
  52. ELSE(CMAKE_CL_64)
  53. SET(__cpack_system_name win32)
  54. ENDIF(CMAKE_CL_64)
  55. ENDIF(${__cpack_system_name} MATCHES Windows)
  56. cpack_set_if_not_set(CPACK_SYSTEM_NAME "${__cpack_system_name}")
  57. # <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
  58. cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
  59. "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CPACK_SYSTEM_NAME}")
  60. cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
  61. "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
  62. cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
  63. "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
  64. MACRO(cpack_check_file_exists file description)
  65. IF(NOT EXISTS "${file}")
  66. MESSAGE(SEND_ERROR "CPack ${description} file: \"${file}\" could not be found.")
  67. ENDIF(NOT EXISTS "${file}")
  68. ENDMACRO(cpack_check_file_exists)
  69. cpack_check_file_exists("${CPACK_PACKAGE_DESCRIPTION_FILE}" "package description")
  70. cpack_check_file_exists("${CPACK_RESOURCE_FILE_LICENSE}" "license resource")
  71. cpack_check_file_exists("${CPACK_RESOURCE_FILE_README}" "readme resource")
  72. cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}" "welcome resource")
  73. # Pick a generator
  74. IF(NOT CPACK_GENERATOR)
  75. IF(UNIX)
  76. IF(APPLE)
  77. SET(CPACK_GENERATOR "PackageMaker")
  78. ELSE(APPLE)
  79. SET(CPACK_GENERATOR "STGZ")
  80. ENDIF(APPLE)
  81. SET(CPACK_SOURCE_GENERATOR "TGZ")
  82. ELSE(UNIX)
  83. SET(CPACK_GENERATOR "NSIS")
  84. SET(CPACK_SOURCE_GENERATOR "ZIP")
  85. ENDIF(UNIX)
  86. ENDIF(NOT CPACK_GENERATOR)
  87. # Set some other variables
  88. cpack_set_if_not_set(CPACK_INSTALL_CMAKE_PROJECTS
  89. "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
  90. cpack_set_if_not_set(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
  91. cpack_set_if_not_set(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}")
  92. cpack_set_if_not_set(CPACK_NSIS_DISPLAY_NAME "@CPACK_PACKAGE_INSTALL_DIRECTORY@")
  93. cpack_encode_variables()
  94. CONFIGURE_FILE("${cpack_input_file}"
  95. "${CMAKE_BINARY_DIR}/CPackConfig.cmake" @ONLY IMMEDIATE)
  96. # Generate source file
  97. cpack_set_if_not_set(CPACK_SOURCE_INSTALLED_DIRECTORIES
  98. "${CMAKE_SOURCE_DIR};/")
  99. cpack_set_if_not_set(CPACK_SOURCE_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}-Source")
  100. cpack_set_if_not_set(CPACK_SOURCE_PACKAGE_FILE_NAME
  101. "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-Source")
  102. cpack_set_if_not_set(CPACK_SOURCE_IGNORE_FILES
  103. "/CVS/;/\\\\\\\\.svn/;\\\\\\\\.swp$;\\\\\\\\.#;/#")
  104. SET(CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_SOURCE_INSTALL_CMAKE_PROJECTS}")
  105. SET(CPACK_INSTALLED_DIRECTORIES "${CPACK_SOURCE_INSTALLED_DIRECTORIES}")
  106. SET(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}")
  107. SET(CPACK_TOPLEVEL_TAG "${CPACK_SOURCE_TOPLEVEL_TAG}")
  108. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
  109. SET(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
  110. SET(CPACK_STRIP_FILES "${CPACK_SOURCE_STRIP_FILES}")
  111. cpack_encode_variables()
  112. CONFIGURE_FILE("${cpack_source_input_file}"
  113. "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake" @ONLY IMMEDIATE)