feat: linux packaging

This commit is contained in:
leonardodalinky
2022-12-30 01:25:07 +08:00
parent 8ff829dbcd
commit a30b70807a
5 changed files with 53 additions and 0 deletions

View File

@@ -1,8 +1,11 @@
cmake_minimum_required(VERSION 3.6)
project(GmSSL)
SET(CMAKE_PROJECT_HOMEPAGE_URL "http://gmssl.org")
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include_directories(include)
@@ -267,3 +270,11 @@ if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
# target_compile_options(gmssl PRIVATE /wd4996)
# target_compile_options(gmssl-bin PRIVATE /wd4996)
endif()
if (UNIX)
# packaging
include(LinuxPacking)
include(DebPacking)
include(RpmPacking)
include(CPack)
endif (UNIX)

View File

@@ -65,6 +65,26 @@ cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDR
make
```
### Linux软件包构建
依赖于cmake工具包中的cpack工具目前仅支持构建
* .deb
* .rpm
* .sh安装脚本
```bash
mkdir build; cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
# 构建deb软件包
cpack -G DEB
# 构建rpm软件包
cpack -G RPM
# 构建.sh安装脚本
make package
```
构建的软件包在`build`目录下。
## 主要功能
### 密码算法

3
cmake/DebPacking.cmake Normal file
View File

@@ -0,0 +1,3 @@
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_NOARCH_PACKAGE_RELEASE})
set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR})

17
cmake/LinuxPacking.cmake Normal file
View File

@@ -0,0 +1,17 @@
set(CPACK_PACKAGE_NAME "gmssl")
set(CPACK_PACKAGE_VENDOR "GmSSL develop team")
set(CPACK_PACKAGE_VERSION_MAJOR 3)
set(CPACK_PACKAGE_VERSION_MINOR 0)
set(CPACK_PACKAGE_VERSION_PATCH 0)
set(CPACK_PACKAGE_DESCRIPTION_FILE ${PROJECT_SOURCE_DIR}/README.md)
string(CONCAT CPACK_PACKAGE_DESCRIPTION_SUMMARY
"GmSSL is an open source cryptographic toolbox that supports SM2 / SM3 / SM4 / SM9 "
"and other national secret (national commercial password) algorithm. ")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_INSTALL_DIRECTORY /usr)
set(CPACK_PACKAGE_CONTACT "https://github.com/guanzhi/GmSSL/issues")
# The general number of package itself.
# Should be incremented when the package content changes for the same version.
# Can be used to distinguish between different builds of the same version.
# Can be overridden by `cmake -DCPACK_NOARCH_PACKAGE_RELEASE=1`
set(CPACK_NOARCH_PACKAGE_RELEASE 1 CACHE STRING "The general release number of package")

2
cmake/RpmPacking.cmake Normal file
View File

@@ -0,0 +1,2 @@
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
set(CPACK_RPM_PACKAGE_RELEASE ${CPACK_NOARCH_PACKAGE_RELEASE})