1
0
Fork 0
mirror of https://github.com/eosswedenorg/libantelope synced 2026-06-16 03:34:56 +02:00
libantelope/cmake/cpack_custom.cmake
2020-04-05 13:11:07 +02:00

124 lines
3.5 KiB
CMake

# Custom script to setup cpack properly.
# --------------------------------
# System variables
# --------------------------------
# check CMAKE_SIZEOF_VOID_P to know if we are 32 or 64 bit.
set( CPACK_SYSTEM_ARCH "x86" )
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set( CPACK_SYSTEM_ARCH "${CPACK_SYSTEM_ARCH}_64" )
endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
# Set CPACK_SYSTEM_NAME, CPACK_SYSTEM_VERSION
# and CPACK_DEBIAN_PACKAGE_ARCHITECTURE correctly for debian based systems.
execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE SYS OUTPUT_STRIP_TRAILING_WHITESPACE)
if (SYS)
string(TOLOWER "${SYS}" CPACK_SYSTEM_NAME )
# Set CPACK_SYSTEM_VERSION
execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE SYS_VER OUTPUT_STRIP_TRAILING_WHITESPACE)
if (SYS_VER)
set( CPACK_SYSTEM_VERSION ${SYS_VER} )
endif(SYS_VER)
# Try setting CPACK_DEBIAN_PACKAGE_ARCHITECTURE based on dpkg
if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
execute_process(
COMMAND dpkg --print-architecture
OUTPUT_VARIABLE ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (ARCH)
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH})
endif()
endif()
endif(SYS)
# set CPACK_DEBIAN_PACKAGE_ARCHITECTURE to somthing sane by default.
if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
# debian uses different names for 32/64 bit.
if (CPACK_SYSTEM_ARCH STREQUAL "x86")
set( ARCH "i386" )
else()
set( ARCH "amd64" )
endif()
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH})
endif()
endif()
# CPACK_SYSTEM_NAME defaults are weird. so we set good default here.
if (NOT CPACK_SYSTEM_NAME)
set (CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
endif()
# CPACK_SYSTEM_VERSION does not exist in original CPack. so we set a default here.
if (NOT CPACK_SYSTEM_VERSION)
set (CPACK_SYSTEM_VERSION ${CMAKE_SYSTEM_VERSION})
endif()
# --------------------------------
# Package variables
# --------------------------------
if (NOT CPACK_PACKAGE_NAME)
set( CPACK_PACKAGE_NAME ${PROJECT_NAME} )
endif()
# Forward some variables not handled by CPack.
if (NOT CPACK_PACKAGE_CONTACT AND PROJECT_MAINTAINER)
set( CPACK_PACKAGE_CONTACT ${PROJECT_MAINTAINER} )
endif()
# Set "correct" filename that also include system version.
if (CPACK_SYSTEM_VERSION)
set( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_SYSTEM_ARCH}" )
else()
set( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}_${CPACK_SYSTEM_ARCH}" )
endif()
# .deb specific
# Set release version default 1.
set( CPACK_DEBIAN_PACKAGE_RELEASE "1" CACHE STRING "Debian package release version" )
# For some reason CPackDeb does not honor CPACK_PACKAGE_HOMEPAGE_URL (that is set correctly)
# if CPACK_DEBIAN_PACKAGE_HOMEPAGE (that the docs says it should.)
# So we have to do it here.
set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" )
# Set "correct" filename that also include system version and architecture.
set( CPACK_DEBIAN_FILE_NAME
"${CPACK_PACKAGE_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb"
)
# --------------------------------
# Generator default
# --------------------------------
# Default to gzip tar on unix. zip otherwise.
if (NOT CPACK_GENERATOR)
if (UNIX)
set( CPACK_GENERATOR "TGZ" )
else()
set( CPACK_GENERATOR "ZIP" )
endif()
endif()
# --------------------------------
# Include original CPack module.
# --------------------------------
include( CPack )