From 9cb8b89a01d6dc0b18449d2a1120e2816225adec Mon Sep 17 00:00:00 2001 From: Rolf Lussi Date: Mon, 7 Jun 2021 11:12:53 +0200 Subject: [PATCH] add cpack to build debian packages, split the packages by components --- CMakeLists.txt | 28 ++++++++++++++++++++++++---- docs/CMakeLists.txt | 4 ++-- tests/CMakeLists.txt | 16 ++++++++-------- tools/CMakeLists.txt | 2 +- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05570c1..4369c5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,9 +136,9 @@ endif() install(TARGETS ${EXPORT_SET} EXPORT sdbus-c++-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT static_libraries + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SDBUSCPP_INCLUDE_SUBDIR} COMPONENT dev) #---------------------------------- @@ -174,7 +174,7 @@ if(BUILD_DOC) message(STATUS "Building with documentation") option(BUILD_DOXYGEN_DOC "Build doxygen documentation for sdbus-c++ API" OFF) add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/docs") - install(FILES README README.md NEWS COPYING ChangeLog AUTHORS DESTINATION ${CMAKE_INSTALL_DOCDIR}) + install(FILES README README.md NEWS COPYING ChangeLog AUTHORS DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc) endif() #---------------------------------- @@ -199,3 +199,23 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmake/sdbus-c++-config.cmake configure_file(pkgconfig/sdbus-c++.pc.in pkgconfig/sdbus-c++.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/sdbus-c++.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev) + +#---------------------------------- +# CPack +#---------------------------------- +set(CPACK_PACKAGE_VENDOR "Kistler") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "high-level C++ D-Bus library") +set(CPACK_PACKAGE_CONTACT "info@kistler.com") +set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") +set(CPACK_COMPONENT_DEV_DEPENDS "runtime") + +# specific for DEB generator +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_DEBIAN_RUNTIME_DEBUGINFO_PACKAGE ON) +set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME ${PROJECT_NAME}) +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) +set(CPACK_DEBIAN_PACKAGE_SECTION "libs") +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON) + +include(CPack) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index e9d8274..76d43cc 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -16,7 +16,7 @@ if(BUILD_DOXYGEN_DOC) add_custom_command(TARGET doc POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/sdbus-c++-class-diagram.png ${CMAKE_CURRENT_BINARY_DIR}/html/.) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR} OPTIONAL) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR} OPTIONAL COMPONENT doc) else() message(WARNING "Documentation enabled, but Doxygen cannot be found") endif() @@ -26,4 +26,4 @@ install(FILES sdbus-c++-class-diagram.png sdbus-c++-class-diagram.uml systemd-dbus-config.md using-sdbus-c++.md - DESTINATION ${CMAKE_INSTALL_DOCDIR}) + DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7ecc327..fbf198c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -140,19 +140,19 @@ endif() set(TESTS_INSTALL_PATH "/opt/test/bin" CACHE STRING "Specifies where the test binaries will be installed") -install(TARGETS sdbus-c++-unit-tests DESTINATION ${TESTS_INSTALL_PATH}) -install(TARGETS sdbus-c++-integration-tests DESTINATION ${TESTS_INSTALL_PATH}) -install(FILES ${INTEGRATIONTESTS_SOURCE_DIR}/files/org.sdbuscpp.integrationtests.conf DESTINATION /etc/dbus-1/system.d) +install(TARGETS sdbus-c++-unit-tests DESTINATION ${TESTS_INSTALL_PATH} COMPONENT test) +install(TARGETS sdbus-c++-integration-tests DESTINATION ${TESTS_INSTALL_PATH} COMPONENT test) +install(FILES ${INTEGRATIONTESTS_SOURCE_DIR}/files/org.sdbuscpp.integrationtests.conf DESTINATION /etc/dbus-1/system.d COMPONENT test) if(ENABLE_PERF_TESTS) - install(TARGETS sdbus-c++-perf-tests-client DESTINATION ${TESTS_INSTALL_PATH}) - install(TARGETS sdbus-c++-perf-tests-server DESTINATION ${TESTS_INSTALL_PATH}) - install(FILES ${PERFTESTS_SOURCE_DIR}/files/org.sdbuscpp.perftests.conf DESTINATION /etc/dbus-1/system.d) + install(TARGETS sdbus-c++-perf-tests-client DESTINATION ${TESTS_INSTALL_PATH} COMPONENT test) + install(TARGETS sdbus-c++-perf-tests-server DESTINATION ${TESTS_INSTALL_PATH} COMPONENT test) + install(FILES ${PERFTESTS_SOURCE_DIR}/files/org.sdbuscpp.perftests.conf DESTINATION /etc/dbus-1/system.d COMPONENT test) endif() if(ENABLE_STRESS_TESTS) - install(TARGETS sdbus-c++-stress-tests DESTINATION ${TESTS_INSTALL_PATH}) - install(FILES ${STRESSTESTS_SOURCE_DIR}/files/org.sdbuscpp.stresstests.conf DESTINATION /etc/dbus-1/system.d) + install(TARGETS sdbus-c++-stress-tests DESTINATION ${TESTS_INSTALL_PATH} COMPONENT test) + install(FILES ${STRESSTESTS_SOURCE_DIR}/files/org.sdbuscpp.stresstests.conf DESTINATION /etc/dbus-1/system.d COMPONENT test) endif() #---------------------------------- diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index c932d36..56c48a1 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -49,7 +49,7 @@ target_include_directories(sdbus-c++-xml2cpp PRIVATE ${EXPAT_INCLUDE_DIRS}) # INSTALLATION #---------------------------------- -install(TARGETS sdbus-c++-xml2cpp EXPORT sdbus-c++-tools-targets DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS sdbus-c++-xml2cpp EXPORT sdbus-c++-tools-targets DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT dev) #---------------------------------- # CMAKE CONFIG & PACKAGE CONFIG