Skip to content

Commit

Permalink
Merge branch 'cpack-components' into devel
Browse files Browse the repository at this point in the history
  • Loading branch information
lerwys committed Apr 5, 2021
2 parents bbc1fc5 + 9dbaab6 commit f43d78f
Show file tree
Hide file tree
Showing 30 changed files with 1,479 additions and 1,194 deletions.
8 changes: 4 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
159 changes: 159 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
)
Expand Down Expand Up @@ -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 <lucas.russo@lnls.br>")
#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
########################################################################
Expand Down
23 changes: 21 additions & 2 deletions ci_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
;;

Expand Down
5 changes: 4 additions & 1 deletion cmake/Modules/AddExternalProjectBsmp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
)
Loading

0 comments on commit f43d78f

Please sign in to comment.