From 4a83b06ef20e192de0ba208f717221588133925d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 21 Apr 2020 14:22:42 +0200 Subject: [PATCH] CMake: new CPack structure with config defined in sub directories. --- CMakeLists.txt | 44 +++++++++++-------- cli/CMakeLists.txt | 26 +++++++++-- cli/cmake/CPackComponentConfig.cmake.in | 13 ++++++ .../{cpack_custom.cmake => CPackConfig.cmake} | 13 +----- cmake/CPackProperties.cmake.in | 7 +++ gui/CMakeLists.txt | 19 ++++++-- gui/cmake/CPackComponentConfig.cmake.in | 16 +++++++ 7 files changed, 101 insertions(+), 37 deletions(-) create mode 100644 cli/cmake/CPackComponentConfig.cmake.in rename cmake/{cpack_custom.cmake => CPackConfig.cmake} (88%) create mode 100644 cmake/CPackProperties.cmake.in create mode 100644 gui/cmake/CPackComponentConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c48bb2..97d5d09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,29 @@ endif() configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) include_directories(${PROJECT_BINARY_DIR}) +# -------------------------------- +# Install +# -------------------------------- + +# Readme and license +install(FILES README.md ${PROJECT_LICENSE_FILE} + DESTINATION ${CMAKE_INSTALL_SHAREDIR}) + +# -------------------------------- +# Package +# -------------------------------- + +include(CPackConfig) + +set( CPACK_COMPONENTS_ALL cli gui ) + +if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") + set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) +endif() + +set (CPACK_PROPERTIES_FILE ${PROJECT_BINARY_DIR}/CPackComponentsInclude.cmake) +configure_file(cmake/CPackProperties.cmake.in ${CPACK_PROPERTIES_FILE} @ONLY) + # -------------------------------- # Components # -------------------------------- @@ -90,23 +113,6 @@ if (BUILD_COMPONENT_GUI) endif() # -------------------------------- -# Install +# CPack # -------------------------------- - -# Readme and license -install(FILES README.md ${PROJECT_LICENSE_FILE} - DESTINATION ${CMAKE_INSTALL_SHAREDIR}) - -# -------------------------------- -# Package -# -------------------------------- - -if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") - set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) -endif() - -set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) -set( CPACK_DEBIAN_PACKAGE_SECTION "misc" ) -set( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON ) - -include( cpack_custom ) +include (CPack) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index f08a281..76c8621 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,3 +1,13 @@ +cmake_minimum_required(VERSION 3.15) + +# -------------------------------- +# Project Info +# -------------------------------- + +project(eosio-keygen + VERSION ${CMAKE_PROJECT_VERSION} + LANGUAGES CXX) + # Options option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) @@ -5,7 +15,7 @@ option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) # Program # -------------------------------- -set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) +set (PROGRAM_EXE ${PROJECT_NAME}) set (PROGRAM_SOURCE src/isatty.cpp @@ -30,7 +40,9 @@ target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) # Install # -------------------------------- -install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS ${PROGRAM_EXE} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT cli) # Documentation @@ -38,5 +50,13 @@ if (UNIX) configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 - DESTINATION ${CMAKE_INSTALL_MANDIR}) + DESTINATION ${CMAKE_INSTALL_MANDIR} + COMPONENT cli) endif (UNIX) + +# -------------------------------- +# Package +# -------------------------------- + +configure_file(cmake/CPackComponentConfig.cmake.in + ${PROJECT_BINARY_DIR}/CPackProperties.cmake) diff --git a/cli/cmake/CPackComponentConfig.cmake.in b/cli/cmake/CPackComponentConfig.cmake.in new file mode 100644 index 0000000..d1b5c1b --- /dev/null +++ b/cli/cmake/CPackComponentConfig.cmake.in @@ -0,0 +1,13 @@ + +# -------------------------------- +# CPack Component Config +# -------------------------------- + +set( CPACK_PACKAGE_CLI_NAME "${PROJECT_NAME}" ) +set( CPACK_PACKAGE_CLI_CONTACT "${PROJECT_MAINTAINER}" ) + +# Debian specific +set( CPACK_DEBIAN_CLI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_CLI_PACKAGE_PRIORITY "optional" ) +set( CPACK_DEBIAN_CLI_PACKAGE_SECTION "misc" ) +set( CPACK_DEBIAN_CLI_PACKAGE_DEPENDS "libssl1.1 (>= 1.1.0), libstdc++6 (>= 6)") diff --git a/cmake/cpack_custom.cmake b/cmake/CPackConfig.cmake similarity index 88% rename from cmake/cpack_custom.cmake rename to cmake/CPackConfig.cmake index d4fad9b..9dd5e7a 100644 --- a/cmake/cpack_custom.cmake +++ b/cmake/CPackConfig.cmake @@ -93,10 +93,8 @@ set( CPACK_DEBIAN_PACKAGE_RELEASE "1" CACHE STRING "Debian package release versi # 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 - "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb" -) +# Always build components for deb packages +set( CPACK_DEB_COMPONENT_INSTALL ON ) # -------------------------------- @@ -112,10 +110,3 @@ if (NOT CPACK_GENERATOR) set( CPACK_GENERATOR "ZIP" ) endif() endif() - - -# -------------------------------- -# Include original CPack module. -# -------------------------------- - -include( CPack ) diff --git a/cmake/CPackProperties.cmake.in b/cmake/CPackProperties.cmake.in new file mode 100644 index 0000000..6a75e0c --- /dev/null +++ b/cmake/CPackProperties.cmake.in @@ -0,0 +1,7 @@ + +# Include component specific config +foreach( component @CPACK_COMPONENTS_ALL@ ) + if (EXISTS "@CMAKE_CURRENT_BINARY_DIR@/${component}/CPackProperties.cmake") + include("@CMAKE_CURRENT_BINARY_DIR@/${component}/CPackProperties.cmake") + endif() +endforeach() diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 3a32d08..7d7911e 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,3 +1,9 @@ +cmake_minimum_required(VERSION 3.15) + +project(eosio-keygen-gui + VERSION ${CMAKE_PROJECT_VERSION} + DESCRIPTION "Keygenerator for EOSIO (gui)" + LANGUAGES CXX) # Qt5 needs MOC,RCC and UIC set( CMAKE_AUTOMOC ON ) @@ -20,9 +26,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Program # -------------------------------- -set( COMPONENT_NAME ${CMAKE_PROJECT_NAME}-gui) - -set( PROGRAM_EXE ${COMPONENT_NAME} ) +set( PROGRAM_EXE ${PROJECT_NAME} ) set( PROGRAM_SRC main.cpp @@ -45,4 +49,11 @@ target_link_libraries( ${PROGRAM_EXE} Qt5::Concurrent Qt5::Core Qt5::Widgets com install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT ${COMPONENT_NAME}) + COMPONENT gui) + +# -------------------------------- +# Package +# -------------------------------- + +configure_file(cmake/CPackComponentConfig.cmake.in + ${PROJECT_BINARY_DIR}/CPackProperties.cmake) diff --git a/gui/cmake/CPackComponentConfig.cmake.in b/gui/cmake/CPackComponentConfig.cmake.in new file mode 100644 index 0000000..ff52fc4 --- /dev/null +++ b/gui/cmake/CPackComponentConfig.cmake.in @@ -0,0 +1,16 @@ + +# -------------------------------- +# CPack Component Config +# -------------------------------- + +set( CPACK_PACKAGE_GUI_NAME "${PROJECT_NAME}" ) +set( CPACK_PACKAGE_GUI_CONTACT "${PROJECT_MAINTAINER}" ) + +# Additional description +set( CPACK_COMPONENT_GUI_DESCRIPTION "Graphical interface (Qt framework)" ) + +# Debian specific +set( CPACK_DEBIAN_GUI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_GUI_PACKAGE_PRIORITY "optional" ) +set( CPACK_DEBIAN_GUI_PACKAGE_SECTION "misc" ) +set( CPACK_DEBIAN_GUI_PACKAGE_SHLIBDEPS ON )