#
# Activate component packaging
#
if(CPACK_GENERATOR MATCHES "ZIP")
   set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
endif()

if(CPACK_GENERATOR MATCHES "RPM")
  set(CPACK_RPM_COMPONENT_INSTALL "ON")

  # test that /usr and /usr/foo get omitted in relocatable
  # rpms as shortest relocation path is treated as base of
  # package (/usr/foo/bar is relocatable and must exist)
  set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/foo/bar")

  # test requires
  set(CPACK_RPM_APPLICATIONS_PACKAGE_REQUIRES "mylib-libraries")

  # test a "noarch" rpm
  set(CPACK_RPM_HEADERS_PACKAGE_ARCHITECTURE "noarch")

  # test cross-built rpm
  set(CPACK_RPM_APPLICATIONS_PACKAGE_ARCHITECTURE "armv7hf")

  # test package summary override - headers rpm is generated in the middle
  set(CPACK_RPM_PACKAGE_SUMMARY "default summary")
  set(CPACK_RPM_HEADERS_PACKAGE_SUMMARY "headers summary")

  # test package description override - headers rpm is generated in the middle
  set(CPACK_RPM_HEADERS_PACKAGE_DESCRIPTION "headers description")

  # test package do not use CPACK_PACKAGING_INSTALL_PREFIX
  # as relocation path
  set(CPACK_RPM_NO_LIBRARIES_INSTALL_PREFIX_RELOCATION true)

  # test default permissions
  set(CPACK_RPM_DEFAULT_USER defusr)
  set(CPACK_RPM_DEFAULT_GROUP defgrp)
  set(CPACK_RPM_DEFAULT_FILE_PERMISSIONS
      OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
  set(CPACK_RPM_DEFAULT_DIR_PERMISSIONS
      OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
  set(CPACK_RPM_LIBRARIES_DEFAULT_USER user)
  set(CPACK_RPM_APPLICATIONS_DEFAULT_GROUP group)
  set(CPACK_RPM_LIBRARIES_DEFAULT_FILE_PERMISSIONS
      OWNER_READ OWNER_WRITE OWNER_EXECUTE)
  set(CPACK_RPM_APPLICATIONS_DEFAULT_DIR_PERMISSIONS
      OWNER_READ GROUP_READ WORLD_READ)
endif()

if(CPACK_GENERATOR MATCHES "DEB")
   set(CPACK_DEB_COMPONENT_INSTALL "ON")
endif()

if(CPACK_GENERATOR MATCHES "NuGet")
   set(CPACK_NUGET_COMPONENT_INSTALL "ON")
endif()

#
# Choose grouping way
#
#set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
#set(CPACK_COMPONENTS_GROUPING)
set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
