cpack.cmake 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #
  2. # Packaging
  3. # https://cmake.org/cmake/help/latest/module/CPack.html
  4. #
  5. set( CPACK_PACKAGE_NAME ${PROJECT_NAME} )
  6. set( CPACK_PACKAGE_VENDOR "Balluff" )
  7. set( CPACK_PACKAGE_DESCRIPTION_SUMMARY "oatpp - Light and powerful C++ web framework" )
  8. set( CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/oatpp/oatpp" )
  9. set( CPACK_PACKAGE_CONTACT "https://github.com/oatpp/oatpp" )
  10. set( CPACK_PACKAGE_VERSION ${OATPP_THIS_MODULE_VERSION} )
  11. set( CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME} )
  12. get_filename_component( oatpp_root_dir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY )
  13. set( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
  14. set( CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md" )
  15. set( CPACK_COMPONENT_Library_DISPLAY_NAME "oatpp Library" )
  16. set( CPACK_COMPONENT_Library_DESCRIPTION "The oatpp binary library." )
  17. set( CPACK_COMPONENT_Library_REQUIRED 1 )
  18. set( CPACK_COMPONENT_Devel_DISPLAY_NAME "oatpp Development Files" )
  19. set( CPACK_COMPONENT_Devel_DESCRIPTION "Development files for compiling against oatpp." )
  20. set( CPACK_COMPONENT_Devel_REQUIRED 0 )
  21. if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" )
  22. if ( "${CPACK_PACKAGE_ARCHITECTURE}" STREQUAL "" )
  23. # Note: the architecture should default to the local architecture, but it
  24. # in fact comes up empty. We call `uname -m` to ask the kernel instead.
  25. EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE )
  26. endif()
  27. set( CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1 )
  28. set( CPACK_PACKAGE_RELEASE 1 )
  29. # RPM - https://cmake.org/cmake/help/latest/cpack_gen/rpm.html
  30. set( CPACK_RPM_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE} )
  31. set( CPACK_RPM_PACKAGE_ARCHITECTURE ${CPACK_PACKAGE_ARCHITECTURE} )
  32. set( CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY} )
  33. set( CPACK_RPM_PACKAGE_URL ${CPACK_PACKAGE_HOMEPAGE_URL} )
  34. set( CPACK_RPM_PACKAGE_LICENSE "APACHE-2" )
  35. set( CPACK_RPM_COMPONENT_INSTALL 1 )
  36. set( CPACK_RPM_MAIN_COMPONENT "Library" )
  37. set( CPACK_RPM_COMPRESSION_TYPE "xz" )
  38. set( CPACK_RPM_PACKAGE_AUTOPROV 1 )
  39. set( CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}" )
  40. set( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
  41. set( CPACK_RPM_Library_PACKAGE_ARCHITECTURE ${CPACK_PACKAGE_ARCHITECTURE} )
  42. set( CPACK_RPM_Library_PACKAGE_NAME ${CPACK_PACKAGE_NAME} )
  43. set( CPACK_RPM_Library_FILE_NAME
  44. "${CPACK_RPM_Library_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_Library_PACKAGE_ARCHITECTURE}.rpm" )
  45. set( CPACK_RPM_Library_PACKAGE_SUMMARY ${CPACK_COMPONENT_Library_DESCRIPTION} )
  46. set( CPACK_RPM_Devel_PACKAGE_REQUIRES "cmake >= ${CMAKE_MINIMUM_REQUIRED_VERSION},oatpp >= ${CPACK_PACKAGE_VERSION}" )
  47. set( CPACK_RPM_Devel_PACKAGE_SUMMARY ${CPACK_COMPONENT_Devel_DESCRIPTION} )
  48. set( CPACK_RPM_Devel_PACKAGE_ARCHITECTURE "noarch" ) # only contains headers and cmake files
  49. set( CPACK_RPM_Devel_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-devel" )
  50. set( CPACK_RPM_Devel_FILE_NAME
  51. "${CPACK_RPM_Devel_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_Devel_PACKAGE_ARCHITECTURE}.rpm" )
  52. # DEB - https://cmake.org/cmake/help/latest/cpack_gen/deb.html
  53. set( CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-dev" )
  54. set( CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE} )
  55. set( CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL} )
  56. set( CPACK_DEB_COMPONENT_INSTALL 1 )
  57. set( CPACK_DEBIAN_COMPRESSION_TYPE "xz")
  58. if ( ${CPACK_PACKAGE_ARCHITECTURE} STREQUAL "x86_64" )
  59. set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64" ) # DEB doesn't always use the kernel's arch name
  60. else()
  61. set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${CPACK_PACKAGE_ARCHITECTURE} )
  62. endif()
  63. set( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" ) # Use default naming scheme
  64. set( CPACK_DEBIAN_LIBRARY_PACKAGE_NAME ${CPACK_PACKAGE_NAME} )
  65. set( CPACK_DEBIAN_LIBRARY_PACKAGE_SHLIBDEPS 1 )
  66. set( CPACK_DEBIAN_DEVEL_PACKAGE_DEPENDS "cmake (>= ${CMAKE_MINIMUM_REQUIRED_VERSION}), oatpp (>= ${CPACK_PACKAGE_VERSION})" )
  67. set( CPACK_DEBIAN_DEVEL_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-dev" )
  68. elseif( ${CMAKE_HOST_WIN32} )
  69. set( CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON )
  70. set( CPACK_NSIS_DISPLAY_NAME ${PROJECT_NAME} )
  71. set( CPACK_NSIS_PACKAGE_NAME ${PROJECT_NAME} )
  72. set( CPACK_NSIS_URL_INFO_ABOUT ${CPACK_PACKAGE_HOMEPAGE_URL} )
  73. endif()