CPackInfos.cmake
4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# This file configures CPack. We setup a version number that contains
# the current git revision if git is found. A zip file is created on
# all platforms. Additionally an NSIS Installer exe is created on windows
# and a .sh installer file for linux.
find_package(Git QUIET)
if (GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE VCS_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
if(NOT DEFINED CMD_RESULT)
set(VCS_BRANCH "master")
set(VCS_REVISION "na")
else()
execute_process(
COMMAND ${GIT_EXECUTABLE} status
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE DESCRIBE_STATUS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REPLACE "\n" " " DESCRIBE_STATUS ${DESCRIBE_STATUS})
string(REPLACE "\r" " " DESCRIBE_STATUS ${DESCRIBE_STATUS})
string(REPLACE "\rn" " " DESCRIBE_STATUS ${DESCRIBE_STATUS})
string(REPLACE " " ";" DESCRIBE_STATUS ${DESCRIBE_STATUS})
list(GET DESCRIBE_STATUS 2 VCS_BRANCH)
message(STATUS "Version: ${VCS_BRANCH}/${VCS_REVISION}")
execute_process(
COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE VCS_URL
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(ENV{LANG} "en_US")
execute_process(
COMMAND ${GIT_EXECUTABLE} log -n 10 "--date=format:%a %b %d %Y" "--pretty=format:* %ad %aN <%aE> %h - %s"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE CHANGELOG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
file(WRITE "${CMAKE_BINARY_DIR}/changelog" "${CHANGELOG}")
endif()
string(TIMESTAMP DATE_VERSION "%d.%m.%Y")
string(TIMESTAMP CURRENT_TIME "%d.%m.%Y %H:%M")
if (UNIX)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_GENERATOR STGZ)
if (NOT APPLE)
set(CPACK_GENERATOR ${CPACK_GENERATOR} ZIP)
find_program(LSB_RELEASE lsb_release)
execute_process(COMMAND ${LSB_RELEASE} -is
OUTPUT_VARIABLE LSB_RELEASE_ID_SHORT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (LSB_RELEASE_ID_SHORT MATCHES "Ubuntu")
set(CPACK_GENERATOR ${CPACK_GENERATOR} DEB)
else()
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
endif()
endif()
elseif(WIN32)
set(CPACK_GENERATOR NSIS)
endif()
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
string(TOLOWER ${CPACK_PACKAGE_NAME} CPACK_PACKAGE_NAME)
set(CPACK_PACKAGE_VERSION "${DATE_VERSION}_${VCS_REVISION}")
set(CPACK_PACKAGE_CONTACT "contact@openhantek.org")
set(CPACK_PACKAGE_VENDOR "OpenHantek Community")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Digital oscilloscope software for Hantek USB hardware")
set(CPACK_PACKAGE_DESCRIPTION "OpenHantek is an oscilloscope software for\nVoltcraft/Darkwire/Protek/Acetech/Hantek USB devices")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/readme.md")
if (EXISTS "${CMAKE_SOURCE_DIR}/COPYING")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
endif()
# Linux DEB+RPM
set(CPACK_DEBIAN_PACKAGE_SECTION "net")
set(CPACK_ARCH)
IF ((MSVC AND CMAKE_GENERATOR MATCHES "Win64+") OR (CMAKE_SIZEOF_VOID_P EQUAL 8))
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
set(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64")
set(CPACK_ARCH "x86_64")
else()
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i586")
set(CPACK_RPM_PACKAGE_ARCHITECTURE "i586")
set(CPACK_ARCH "x86")
endif()
set(CPACK_STRIP_FILES 1)
include(CMakeDetermineSystem)
# Linux RPM
set(CPACK_RPM_PACKAGE_RELOCATABLE NO)
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2+")
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
set(CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase-gui%{?_isa} >= 5.4, qt5-qttranslations%{?_isa}")
set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_BINARY_DIR}/changelog")
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-1.${CPACK_ARCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY ".")
SET(CPACK_OUTPUT_FILE_PREFIX packages)
include(CPack)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".")
include(InstallRequiredSystemLibraries)
cpack_add_install_type(Full DISPLAY_NAME "All")
set(VERSION ${CPACK_PACKAGE_VERSION})