diff --git a/.travis.yml b/.travis.yml index 370c6db9..e77d2278 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,25 +25,25 @@ jobs: - compiler: gcc env: OS=ubuntu DIST=bionic BUILD_TYPE=cpack CPACK_BOARDS="afcv3" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+ubu1804" DEPLOY="yes" - compiler: gcc - env: OS=ubuntu DIST=bionic BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+ubu1804" DEPLOY="yes" + env: OS=ubuntu DIST=bionic BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" BUILD_PCIEDRIVER_PACKAGE=yes CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+ubu1804" DEPLOY="yes" - compiler: gcc env: OS=centos DIST=7 BUILD_TYPE=cpack CPACK_BOARDS="ml605" CPACK_GENERATORS="RPM" CPACK_DISTRO_VERSION="+el7" DEPLOY="yes" - compiler: gcc env: OS=centos DIST=7 BUILD_TYPE=cpack CPACK_BOARDS="afcv3" CPACK_GENERATORS="RPM" CPACK_DISTRO_VERSION="+el7" DEPLOY="yes" - compiler: gcc - env: OS=centos DIST=7 BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" CPACK_GENERATORS="RPM" CPACK_DISTRO_VERSION="+el7" DEPLOY="yes" + env: OS=centos DIST=7 BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" BUILD_PCIEDRIVER_PACKAGE=yes CPACK_GENERATORS="RPM" CPACK_DISTRO_VERSION="+el7" DEPLOY="yes" - compiler: gcc env: OS=debian DIST=stretch BUILD_TYPE=cpack CPACK_BOARDS="ml605" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb9" DEPLOY="yes" - compiler: gcc env: OS=debian DIST=stretch BUILD_TYPE=cpack CPACK_BOARDS="afcv3" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb9" DEPLOY="yes" - compiler: gcc - env: OS=debian DIST=stretch BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb9" DEPLOY="yes" + env: OS=debian DIST=stretch BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" BUILD_PCIEDRIVER_PACKAGE=yes CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb9" DEPLOY="yes" - compiler: gcc env: OS=debian DIST=buster BUILD_TYPE=cpack CPACK_BOARDS="ml605" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb10" DEPLOY="yes" - compiler: gcc env: OS=debian DIST=buster BUILD_TYPE=cpack CPACK_BOARDS="afcv3" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb10" DEPLOY="yes" - compiler: gcc - env: OS=debian DIST=buster BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb10" DEPLOY="yes" + env: OS=debian DIST=buster BUILD_TYPE=cpack CPACK_BOARDS="afcv3_1" BUILD_PCIEDRIVER_PACKAGE=yes CPACK_GENERATORS="DEB" CPACK_DISTRO_VERSION="+deb10" DEPLOY="yes" - compiler: gcc env: BUILD_TYPE=cmake BOARD=afcv3_1 DEPLOY_PAGES="yes" diff --git a/CMakeLists.txt b/CMakeLists.txt index cd5bd2aa..b8c95d27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,12 @@ list(APPEND CMAKE_MODULE_PATH ${halcs_CMAKE_MODULES_DIR}) # add module to prevent in-source builds include(PreventInSourceBuilds) +# detect target architecture +include(TargetArch) +# extract version numbers from header file +include(TestHalcsVersion) + +target_architecture(ARCH) # find pkg-config find_package(PkgConfig) @@ -221,6 +227,9 @@ add_subdirectory(libs/bpmclient) # Sources/Headers definitions ######################################################################## +# HALCS postinst file directory +set(halcs_POSTINST_FILE_DIR "${CMAKE_CURRENT_BINARY_DIR}/halcs") + set(common_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include ) @@ -254,6 +263,156 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ldconf) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/dev_mngr) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/apps) +################################################# +## CPack +################################################# + +# ALL_COMPONENTS_IN_ONE or ONE_PER_GROUP +set(cpack_components_grouping_OPT "ALL_COMPONENTS_IN_ONE" + CACHE STRING "CPack CPACK_COMPONENTS_GROUPING variable" +) +set(CPACK_COMPONENTS_GROUPING "${cpack_components_grouping_OPT}") + +# Any of Binaries;Libs;Scripts;Tools;Pciedriver +set(cpack_components_all_OPT "Binaries;Libs;Scripts;Tools" + CACHE STRING "CPack CPACK_COMPONENTS_ALL variable" +) +set(CPACK_COMPONENTS_ALL "${cpack_components_all_OPT}") + +# Any CPACK generator +set(cpack_generator_OPT "RPM" + CACHE STRING "CPack CPACK_GENERATOR variable" +) + +# CPack rules +option(ENABLE_CPACK "Enables cpack rules" ON) + +if(ENABLE_CPACK) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + + set(CPACK_GENERATOR "${cpack_generator_OPT}") + + set(CPACK_DEB_COMPONENT_INSTALL ON) + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # we also depend on malamute >= 1.0, but this has not been packaged into the official + # repositories yet + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsodium-dev (>= 1.0.8), libzmq3-dev (>= 4.2.5), libczmq-dev (>= 4.0.2)") + set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${halcs_POSTINST_FILE_DIR}/debian/postinst") + + set(CPACK_RPM_COMPONENT_INSTALL ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + # we also depend on malamute >= 1.0, but this has not been packaged into the official + # repositories yet + set(CPACK_RPM_PACKAGE_REQUIRE "libsodium-devel >= 1.0.8, zeromq-devel >= 4.2.5, czmq-devel >= 4.0.2") + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${halcs_POSTINST_FILE_DIR}/redhat/postinst") + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/halcsd-${halcs_VERSION}") + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + + set(CPACK_PACKAGE_NAME "halcsd") + set(halcs_DISTRO_VERSION "" CACHE STRING "halcs distribution version") + string(APPEND halcs_VERSION "${halcs_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}-${halcs_BOARD_OPT}_${halcs_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "halcsd daemon") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + #set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + + # if we are packaging Pciedriver use it's own version + if("${CPACK_COMPONENTS_ALL}" STREQUAL "Pciedriver") + set(CPACK_PACKAGE_VERSION ${pciedriver_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${pciedriver_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${pciedriver_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${pciedriver_VERSION_PATCH}) + else() + set(CPACK_PACKAGE_VERSION ${halcs_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${halcs_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${halcs_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${halcs_VERSION_PATCH}) + endif() + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "halcsd Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "halcsd Temporary CPack Directory") + + include(CPack) + + # For HALCS + cpack_add_component_group(HalcsFull + DISPLAY_NAME "HALCS libs, scripts, tools, headers and binaries" + ) + + cpack_add_component(Binaries + DISPLAY_NAME "Halcs binaries" + GROUP HalcsFull + INSTALL_TYPES FullHalcs + ) + + cpack_add_component(Libs + DISPLAY_NAME "Halcs libraries" + GROUP HalcsFull + INSTALL_TYPES FullHalcs + ) + + cpack_add_component(Scripts + DISPLAY_NAME "Halcs scripts" + GROUP HalcsFull + INSTALL_TYPES FullHalcs + ) + + cpack_add_component(Tools + DISPLAY_NAME "Halcs tools" + GROUP HalcsFull + INSTALL_TYPES FullHalcs + ) + + cpack_add_install_type(FullHalcs + DISPLAY_NAME "Full Halcs" + ) + + # For Pciedriver + cpack_add_component_group(Pciedriver + DISPLAY_NAME "pcieDriver drivers, headers and libraries" + ) + + cpack_add_component(Pciedriver + DISPLAY_NAME "pcieDriver drivers, headers and libraries" + GROUP Pciedriver + INSTALL_TYPES FullDriver + ) + + cpack_add_install_type(FullDriver + DISPLAY_NAME "Full drivers, headers and libraries" + ) + +endif() + ######################################################################## # Custom targets ######################################################################## diff --git a/ci_build.sh b/ci_build.sh index db1c3aa4..262ee78d 100755 --- a/ci_build.sh +++ b/ci_build.sh @@ -370,15 +370,34 @@ cmake) cpack) # all of these options are relative to the docker container filesystem LOCAL_LD_LIBRARY_PATH=/source/${BUILD_PREFIX_BASENAME}/lib:/source/${BUILD_PREFIX_BASENAME}/lib64 + + # Build regular package PACKPACK_OPTS=() - PACKPACK_OPTS+=("${CPACK_GENERATORS}") + PACKPACK_OPTS+=("-Dcpack_generator_OPT=${CPACK_GENERATORS}") + PACKPACK_OPTS+=("-Dcpack_components_grouping_OPT=ALL_COMPONENTS_IN_ONE") + PACKPACK_OPTS+=("-Dcpack_components_all_OPT=\"Binaries;Libs;Scripts;Tools\"") PACKPACK_OPTS+=("-Dhalcs_DISTRO_VERSION=${CPACK_DISTRO_VERSION}") PACKPACK_OPTS+=("-DCMAKE_PREFIX_PATH=/source/${BUILD_PREFIX_BASENAME}") - PACKPACK_OPTS+=("-DBUILD_PCIE_DRIVER=ON") + PACKPACK_OPTS+=("-DBUILD_PCIE_DRIVER=OFF") PACKPACK_OPTS+=("-Dhalcs_BOARD_OPT=${CPACK_BOARDS}") # only expand and add ":" to LD_LIBRARY_PATH if non-empty LD_LIBRARY_PATH=${LOCAL_LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ SOURCEDIR=$(pwd) BUILDDIR=$(pwd)/build ./packpack "${PACKPACK_OPTS[@]}" + + if [ "$BUILD_PCIEDRIVER_PACKAGE" = yes ]; then + # Build driver package + PACKPACK_PCIEDRIVER_OPTS=() + PACKPACK_PCIEDRIVER_OPTS+=("-Dcpack_generator_OPT=${CPACK_GENERATORS}") + PACKPACK_PCIEDRIVER_OPTS+=("-Dcpack_components_grouping_OPT=ONE_PER_GROUP") + PACKPACK_PCIEDRIVER_OPTS+=("-Dcpack_components_all_OPT=\"Pciedriver\"") + PACKPACK_PCIEDRIVER_OPTS+=("-Dhalcs_DISTRO_VERSION=${CPACK_DISTRO_VERSION}") + PACKPACK_PCIEDRIVER_OPTS+=("-DCMAKE_PREFIX_PATH=/source/${BUILD_PREFIX_BASENAME}") + PACKPACK_PCIEDRIVER_OPTS+=("-DBUILD_PCIE_DRIVER=ON") + # only expand and add ":" to LD_LIBRARY_PATH if non-empty + LD_LIBRARY_PATH=${LOCAL_LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ + SOURCEDIR=$(pwd) BUILDDIR=$(pwd)/build ./packpack "${PACKPACK_PCIEDRIVER_OPTS[@]}" + fi + cd "${BASE_PWD}" ;; diff --git a/cmake/Modules/AddExternalProjectBsmp.cmake b/cmake/Modules/AddExternalProjectBsmp.cmake index 4bae2d1d..f5977e96 100644 --- a/cmake/Modules/AddExternalProjectBsmp.cmake +++ b/cmake/Modules/AddExternalProjectBsmp.cmake @@ -63,7 +63,7 @@ add_library(bsmp SHARED IMPORTED) set_target_properties(bsmp PROPERTIES IMPORTED_LOCATION - ${bsmp_LIBRARY_DIRECTORIES}/libbsmp.so + ${bsmp_LIBRARY_DIRECTORIES}/libbsmp.so.1 INTERFACE_INCLUDE_DIRECTORIES "${bsmp_INCLUDE_DIRECTORIES}" PUBLIC_HEADER @@ -85,13 +85,16 @@ install(DIRECTORY ${bsmp_public_dirs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Libs ) # as we can't intall IMPORTED libraries as TARGETS, just use plain # install(FILES) install(FILES + ${bsmp_LIBRARY_DIRECTORIES}/libbsmp.so.1 ${bsmp_LIBRARY_DIRECTORIES}/libbsmp.so ${bsmp_LIBRARY_DIRECTORIES}/libbsmp.a DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libs ) diff --git a/cmake/Modules/AddExternalProjectPciedriver.cmake b/cmake/Modules/AddExternalProjectPciedriver.cmake index 377784d3..8da24339 100644 --- a/cmake/Modules/AddExternalProjectPciedriver.cmake +++ b/cmake/Modules/AddExternalProjectPciedriver.cmake @@ -8,6 +8,10 @@ include(GNUInstallDirs) include(TestPciedriverVersion) # add external project include(ExternalProject) +# detect target architecture +include(TargetArch) + +target_architecture(ARCH) ExternalProject_Add(pciedriver_ext URL ${CMAKE_CURRENT_SOURCE_DIR}/foreign/pcie-driver @@ -76,7 +80,7 @@ add_library(pciedriver SHARED IMPORTED) set_target_properties(pciedriver PROPERTIES IMPORTED_LOCATION - ${pciedriver_LIBRARY_DIRECTORIES}/libpcidriver.so + ${pciedriver_LIBRARY_DIRECTORIES}/libpcidriver.so.1 INTERFACE_INCLUDE_DIRECTORIES "${pciedriver_INCLUDE_DIRECTORIES}" PUBLIC_HEADER @@ -98,6 +102,7 @@ install(DIRECTORY ${pciedriver_public_dirs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Libs FILES_MATCHING PATTERN "*.h" ) @@ -105,10 +110,12 @@ install(DIRECTORY # as we can't intall IMPORTED libraries as TARGETS, just use plain # install(FILES) install(FILES + ${pciedriver_LIBRARY_DIRECTORIES}/libpcidriver.so.1 ${pciedriver_LIBRARY_DIRECTORIES}/libpcidriver.so ${pciedriver_LIBRARY_DIRECTORIES}/libpcidriver.a DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Libs ) ####################################### @@ -138,7 +145,7 @@ if(BUILD_PCIE_DRIVER) configure_file ( "${pciedriver_driver_KO_DIRECTORY}/${DKMS_FILE_NAME}.in" - "${CMAKE_CURRENT_BINARY_DIR}/${DKMS_FILE_NAME}" + "${BINARY_DIR}/${DKMS_FILE_NAME}" @ONLY ) @@ -148,13 +155,13 @@ if(BUILD_PCIE_DRIVER) configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/${DKMS_POSTINST}.in" - "${CMAKE_CURRENT_BINARY_DIR}/${DKMS_POSTINST}" + "${BINARY_DIR}/${DKMS_POSTINST}" @ONLY ) configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/${DKMS_PRERM}.in" - "${CMAKE_CURRENT_BINARY_DIR}/${DKMS_PRERM}" + "${BINARY_DIR}/${DKMS_PRERM}" @ONLY ) @@ -169,7 +176,7 @@ if(BUILD_PCIE_DRIVER) REALPATH ) -get_filename_component(pciedriver_driver_UDEV_ABS + get_filename_component(pciedriver_driver_UDEV_ABS ${pciedriver_driver_KO_DIRECTORY}/60-udev_fpga.rules REALPATH ) @@ -199,16 +206,109 @@ get_filename_component(pciedriver_driver_UDEV_ABS ${pciedriver_driver_KO_DIRECTORY}/version.sh ) - install(FILES ${pciedriver_driver_SRCS} DESTINATION ${pciedriver_DKMS_INSTALL_DIR}) + install(FILES ${pciedriver_driver_SRCS} + DESTINATION ${pciedriver_DKMS_INSTALL_DIR} + COMPONENT Pciedriver + ) install(FILES ${pciedriver_driver_SCRIPT} DESTINATION ${pciedriver_DKMS_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + COMPONENT Pciedriver + ) + install(FILES ${BINARY_DIR}/${DKMS_FILE_NAME} + DESTINATION ${pciedriver_DKMS_INSTALL_DIR} + COMPONENT Pciedriver + ) + +endif() + +# CPack rules +option(ENABLE_CPACK "Enables cpack rules" ON) + +if(ENABLE_CPACK) + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + set(pciedriver_DISTRO_VERSION "" CACHE STRING "pciedriver distribution version") + string(APPEND pciedriver_VERSION "${pciedriver_DISTRO_VERSION}") + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + + # Generate debuginfo package + set(CPACK_DEBIAN_PCIEDRIVER_DEBUGINFO_PACKAGE ON) + set(CPACK_DEBIAN_PCIEDRIVER_PACKAGE_DEPENDS "dkms") + set(CPACK_DEBIAN_PCIEDRIVER_PACKAGE_CONTROL_EXTRA + "${BINARY_DIR}/postinst;${BINARY_DIR}/prerm" + ) + set(CPACK_DEBIAN_PCIEDRIVER_PACKAGE_NAME "pcieDriver") + set(CPACK_DEBIAN_PCIEDRIVER_FILE_NAME + "${CPACK_DEBIAN_PCIEDRIVER_PACKAGE_NAME}_${pciedriver_VERSION}_${arch_name}.deb" ) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DKMS_FILE_NAME} DESTINATION ${pciedriver_DKMS_INSTALL_DIR}) - # For CPack - set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/postinst;${CMAKE_CURRENT_BINARY_DIR}/prerm") - set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/postinst") - set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/prerm") + set(CPACK_RPM_PCIEDRIVER_PACKAGE_REQUIRE "dkms") + set(CPACK_RPM_PCIEDRIVER_POST_INSTALL_SCRIPT_FILE "${BINARY_DIR}/postinst") + set(CPACK_RPM_PCIEDRIVER_PRE_UNINSTALL_SCRIPT_FILE "${BINARY_DIR}/prerm") + set(CPACK_RPM_PCIEDRIVER_PACKAGE_NAME "pcieDriver") + set(CPACK_RPM_PCIEDRIVER_FILE_NAME + "${CPACK_RPM_PCIEDRIVER_PACKAGE_NAME}_${pciedriver_VERSION}_${arch_name}.rpm" + ) + # Generate debuginfo package + set(CPACK_RPM_PCIEDRIVER_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PCIEDRIVER_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_RPM_PCIEDRIVER_PACKAGE_NAME}-${pciedriver_VERSION}") + + set(CPACK_COMPONENT_PCIEDRIVER_DESCRIPTION "pcieDriver library/driver") + + # This is always true as this is included in the main + # CMakeLists.txt. Kept here for reference, as main CMakeLists.txt + # already includes CPack + # if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + # if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + # set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + # set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + # set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + # endif() + # + # include(InstallRequiredSystemLibraries) + # + # set(CPACK_GENERATOR "DEB") + # + # set(CPACK_DEB_COMPONENT_INSTALL ON) + # set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON) + # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + # set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # set(CPACK_RPM_COMPONENT_INSTALL ON) + # set(CPACK_RPM_PACKAGE_AUTOREQ no) + # set(CPACK_RPM_PACKAGE_AUTOPROV yes) + # set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + # /lib + # /usr/etc + # /etc/systemd + # /lib/systemd + # /etc/systemd/system + # /lib/systemd/system + # /etc/udev + # /etc/udev/rules.d + # ) + # set(CPACK_PACKAGE_VENDOR "LNLS") + # set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + # + # include(CPack) + # + # cpack_add_component_group(PciedriverAll + # DISPLAY_NAME "pcieDriver drivers, headers and libraries" + # ) + # + # cpack_add_component(Pciedriver + # DISPLAY_NAME "pcieDriver drivers, headers and libraries" + # GROUP PciedriverAll + # INSTALL_TYPES FullDriver + # ) + # + # cpack_add_install_type(FullDriver + # DISPLAY_NAME "Full drivers, headers and libraries" + # ) + # + # endif() endif() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 2b0c7e94..01988a79 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -494,87 +494,90 @@ endforeach() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "halcs_examples") + set(halcs_examples_DISTRO_VERSION "" CACHE STRING "halcs_examples distribution version") + string(APPEND halcs_examples_VERSION "${halcs_examples_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${halcs_examples_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB filesystem library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${halcs_examples_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${halcs_examples_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${halcs_examples_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${halcs_examples_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "HALCS examples Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "HALCS examples Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "HALCS examples library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "HALCS examples source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "HALCS examples headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "HALCS examples runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "halcs_examples") - set(halcs_examples_DISTRO_VERSION "" CACHE STRING "halcs_examples distribution version") - string(APPEND halcs_examples_VERSION "${halcs_examples_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${halcs_examples_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB filesystem library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${halcs_examples_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${halcs_examples_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${halcs_examples_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${halcs_examples_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "HALCS examples Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "HALCS examples Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "HALCS examples library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "HALCS examples source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "HALCS examples headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "HALCS examples runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/examples/src/rtmlamp_ohwr_ctl.c b/examples/src/rtmlamp_ohwr_ctl.c index f7ddd8ef..147a8e00 100644 --- a/examples/src/rtmlamp_ohwr_ctl.c +++ b/examples/src/rtmlamp_ohwr_ctl.c @@ -39,7 +39,7 @@ static struct option long_options[] = {NULL, 0, NULL, 0} }; -static const char* shortopt = "hb:vo:s:c:yw:rpatu:e:r:"; +static const char* shortopt = "hb:vo:s:c:yw:rpatu:e:x:"; void print_help (char *program_name) { @@ -351,7 +351,7 @@ int main (int argc, char *argv []) uint32_t arg = 0; halcs_get_rtmlamp_ohwr_dac_wr (halcs_client, service, chan, &arg); - printf ("[client:rtmlamp_ohwr]: halcs_get_rtmlamp_ohwr_rcv_src: 0x%08X\n", arg); + printf ("[client:rtmlamp_ohwr]: halcs_set_rtmlamp_ohwr_dac_wr: 0x%08X\n", arg); } } diff --git a/foreign/libbsmp b/foreign/libbsmp index 39518d8e..6ae378c8 160000 --- a/foreign/libbsmp +++ b/foreign/libbsmp @@ -1 +1 @@ -Subproject commit 39518d8eb1b5eadb6489ddb617d8cde45384726a +Subproject commit 6ae378c88f61d18d588eecdeccd10185a5232e51 diff --git a/foreign/pcie-driver b/foreign/pcie-driver index 6eb66abb..00121b9c 160000 --- a/foreign/pcie-driver +++ b/foreign/pcie-driver @@ -1 +1 @@ -Subproject commit 6eb66abb7e70e21094507f97aa14f059eb4aa7d8 +Subproject commit 00121b9cbec3693821eaa6e51d1e771bcdc716af diff --git a/ldconf/CMakeLists.txt b/ldconf/CMakeLists.txt index be709549..5100132d 100644 --- a/ldconf/CMakeLists.txt +++ b/ldconf/CMakeLists.txt @@ -32,6 +32,7 @@ if(INSTALL_LDCONFIG_halcs) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ldconf/halcs.conf DESTINATION ${LDCONF_SYSCONFDIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) diff --git a/libs/acqclient/CMakeLists.txt b/libs/acqclient/CMakeLists.txt index 3293108d..36e14203 100644 --- a/libs/acqclient/CMakeLists.txt +++ b/libs/acqclient/CMakeLists.txt @@ -407,11 +407,11 @@ endif() install(TARGETS ${target_outputs} acqclient_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -446,6 +446,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libacqclient.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -476,12 +477,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${acqclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${acqclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -489,87 +492,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "acqclient") + set(acqclient_DISTRO_VERSION "" CACHE STRING "acqclient distribution version") + string(APPEND acqclient_VERSION "${acqclient_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${acqclient_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS acquisition library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${acqclient_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${acqclient_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${acqclient_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${acqclient_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "acqclient Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "acqclient Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Acquisition client library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Acquisition client source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Acquisition client headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Acquisition client runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "acqclient") - set(acqclient_DISTRO_VERSION "" CACHE STRING "acqclient distribution version") - string(APPEND acqclient_VERSION "${acqclient_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${acqclient_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS acquisition library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${acqclient_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${acqclient_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${acqclient_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${acqclient_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "acqclient Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "acqclient Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Acquisition client library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Acquisition client source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Acquisition client headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Acquisition client runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/bpmclient/CMakeLists.txt b/libs/bpmclient/CMakeLists.txt index 7fdd0975..6bd1b2f6 100644 --- a/libs/bpmclient/CMakeLists.txt +++ b/libs/bpmclient/CMakeLists.txt @@ -430,11 +430,11 @@ endif() install(TARGETS ${target_outputs} bpmclient_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -469,6 +469,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libbpmclient.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -499,12 +500,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${bpmclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${bpmclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -512,87 +515,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "bpmclient") + set(bpmclient_DISTRO_VERSION "" CACHE STRING "bpmclient distribution version") + string(APPEND bpmclient_VERSION "${bpmclient_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${bpmclient_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS BPM library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${bpmclient_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${bpmclient_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${bpmclient_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${bpmclient_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "bpmclient Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "bpmclient Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "BPM client library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "BPM client source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "BPM client headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "BPM client runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "bpmclient") - set(bpmclient_DISTRO_VERSION "" CACHE STRING "bpmclient distribution version") - string(APPEND bpmclient_VERSION "${bpmclient_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${bpmclient_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS BPM library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${bpmclient_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${bpmclient_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${bpmclient_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${bpmclient_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "bpmclient Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "bpmclient Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "BPM client library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "BPM client source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "BPM client headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "BPM client runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/convc/CMakeLists.txt b/libs/convc/CMakeLists.txt index f185c7d4..351b628c 100644 --- a/libs/convc/CMakeLists.txt +++ b/libs/convc/CMakeLists.txt @@ -301,11 +301,11 @@ endif() install(TARGETS ${target_outputs} convc_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -340,6 +340,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libconvc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -370,12 +371,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${convc_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${convc_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -383,87 +386,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "convc") + set(convc_DISTRO_VERSION "" CACHE STRING "convc distribution version") + string(APPEND convc_VERSION "${convc_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${convc_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS Conversion library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${convc_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${convc_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${convc_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${convc_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "convc Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "convc Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Convc library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Convc source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Convc headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Convc runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "convc") - set(convc_DISTRO_VERSION "" CACHE STRING "convc distribution version") - string(APPEND convc_VERSION "${convc_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${convc_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS Conversion library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${convc_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${convc_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${convc_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${convc_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "convc Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "convc Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Convc library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Convc source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Convc headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Convc runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/disptable/CMakeLists.txt b/libs/disptable/CMakeLists.txt index 2413248b..1dc91118 100644 --- a/libs/disptable/CMakeLists.txt +++ b/libs/disptable/CMakeLists.txt @@ -324,11 +324,11 @@ endif() install(TARGETS ${target_outputs} disptable_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -363,6 +363,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdisptable.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -393,12 +394,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${disptable_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${disptable_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -406,87 +409,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "disptable") + set(disptable_DISTRO_VERSION "" CACHE STRING "disptable distribution version") + string(APPEND disptable_VERSION "${disptable_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${disptable_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Dispatch Table library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${disptable_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${disptable_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${disptable_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${disptable_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "disptable Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "disptable Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Disptable library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Disptable source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Disptable headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Disptable runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "disptable") - set(disptable_DISTRO_VERSION "" CACHE STRING "disptable distribution version") - string(APPEND disptable_VERSION "${disptable_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${disptable_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Dispatch Table library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${disptable_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${disptable_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${disptable_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${disptable_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "disptable Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "disptable Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Disptable library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Disptable source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Disptable headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Disptable runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/errhand/CMakeLists.txt b/libs/errhand/CMakeLists.txt index ccbe2d75..7da0f0fe 100644 --- a/libs/errhand/CMakeLists.txt +++ b/libs/errhand/CMakeLists.txt @@ -345,11 +345,11 @@ endif() install(TARGETS ${target_outputs} errhand_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -384,6 +384,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liberrhand.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -414,12 +415,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${errhand_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${errhand_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -427,87 +430,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "errhand") + set(errhand_DISTRO_VERSION "" CACHE STRING "errhand distribution version") + string(APPEND errhand_VERSION "${errhand_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${errhand_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Error Handling library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${errhand_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${errhand_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${errhand_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${errhand_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "errhand Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "errhand Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Errhand library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Errhand source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Errhand headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Errhand runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "errhand") - set(errhand_DISTRO_VERSION "" CACHE STRING "errhand distribution version") - string(APPEND errhand_VERSION "${errhand_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${errhand_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Error Handling library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${errhand_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${errhand_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${errhand_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${errhand_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "errhand Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "errhand Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Errhand library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Errhand source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Errhand headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Errhand runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/hutils/CMakeLists.txt b/libs/hutils/CMakeLists.txt index 88d3f122..4cf2cef4 100644 --- a/libs/hutils/CMakeLists.txt +++ b/libs/hutils/CMakeLists.txt @@ -332,11 +332,11 @@ endif() install(TARGETS ${target_outputs} hutils_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -371,6 +371,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libhutils.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -401,12 +402,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${hutils_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${hutils_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -414,87 +417,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "hutils") + set(hutils_DISTRO_VERSION "" CACHE STRING "hutils distribution version") + string(APPEND hutils_VERSION "${hutils_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${hutils_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS utilities library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${hutils_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${hutils_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${hutils_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${hutils_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "hutils Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "hutils Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Hutils library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Hutils source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Hutils headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Hutils runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "hutils") - set(hutils_DISTRO_VERSION "" CACHE STRING "hutils distribution version") - string(APPEND hutils_VERSION "${hutils_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${hutils_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS utilities library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${hutils_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${hutils_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${hutils_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${hutils_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "hutils Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "hutils Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Hutils library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Hutils source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Hutils headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Hutils runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/llio/CMakeLists.txt b/libs/llio/CMakeLists.txt index fabfa69f..f10200db 100644 --- a/libs/llio/CMakeLists.txt +++ b/libs/llio/CMakeLists.txt @@ -384,11 +384,11 @@ endif() install(TARGETS ${target_outputs} llio_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # install headers that are inside another directory @@ -396,6 +396,7 @@ install(DIRECTORY ${llio_public_dirs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -430,6 +431,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libllio.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -460,12 +462,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${llio_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${llio_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -473,87 +477,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "llio") + set(llio_DISTRO_VERSION "" CACHE STRING "llio distribution version") + string(APPEND llio_VERSION "${llio_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${llio_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Low-level I/O library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${llio_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${llio_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${llio_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${llio_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "llio Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "llio Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "Low-level I/O library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "Low-level I/O source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "Low-level I/O headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Low-level I/O runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "llio") - set(llio_DISTRO_VERSION "" CACHE STRING "llio distribution version") - string(APPEND llio_VERSION "${llio_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${llio_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Low-level I/O library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${llio_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${llio_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${llio_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${llio_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "llio Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "llio Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "Low-level I/O library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "Low-level I/O source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "Low-level I/O headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Low-level I/O runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/sdbfs/CMakeLists.txt b/libs/sdbfs/CMakeLists.txt index c7c83497..553f306b 100644 --- a/libs/sdbfs/CMakeLists.txt +++ b/libs/sdbfs/CMakeLists.txt @@ -528,11 +528,11 @@ endif() install(TARGETS ${target_outputs} sdbfs_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # install headers that are inside another directory @@ -540,6 +540,7 @@ install(DIRECTORY ${sdbfs_public_dirs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -574,6 +575,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libsdbfs.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -604,12 +606,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${sdbfs_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${sdbfs_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -617,87 +621,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "sdbfs") + set(sdbfs_DISTRO_VERSION "" CACHE STRING "sdbfs distribution version") + string(APPEND sdbfs_VERSION "${sdbfs_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${sdbfs_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB filesystem library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${sdbfs_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${sdbfs_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${sdbfs_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${sdbfs_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "sdbfs Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "sdbfs Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "SDB Filesystem library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "SDB Filesystem source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "SDB Filesystem headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "SDB Filesystem runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "sdbfs") - set(sdbfs_DISTRO_VERSION "" CACHE STRING "sdbfs distribution version") - string(APPEND sdbfs_VERSION "${sdbfs_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${sdbfs_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB filesystem library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${sdbfs_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${sdbfs_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${sdbfs_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${sdbfs_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "sdbfs Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "sdbfs Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "SDB Filesystem library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "SDB Filesystem source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "SDB Filesystem headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "SDB Filesystem runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/libs/sdbutils/CMakeLists.txt b/libs/sdbutils/CMakeLists.txt index 8c5972e3..64c0f009 100644 --- a/libs/sdbutils/CMakeLists.txt +++ b/libs/sdbutils/CMakeLists.txt @@ -278,11 +278,11 @@ endif() install(TARGETS ${target_outputs} sdbutils_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # CMake search path wants either "share" (AKA GNUInstallDirs DATAROOTDIR) @@ -317,6 +317,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libsdbutils.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -347,12 +348,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${sdbutils_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${sdbutils_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -360,87 +363,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "sdbutils") + set(sdbutils_DISTRO_VERSION "" CACHE STRING "sdbutils distribution version") + string(APPEND sdbutils_VERSION "${sdbutils_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${sdbutils_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB utilities library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${sdbutils_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${sdbutils_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${sdbutils_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${sdbutils_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "sdbutils Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "sdbutils Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "SDB utilities library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "SDB Utilities source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "SDB utilities headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "Sdbutils runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "sdbutils") - set(sdbutils_DISTRO_VERSION "" CACHE STRING "sdbutils distribution version") - string(APPEND sdbutils_VERSION "${sdbutils_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${sdbutils_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDB utilities library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${sdbutils_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${sdbutils_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${sdbutils_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${sdbutils_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "sdbutils Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "sdbutils Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "SDB utilities library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "SDB Utilities source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "SDB utilities headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "Sdbutils runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif() diff --git a/packpack b/packpack index 815c9cd3..45ffc1ad 100755 --- a/packpack +++ b/packpack @@ -15,9 +15,6 @@ DOCKER_REPO=${DOCKER_REPO:-packpack/packpack} # Extra parameters for docker run. PACKPACK_EXTRA_DOCKER_RUN_PARAMS="${PACKPACK_EXTRA_DOCKER_RUN_PARAMS:-}" -# CPACK generators -CPACK_GENERATORS="${CPACK_GENERATORS:-DEB}" - # Set CI variable to CI provider name CI="" if [ "${APPVEYOR:-}" = "True" -o "${APPVEYOR:-}" = "true" ]; then @@ -143,8 +140,6 @@ chmod a+x ${BUILDDIR}/userwrapper.sh ( echo "#!/bin/sh"; echo "set -x"; - echo "CPACK_GENERATORS=\"\$1\""; - echo "shift 1"; echo "CMAKE_OPTS=\"\$@\""; echo "cd /build"; echo "if [ -f \"/etc/debian_version\" ]; then"; @@ -185,7 +180,7 @@ chmod a+x ${BUILDDIR}/userwrapper.sh echo "if [ \"\$?\" -ne 0 ]; then"; echo " exit 1"; echo "fi"; - echo "cpack -V -G \"\${CPACK_GENERATORS}\""; + echo "make VERBOSE=1 package"; ) > ${BUILDDIR}/usercmd.sh chmod a+x ${BUILDDIR}/usercmd.sh diff --git a/src/apps/halcs_generic_udev/CMakeLists.txt b/src/apps/halcs_generic_udev/CMakeLists.txt index 275b95fa..56a18666 100644 --- a/src/apps/halcs_generic_udev/CMakeLists.txt +++ b/src/apps/halcs_generic_udev/CMakeLists.txt @@ -2,16 +2,10 @@ # Binary setup ######################################################################## -# detect target architecture -include(TargetArch) # set installation variables compliant with distributions include(GNUInstallDirs) # Get systemd service directories' include(TestSystemd) -# extract version numbers from header file -include(TestHalcsVersion) - -target_architecture(ARCH) # halcs_generic_udev basename set (halcs_generic_udev_OUTPUT_BASENAME "halcs_generic_udev" @@ -81,7 +75,10 @@ if(BUILD_halcs_generic_udev) if(halcs_generic_udev_INSTALL_UDEV_RULES) # general scripts location set(halcs_generic_udev_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/${NOPREFIX_HALCS_DATADIR}) - install(DIRECTORY DESTINATION ${halcs_generic_udev_INSTALL_DATADIR}) + install(DIRECTORY + DESTINATION ${halcs_generic_udev_INSTALL_DATADIR} + COMPONENT Scripts + ) # general scripts install(FILES @@ -91,6 +88,7 @@ if(BUILD_halcs_generic_udev) ${CMAKE_CURRENT_SOURCE_DIR}/init-generic/share/halcs/scripts/run-fpga-program.sh ${CMAKE_CURRENT_SOURCE_DIR}/init-generic/share/halcs/scripts/stop-fpga-program.sh DESTINATION ${halcs_generic_udev_INSTALL_DATADIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) @@ -99,23 +97,42 @@ if(BUILD_halcs_generic_udev) # absolute paths of systemd unit files on install, which can be # prefixed by CMAKE_INSTALL_PREFIX. SYSTEMD variables are always fixed # to an absolute path. - install(CODE "set(SYSTEMD_SERVICES_INSTALL_DIR ${SYSTEMD_SERVICES_INSTALL_DIR})") - install(CODE "set(SYSTEMD_CONF_INSTALL_DIR ${SYSTEMD_CONF_INSTALL_DIR})") - install(CODE "set(HALCS_SYSCONFDIR ${HALCS_SYSCONFDIR})") - install(CODE "set(UDEV_SYSCONFDIR ${UDEV_SYSCONFDIR})") - install(CODE "set(NOPREFIX_HALCS_SYSCONFDIR ${NOPREFIX_HALCS_SYSCONFDIR})") - install(CODE "set(NOPREFIX_HALCS_DATADIR ${NOPREFIX_HALCS_DATADIR})") + install(CODE "set(SYSTEMD_SERVICES_INSTALL_DIR ${SYSTEMD_SERVICES_INSTALL_DIR})" + COMPONENT Scripts + ) + install(CODE "set(SYSTEMD_CONF_INSTALL_DIR ${SYSTEMD_CONF_INSTALL_DIR})" + COMPONENT Scripts + ) + install(CODE "set(HALCS_SYSCONFDIR ${HALCS_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(UDEV_SYSCONFDIR ${UDEV_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(NOPREFIX_HALCS_SYSCONFDIR ${NOPREFIX_HALCS_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(NOPREFIX_HALCS_DATADIR ${NOPREFIX_HALCS_DATADIR})" + COMPONENT Scripts + ) # udev rules install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/81-udev_fpga.rules\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/81-udev_fpga.rules\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/81-udev_fpga.rules DESTINATION ${UDEV_SYSCONFDIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ ) @@ -124,92 +141,3 @@ endif() # set list to global, as linker options are passed through this set(apps_halcs_generic_udev ${apps_halcs_generic_udev} PARENT_SCOPE) - -# CPack rules -option(ENABLE_CPACK "Enables cpack rules" ON) - -if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) - endif() - - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "halcs_generic_udev") - set(halcs_DISTRO_VERSION "" CACHE STRING "halcs distribution version") - string(APPEND halcs_VERSION "${halcs_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${halcs_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS generic udev scripts") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - #set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${halcs_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${halcs_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${halcs_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${halcs_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "HALCS generic udev Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "HALCS generic udev Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "HALCS generic udev scripts" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "HALCS generic udev source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "HALCS generic udev headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "HALCS generic udev runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) -endif() diff --git a/src/apps/halcs_generic_udev/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in b/src/apps/halcs_generic_udev/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in index a66aa3c8..5c755a51 100644 --- a/src/apps/halcs_generic_udev/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in +++ b/src/apps/halcs_generic_udev/init/systemd/etc/udev/rules.d/81-udev_fpga.rules.in @@ -1,6 +1,6 @@ # Permissions for the fpga devices -KERNEL=="fpga*", ACTION=="add", OWNER="root", GROUP="users", MODE="660", PROGRAM="@halcs_generic_udev_HALCS_INSTALL_FULL_DATADIR@/get-fpga-gateware-properties.sh -i %k", SYMLINK+="fpga/%c{2}", RUN+="@halcs_generic_udev_HALCS_INSTALL_FULL_DATADIR@/run-fpga-program.sh %c{1+}" +KERNEL=="fpga*", ACTION=="add", OWNER="root", GROUP="users", MODE="666", PROGRAM="@halcs_generic_udev_HALCS_INSTALL_FULL_DATADIR@/get-fpga-gateware-properties.sh -i %k", SYMLINK+="fpga/%c{2}", RUN+="@halcs_generic_udev_HALCS_INSTALL_FULL_DATADIR@/run-fpga-program.sh %c{1+}" # We can't run get-fpga-gateware-properties.sh on "remove" action, as this happens # after the fpga* structure is removed, so we won't be able to access the device at diff --git a/src/apps/halcsd/CMakeConfigureInstall.cmake b/src/apps/halcsd/CMakeConfigureInstall.cmake index 9531c4cd..e9c1c6da 100644 --- a/src/apps/halcsd/CMakeConfigureInstall.cmake +++ b/src/apps/halcsd/CMakeConfigureInstall.cmake @@ -44,6 +44,10 @@ if(NOT DEFINED NOPREFIX_HALCS_DATADIR) message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): error: Variable NOPREFIX_HALCS_DATADIR is not defined.") endif() +if(NOT DEFINED HALCS_LOG_DIR) + message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): error: Variable HALCS_LOG_DIR is not defined.") +endif() + if(NOT DEFINED CMAKE_INSTALL_FULL_BINDIR) message(FATAL_ERROR "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): error: Variable CMAKE_INSTALL_FULL_BINDIR is not defined.") endif() @@ -67,6 +71,7 @@ set(halcsd_CMAKE_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}") set(halcsd_HALCS_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${NOPREFIX_HALCS_DATADIR}") set(halcsd_HALCS_INSTALL_FULL_SYSCONFDIR "${HALCS_SYSCONFDIR}") set(halcsd_UDEV_INSTALL_FULL_SYSCONFDIR "${UDEV_SYSCONFDIR}") +set(halcsd_HALCS_FULL_LOG_DIR "${HALCS_LOG_DIR}") configure_file(${input_file} ${output_file} diff --git a/src/apps/halcsd/CMakeLists.txt b/src/apps/halcsd/CMakeLists.txt index ae86956e..531e52fe 100644 --- a/src/apps/halcsd/CMakeLists.txt +++ b/src/apps/halcsd/CMakeLists.txt @@ -3,16 +3,10 @@ ######################################################################## include(FindThreads) -# detect target architecture -include(TargetArch) # set installation variables compliant with distributions include(GNUInstallDirs) # Get systemd service directories' include(TestSystemd) -# extract version numbers from header file -include(TestHalcsVersion) - -target_architecture(ARCH) # halcsd basename set (halcsd_OUTPUT_BASENAME "halcsd" @@ -124,6 +118,12 @@ set(HALCS_SYSCONFDIR ${HALCS_CFG_PREFIX}/${NOPREFIX_HALCS_SYSCONFDIR}) # relative directory for halcs data files set(NOPREFIX_HALCS_DATADIR "halcs") +# set postinst filenames +set(DEBIAN_POSTINST_FILE_NAME "postinst.debian") +set(REDHAT_POSTINST_FILE_NAME "postinst.redhat") + +set(HALCS_LOG_DIR "/var/log/halcs") + ######################################################################## # Library compile options ######################################################################## @@ -351,7 +351,9 @@ foreach(bin_target ${apps_halcsd}) if(TARGET halcsd) # general scripts location set(halcsd_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/${NOPREFIX_HALCS_DATADIR}) - install(DIRECTORY DESTINATION ${halcsd_INSTALL_DATADIR}) + install(DIRECTORY + DESTINATION ${halcsd_INSTALL_DATADIR} + COMPONENT Scripts) # general scripts install(FILES @@ -359,86 +361,156 @@ foreach(bin_target ${apps_halcsd}) ${CMAKE_CURRENT_SOURCE_DIR}/init-generic/share/halcs/scripts/generate-board-halcs-idx.sh ${CMAKE_CURRENT_SOURCE_DIR}/init-generic/share/halcs/scripts/generate-dev-idx.sh DESTINATION ${halcsd_INSTALL_DATADIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) + set(halcsd_FULL_LOG_DIR ${HALCS_LOG_DIR}) + + configure_file ( + "${CMAKE_CURRENT_SOURCE_DIR}/${DEBIAN_POSTINST_FILE_NAME}.in" + "${halcs_POSTINST_FILE_DIR}/debian/postinst" + @ONLY + ) + + configure_file ( + "${CMAKE_CURRENT_SOURCE_DIR}/${REDHAT_POSTINST_FILE_NAME}.in" + "${halcs_POSTINST_FILE_DIR}/redhat/postinst" + @ONLY + ) + if(WITH_SYSTEMD) # service files. Use an install script so we are able to change the # absolute paths of systemd unit files on install, which can be # prefixed by CMAKE_INSTALL_PREFIX. SYSTEMD variables are always fixed # to an absolute path. - install(CODE "set(SYSTEMD_SERVICES_INSTALL_DIR ${SYSTEMD_SERVICES_INSTALL_DIR})") - install(CODE "set(SYSTEMD_CONF_INSTALL_DIR ${SYSTEMD_CONF_INSTALL_DIR})") - install(CODE "set(UDEV_SYSCONFDIR ${UDEV_SYSCONFDIR})") - install(CODE "set(HALCS_SYSCONFDIR ${HALCS_SYSCONFDIR})") - install(CODE "set(NOPREFIX_HALCS_SYSCONFDIR ${NOPREFIX_HALCS_SYSCONFDIR})") - install(CODE "set(NOPREFIX_HALCS_DATADIR ${NOPREFIX_HALCS_DATADIR})") + install(CODE "set(SYSTEMD_SERVICES_INSTALL_DIR ${SYSTEMD_SERVICES_INSTALL_DIR})" + COMPONENT Scripts + ) + install(CODE "set(SYSTEMD_CONF_INSTALL_DIR ${SYSTEMD_CONF_INSTALL_DIR})" + COMPONENT Scripts + ) + install(CODE "set(UDEV_SYSCONFDIR ${UDEV_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(HALCS_SYSCONFDIR ${HALCS_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(NOPREFIX_HALCS_SYSCONFDIR ${NOPREFIX_HALCS_SYSCONFDIR})" + COMPONENT Scripts + ) + install(CODE "set(NOPREFIX_HALCS_DATADIR ${NOPREFIX_HALCS_DATADIR})" + COMPONENT Scripts + ) + install(CODE "set(HALCS_LOG_DIR ${HALCS_LOG_DIR})" + COMPONENT Scripts + ) install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs-be@.service.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs-be@.service.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-be@.service\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-be@.service\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs-fe@.service.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs-fe@.service.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-fe@.service\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-fe@.service\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs@.target.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/systemd/system/halcs@.target.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs@.target\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs@.target\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-be@.service ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-fe@.service ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs@.target DESTINATION ${SYSTEMD_SERVICES_INSTALL_DIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) # sysconfig files install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/sysconfig/halcs-board.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/sysconfig/halcs-board.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-board\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-board\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs-board DESTINATION ${SYSTEMD_CONF_INSTALL_DIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) # halcs.cfg file install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/halcs/halcs.cfg.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/halcs/halcs.cfg.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs.cfg\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs.cfg\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/halcs.cfg DESTINATION ${HALCS_SYSCONFDIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) # udev rules install(CODE "set(input_file - \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in\")") + \"${CMAKE_CURRENT_SOURCE_DIR}/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in\")" + COMPONENT Scripts + ) install(CODE "set(output_file - \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/80-udev_fpga.rules\")") - install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake") + \"${CMAKE_CURRENT_BINARY_DIR}/init/systemd/80-udev_fpga.rules\")" + COMPONENT Scripts + ) + install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/CMakeConfigureInstall.cmake" + COMPONENT Scripts + ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/init/systemd/80-udev_fpga.rules DESTINATION ${UDEV_SYSCONFDIR} + COMPONENT Scripts PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ ) @@ -451,98 +523,3 @@ endforeach() # set list to global, as linker options are passed through this set(apps_halcsd ${apps_halcsd} PARENT_SCOPE) - -# CPack rules -option(ENABLE_CPACK "Enables cpack rules" ON) - -if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) - endif() - - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # we also depend on malamute >= 1.0, but this has not been packaged into the official - # repositories yet - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libsodium-dev (>= 1.0.8), libzmq3-dev (>= 4.2.5), libczmq-dev (>= 4.0.2), dkms") - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - # we also depend on malamute >= 1.0, but this has not been packaged into the official - # repositories yet - set(CPACK_RPM_PACKAGE_REQUIRE "libsodium-devel >= 1.0.8, zeromq-devel >= 4.2.5, czmq-devel >= 4.0.2, dkms") - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "halcsd") - set(halcs_DISTRO_VERSION "" CACHE STRING "halcs distribution version") - string(APPEND halcs_VERSION "${halcs_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}-${halcs_BOARD_OPT}_${halcs_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "halcsd daemon") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - #set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${halcs_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${halcs_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${halcs_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${halcs_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "halcsd Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "halcsd Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "halcsd library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "halcsd source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "halcsd headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "halcsd runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) -endif() diff --git a/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-be@.service.in b/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-be@.service.in index 6130b09a..0f041945 100644 --- a/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-be@.service.in +++ b/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-be@.service.in @@ -7,8 +7,10 @@ Requires=malamute.service PartOf=halcs@%i.target [Service] +User=halcs +Group=halcs EnvironmentFile=@halcsd_SYSTEMD_CONF_INSTALL_DIR@/halcs-board -Environment=HALCS_LOG_DIR=/var/log/halcs +Environment=HALCS_LOG_DIR=@halcsd_HALCS_FULL_LOG_DIR@ ExecStartPre=/bin/mkdir -p ${HALCS_LOG_DIR} ExecStart=@halcsd_CMAKE_INSTALL_FULL_BINDIR@/halcsd -f @halcsd_HALCS_INSTALL_FULL_SYSCONFDIR@/halcs.cfg -n be -t pcie -i %i -b ipc:///tmp/malamute -l ${HALCS_LOG_DIR} WorkingDirectory=@halcsd_CMAKE_INSTALL_FULL_BINDIR@ diff --git a/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-fe@.service.in b/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-fe@.service.in index 07518112..5bd09b3d 100644 --- a/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-fe@.service.in +++ b/src/apps/halcsd/init/systemd/etc/systemd/system/halcs-fe@.service.in @@ -7,8 +7,10 @@ Requires=malamute.service PartOf=halcs@%i.target [Service] +User=halcs +Group=halcs EnvironmentFile=@halcsd_SYSTEMD_CONF_INSTALL_DIR@/halcs-board -Environment=HALCS_LOG_DIR=/var/log/halcs +Environment=HALCS_LOG_DIR=@halcsd_HALCS_FULL_LOG_DIR@ ExecStartPre=/bin/mkdir -p ${HALCS_LOG_DIR} ExecStart=@halcsd_CMAKE_INSTALL_FULL_BINDIR@/halcsd -f @halcsd_HALCS_INSTALL_FULL_SYSCONFDIR@/halcs.cfg -n fe -t eth -i %i -b ipc:///tmp/malamute -l ${HALCS_LOG_DIR} WorkingDirectory=@halcsd_CMAKE_INSTALL_FULL_BINDIR@ diff --git a/src/apps/halcsd/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in b/src/apps/halcsd/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in index 8fcdbcd8..21406599 100644 --- a/src/apps/halcsd/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in +++ b/src/apps/halcsd/init/systemd/etc/udev/rules.d/80-udev_fpga.rules.in @@ -1,5 +1,5 @@ # Permissions for the fpga devices -KERNEL=="fpga*", ACTION=="add", OWNER="root", GROUP="users", MODE="660", PROGRAM="@halcsd_HALCS_INSTALL_FULL_DATADIR@/generate-dev-idx.sh %k", SYMLINK+="fpga/%c{1}", RUN+="/usr/bin/systemctl --no-block start halcs-ioc@%c{2}.target halcs-ioc@%c{3}.target" +KERNEL=="fpga*", ACTION=="add", OWNER="root", GROUP="users", MODE="666", PROGRAM="@halcsd_HALCS_INSTALL_FULL_DATADIR@/generate-dev-idx.sh %k", SYMLINK+="fpga/%c{1}", RUN+="/usr/bin/systemctl --no-block start halcs-ioc@%c{2}.target halcs-ioc@%c{3}.target" KERNEL=="fpga*", ACTION=="remove", PROGRAM="@halcsd_HALCS_INSTALL_FULL_DATADIR@/generate-dev-idx.sh %k", RUN+="/usr/bin/systemctl --no-block stop halcs@%c{2}.target halcs@%c{3}.target" diff --git a/src/apps/halcsd/postinst.debian.in b/src/apps/halcsd/postinst.debian.in new file mode 100755 index 00000000..210aee56 --- /dev/null +++ b/src/apps/halcsd/postinst.debian.in @@ -0,0 +1,14 @@ +#!/bin/sh + +echo "Creating user/group halcs" +adduser --system --quiet --group --no-create-home halcs || : +echo "Adding user halcs to group users" +usermod -a -G users halcs || : +echo "Creating /var/log/halcs directory" +mkdir -p @halcsd_FULL_LOG_DIR@ +echo "Changing permissions" +chown -R halcs:halcs @halcsd_FULL_LOG_DIR@ +echo "Reloading systemd" +systemctl daemon-reload || : + +exit 0 diff --git a/src/apps/halcsd/postinst.redhat.in b/src/apps/halcsd/postinst.redhat.in new file mode 100755 index 00000000..cef72717 --- /dev/null +++ b/src/apps/halcsd/postinst.redhat.in @@ -0,0 +1,14 @@ +#!/bin/sh + +echo "Creating user/group halcs" +useradd --system --no-create-home halcs || : +echo "Adding user halcs to group users" +usermod -a -G users halcs || : +echo "Creating /var/log/halcs directory" +mkdir -p @halcsd_FULL_LOG_DIR@ +echo "Changing permissions" +chown -R halcs:halcs @halcsd_FULL_LOG_DIR@ +echo "Reloading systemd" +systemctl daemon-reload || : + +exit 0 diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 41842ea8..44292d86 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -684,11 +684,11 @@ endif() install(TARGETS ${target_outputs} halcsclient_compiler_flags EXPORT ${PROJECT_NAME}-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libs + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Libs FRAMEWORK DESTINATION "Library/Frameworks" - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Libs ) # install headers that are inside another directory @@ -696,6 +696,7 @@ install(DIRECTORY ${halcsclient_public_dirs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Libs FILES_MATCHING PATTERN ${halcsclient_public_files_in_dirs} ) @@ -732,6 +733,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libhalcsclient.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT Libs ) # only available on CMake >= 3.0. Generates Targets.cmake @@ -762,12 +764,14 @@ if(BUILD_SHARED OR BUILD_STATIC) install(EXPORT ${PROJECT_NAME}-targets FILE ${PROJECT_NAME}Targets.cmake DESTINATION ${halcsclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${halcsclient_CMAKECONFIG_INSTALL_DIR} + COMPONENT Libs ) endif() @@ -775,87 +779,90 @@ endif() option(ENABLE_CPACK "Enables cpack rules" ON) if(ENABLE_CPACK) - if(${CMAKE_BUILD_TYPE} MATCHES "Debug") - set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) - set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) - set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + if(CMAKE_CURRENT_BINARY_DIR STREQUAL CMAKE_BINARY_DIR) + if(${CMAKE_BUILD_TYPE} MATCHES "Debug") + set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE) + set(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + endif() + + include(InstallRequiredSystemLibraries) + + # set architecture as detected by TargetArch module + set(arch_name ${ARCH}) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # Generate debuginfo package + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_PACKAGE_AUTOREQ no) + set(CPACK_RPM_PACKAGE_AUTOPROV yes) + set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION + /lib + /usr/etc + /etc/systemd + /lib/systemd + /etc/systemd/system + /lib/systemd/system + /etc/udev + /etc/udev/rules.d + ) + set(CPACK_PACKAGE_NAME "halcsclient") + set(halcsclient_DISTRO_VERSION "" CACHE STRING "halcsclient distribution version") + string(APPEND halcsclient_VERSION "${halcsclient_DISTRO_VERSION}") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${halcsclient_VERSION}_${arch_name}" + ) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS Conversion library") + set(CPACK_PACKAGE_VENDOR "LNLS") + set(CPACK_PACKAGE_CONTACT "Lucas Russo ") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") + # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") + # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") + set(CPACK_PACKAGE_VERSION ${halcsclient_VERSION}) + set(CPACK_PACKAGE_VERSION_MAJOR ${halcsclient_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${halcsclient_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${halcsclient_VERSION_PATCH}) + # set(CPACK_PACKAGE_INSTALL_DIRECTORY "halcsclient Install Directory") + # set(CPACK_TEMPORARY_DIRECTORY "halcsclient Temporary CPack Directory") + # Generate debuginfo package + set(CPACK_RPM_DEBUGINFO_PACKAGE ON) + set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + + include(CPack) + + cpack_add_component_group(Development + DISPLAY_NAME "HALCS client library" + EXPANDED + ) + cpack_add_component(SourceCode + DISPLAY_NAME "HALCS client source code" + DISABLED + INSTALL_TYPES FullInstall + ) + cpack_add_component(SDK + DISPLAY_NAME "HALCS client headers and libraries" + INSTALL_TYPES FullInstall DevInstall + GROUP Development + ) + cpack_add_component(Runtime + DISPLAY_NAME "HALCS client runtime files" + REQUIRED + INSTALL_TYPES FullInstall DevInstall MinInstall + ) + cpack_add_install_type(FullInstall + DISPLAY_NAME "Full install, including source code" + ) + cpack_add_install_type(DevInstall + DISPLAY_NAME "Developer install, headers and libraries" + ) + cpack_add_install_type(MinInstall + DISPLAY_NAME "Minimal install, runtime only" + ) endif() - include(InstallRequiredSystemLibraries) - - # set architecture as detected by TargetArch module - set(arch_name ${ARCH}) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_BINARY_DIR}) - set(CPACK_GENERATOR "DEB") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY ">=") - set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # Generate debuginfo package - set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_PACKAGE_AUTOREQ no) - set(CPACK_RPM_PACKAGE_AUTOPROV yes) - set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION - /lib - /usr/etc - /etc/systemd - /lib/systemd - /etc/systemd/system - /lib/systemd/system - /etc/udev - /etc/udev/rules.d - ) - set(CPACK_PACKAGE_NAME "halcsclient") - set(halcsclient_DISTRO_VERSION "" CACHE STRING "halcsclient distribution version") - string(APPEND halcsclient_VERSION "${halcsclient_DISTRO_VERSION}") - set(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}_${halcsclient_VERSION}_${arch_name}" - ) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HALCS Conversion library") - set(CPACK_PACKAGE_VENDOR "LNLS") - set(CPACK_PACKAGE_CONTACT "Lucas Russo ") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.txt") - # set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - # set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_BINARY_DIR}/WELCOME.txt") - # set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/branding.bmp") - set(CPACK_PACKAGE_VERSION ${halcsclient_VERSION}) - set(CPACK_PACKAGE_VERSION_MAJOR ${halcsclient_VERSION_MAJOR}) - set(CPACK_PACKAGE_VERSION_MINOR ${halcsclient_VERSION_MINOR}) - set(CPACK_PACKAGE_VERSION_PATCH ${halcsclient_VERSION_PATCH}) - # set(CPACK_PACKAGE_INSTALL_DIRECTORY "halcsclient Install Directory") - # set(CPACK_TEMPORARY_DIRECTORY "halcsclient Temporary CPack Directory") - # Generate debuginfo package - set(CPACK_RPM_DEBUGINFO_PACKAGE ON) - set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") - - include(CPack) - - cpack_add_component_group(Development - DISPLAY_NAME "HALCS client library" - EXPANDED - ) - cpack_add_component(SourceCode - DISPLAY_NAME "HALCS client source code" - DISABLED - INSTALL_TYPES FullInstall - ) - cpack_add_component(SDK - DISPLAY_NAME "HALCS client headers and libraries" - INSTALL_TYPES FullInstall DevInstall - GROUP Development - ) - cpack_add_component(Runtime - DISPLAY_NAME "HALCS client runtime files" - REQUIRED - INSTALL_TYPES FullInstall DevInstall MinInstall - ) - cpack_add_install_type(FullInstall - DISPLAY_NAME "Full install, including source code" - ) - cpack_add_install_type(DevInstall - DISPLAY_NAME "Developer install, headers and libraries" - ) - cpack_add_install_type(MinInstall - DISPLAY_NAME "Minimal install, runtime only" - ) endif()