rspamd/freebsd/cmake/PkgCreate.cmake

56 lines
2.2 KiB
CMake

# PkgCreate creates FreeBSD package for cmake
# USAGE : ADD_FREEBSD_PACKAGE ( PKG_TARGET_NAME [DESCRIPTION] )
FIND_PROGRAM(PKGCREATE
NAMES pkg_create
PATHS "/usr/sbin")
IF ( PKGCREATE )
GET_FILENAME_COMPONENT(PKGCREATE_PATH ${PKGCREATE} ABSOLUTE)
MESSAGE(STATUS "Found pkg_create : ${PKGCREATE_PATH}")
SET(PKGCREATE_FOUND "YES")
ELSE ( PKGCREATE )
MESSAGE(STATUS "pkg_create NOT found. package generation will not be available")
SET(PKGCREATE_FOUND "NO")
ENDIF ( PKGCREATE )
MACRO(ADD_FREEBSD_PACKAGE PKGNAME PLIST_FILE)
# let's create a directory to call 'make install DESTDIR=...' into:
SET ( FREEBSD_DIR ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE} )
FILE ( REMOVE ${FREEBSD_DIR} )
FILE ( MAKE_DIRECTORY ${FREEBSD_DIR} )
FILE ( MAKE_DIRECTORY ${FREEBSD_DIR}/pkg )
# Calling "make install DESTDIR=${FREEBSD_DIR}"
ADD_CUSTOM_TARGET(pkg_destdir_install
COMMAND ${CMAKE_MAKE_PROGRAM} install CMAKE_INSTALL_PREFIX=/ DESTDIR=${FREEBSD_DIR}
DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake
COMMENT "Installing with DESTDIR = ${FREEBSD_DIR}"
)
ADD_DEPENDENCIES(pkg_destdir_install pkg_destdir_preinstall)
ADD_CUSTOM_TARGET(pkg_destdir_preinstall
COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=/ -DDESTDIR=${FREEBSD_DIR} .
DEPENDS ${CMAKE_BINARY_DIR}/cmake_install.cmake
COMMENT "Configuring with DESTDIR = ${FREEBSD_DIR}"
)
ADD_DEPENDENCIES(pkg_destdir_preinstall all preinstall)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
COMMAND ${PKGCREATE_PATH} -c -"${PACKAGE_DESCRIPTION_SUMMARY}"
-d -"${PACKAGE_DESCRIPTION}"
-f ${PLIST_FILE}
-p ${FREEBSD_DIR}
${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
# removing control, so its (re)generated each time we need to build the package
DEPENDS ${PLIST_FILE}
COMMENT "Generating freebsd package"
)
# the final target:
ADD_CUSTOM_TARGET(${PKGNAME}_pkg
DEPENDS ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}.tbz
)
ADD_DEPENDENCIES(${PKGNAME}_pkg pkg_destdir_install)
ENDMACRO(ADD_FREEBSD_PACKAGE PKGNAME)