diff --git a/CMakeLists.txt b/CMakeLists.txt index b6939b28..917756f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) @@ -280,3 +283,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) diff --git a/README.md b/README.md index 916f93a4..984a005a 100644 --- a/README.md +++ b/README.md @@ -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`目录下。 + ## 主要功能 ### 密码算法 diff --git a/cmake/DebPacking.cmake b/cmake/DebPacking.cmake new file mode 100644 index 00000000..60312bbd --- /dev/null +++ b/cmake/DebPacking.cmake @@ -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}) diff --git a/cmake/LinuxPacking.cmake b/cmake/LinuxPacking.cmake new file mode 100644 index 00000000..86451253 --- /dev/null +++ b/cmake/LinuxPacking.cmake @@ -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") diff --git a/cmake/RpmPacking.cmake b/cmake/RpmPacking.cmake new file mode 100644 index 00000000..61aefece --- /dev/null +++ b/cmake/RpmPacking.cmake @@ -0,0 +1,2 @@ +set(CPACK_RPM_FILE_NAME RPM-DEFAULT) +set(CPACK_RPM_PACKAGE_RELEASE ${CPACK_NOARCH_PACKAGE_RELEASE})