You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PkgCreate.cmake 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # PkgCreate creates FreeBSD package for cmake
  2. # USAGE : ADD_FREEBSD_PACKAGE ( PKG_TARGET_NAME [DESCRIPTION] )
  3. FIND_PROGRAM(PKGCREATE
  4. NAMES pkg_create
  5. PATHS "/usr/sbin")
  6. IF ( PKGCREATE )
  7. GET_FILENAME_COMPONENT(PKGCREATE_PATH ${PKGCREATE} ABSOLUTE)
  8. MESSAGE(STATUS "Found pkg_create : ${PKGCREATE_PATH}")
  9. SET(PKGCREATE_FOUND "YES")
  10. ELSE ( PKGCREATE )
  11. MESSAGE(STATUS "pkg_create NOT found. package generation will not be available")
  12. SET(PKGCREATE_FOUND "NO")
  13. ENDIF ( PKGCREATE )
  14. MACRO(ADD_FREEBSD_PACKAGE PKGNAME PLIST_FILE)
  15. # let's create a directory to call 'make install DESTDIR=...' into:
  16. SET ( FREEBSD_DIR ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE} )
  17. FILE ( REMOVE ${FREEBSD_DIR} )
  18. FILE ( MAKE_DIRECTORY ${FREEBSD_DIR} )
  19. FILE ( MAKE_DIRECTORY ${FREEBSD_DIR}/pkg )
  20. # Calling "make install DESTDIR=${FREEBSD_DIR}"
  21. ADD_CUSTOM_TARGET(pkg_destdir_install
  22. COMMAND ${CMAKE_MAKE_PROGRAM} install CMAKE_INSTALL_PREFIX=/ DESTDIR=${FREEBSD_DIR}
  23. DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake
  24. COMMENT "Installing with DESTDIR = ${FREEBSD_DIR}"
  25. )
  26. ADD_DEPENDENCIES(pkg_destdir_install pkg_destdir_preinstall)
  27. ADD_CUSTOM_TARGET(pkg_destdir_preinstall
  28. COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=/ -DDESTDIR=${FREEBSD_DIR} .
  29. DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake
  30. COMMENT "Configuring with DESTDIR = ${FREEBSD_DIR}"
  31. )
  32. ADD_DEPENDENCIES(pkg_destdir_preinstall all preinstall)
  33. ADD_CUSTOM_COMMAND(
  34. OUTPUT ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
  35. COMMAND ${PKGCREATE_PATH} -c -"${PACKAGE_DESCRIPTION_SUMMARY}"
  36. -d -"${PACKAGE_DESCRIPTION}"
  37. -f ${PLIST_FILE}
  38. -p ${FREEBSD_DIR}
  39. ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
  40. # removing control, so its (re)generated each time we need to build the package
  41. DEPENDS ${PLIST_FILE}
  42. COMMENT "Generating freebsd package"
  43. )
  44. # the final target:
  45. ADD_CUSTOM_TARGET(${PKGNAME}_pkg
  46. DEPENDS ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
  47. )
  48. ADD_DEPENDENCIES(${PKGNAME}_pkg pkg_destdir_install)
  49. ENDMACRO(ADD_FREEBSD_PACKAGE PKGNAME)