Skip to content

Commit d008813

Browse files
committed
cmake: add cpack for generating packages
1 parent 842f47b commit d008813

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

CMakeLists.txt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,60 @@ install(EXPORT ${TARGETS_EXPORT_NAME}
9595

9696
# add to CMake registry
9797
export(PACKAGE ${PROJECT_NAME})
98+
99+
#---------------------------------------------------------------------------------------
100+
# Create release packages
101+
#---------------------------------------------------------------------------------------
102+
# package release version
103+
set(PACKAGE_RELEASE_VERSION 1)
104+
105+
# determine distribution and architecture
106+
find_program(LSB_RELEASE lsb_release)
107+
108+
execute_process(COMMAND uname -m OUTPUT_VARIABLE MACHINE_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
109+
110+
if(LSB_RELEASE)
111+
execute_process(COMMAND lsb_release -sr OUTPUT_VARIABLE LINUX_DISTRO_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
112+
execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE LINUX_DISTRO OUTPUT_STRIP_TRAILING_WHITESPACE)
113+
114+
string(TOLOWER ${LINUX_DISTRO} LINUX_DISTRO)
115+
endif()
116+
117+
# default CPack generators
118+
set(CPACK_GENERATOR TGZ STGZ)
119+
120+
# extra CPack generators
121+
if(LINUX_DISTRO STREQUAL "debian" OR LINUX_DISTRO STREQUAL "ubuntu" OR LINUX_DISTRO STREQUAL "linuxmint")
122+
list(APPEND CPACK_GENERATOR DEB)
123+
elseif(LINUX_DISTRO STREQUAL "fedora" OR LINUX_DISTRO STREQUAL "opensuse" OR LINUX_DISTRO STREQUAL "centos")
124+
list(APPEND CPACK_GENERATOR RPM)
125+
endif()
126+
127+
# general CPack config
128+
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/packages)
129+
message(STATUS "CPack: packages will be generated under ${CPACK_PACKAGE_DIRECTORY}")
130+
set(CPACK_PACKAGE_NAME "lib${PROJECT_NAME}")
131+
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
132+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LibTomMath")
133+
set(CPACK_PACKAGE_VENDOR "LibTomMath")
134+
set(CPACK_PACKAGE_CONTACT "libtom@googlegroups.com")
135+
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
136+
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${PACKAGE_RELEASE_VERSION}_${LINUX_DISTRO}-${LINUX_DISTRO_VERSION}_${MACHINE_ARCH})
137+
set(CPACK_STRIP_FILES ON)
138+
139+
# deb specific CPack config
140+
set(CPACK_DEBIAN_PACKAGE_RELEASE ${PACKAGE_RELEASE_VERSION})
141+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
142+
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
143+
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.libtom.net/LibTomMath")
144+
set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
145+
146+
# rpm specific CPack config
147+
set(CPACK_RPM_PACKAGE_URL "https://www.libtom.net/LibTomMath")
148+
set(CPACK_RPM_PACKAGE_RELEASE ${PACKAGE_RELEASE_VERSION})
149+
set(CPACK_RPM_PACKAGE_ARCHITECTURE ${MACHINE_ARCH})
150+
set(CPACK_RPM_PACKAGE_NAME "lib${PROJECT_NAME}-${PROJECT_VERSION}")
151+
set(CPACK_RPM_FILE_NAME "lib${PROJECT_NAME}_${PROJECT_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}_${LINUX_DISTRO}-${LINUX_DISTRO_VERSION}_${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
152+
set(CPACK_RPM_PACKAGE_LICENSE "WTFPL")
153+
154+
include(CPack)

0 commit comments

Comments
 (0)