|
| 1 | +# |
| 2 | +# Copyright(c) 2020 ADLINK Technology Limited and others |
| 3 | +# |
| 4 | +# This program and the accompanying materials are made available under the |
| 5 | +# terms of the Eclipse Public License v. 2.0 which is available at |
| 6 | +# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License |
| 7 | +# v. 1.0 which is available at |
| 8 | +# http://www.eclipse.org/org/documents/edl-v10.php. |
| 9 | +# |
| 10 | +# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| 11 | +# |
| 12 | +if(CMAKECPACK_INCLUDED) |
| 13 | + return() |
| 14 | +endif() |
| 15 | +set(CMAKECPACK_INCLUDED true) |
| 16 | + |
| 17 | +include(GNUInstallDirs) |
| 18 | +set(PROJECT_NAME_FULL "Eclipse Cyclone DDS") |
| 19 | +# Set some convenience variants of the project-name |
| 20 | +string(REPLACE " " "-" PROJECT_NAME_DASHED "${PROJECT_NAME_FULL}") |
| 21 | + |
| 22 | +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) |
| 23 | +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) |
| 24 | +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) |
| 25 | +set(CPACK_PACKAGE_VERSION_TWEAK ${PROJECT_VERSION_TWEAK}) |
| 26 | +set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) |
| 27 | + |
| 28 | +set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) |
| 29 | +set(CPACK_PACKAGE_VENDOR "Eclipse Cyclone DDS project") |
| 30 | +set(CPACK_PACKAGE_CONTACT "https://github.com/eclipse-cyclonedds/cyclonedds") |
| 31 | +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Eclipse Cyclone DDS") |
| 32 | + |
| 33 | +# WiX requires a .txt file extension for CPACK_RESOURCE_FILE_LICENSE |
| 34 | +file(COPY "${PROJECT_SOURCE_DIR}/LICENSE" DESTINATION "${CMAKE_BINARY_DIR}") |
| 35 | +file(RENAME "${CMAKE_BINARY_DIR}/LICENSE" "${CMAKE_BINARY_DIR}/license.txt") |
| 36 | +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_BINARY_DIR}/license.txt") |
| 37 | + |
| 38 | +# Packages could be generated on alien systems. e.g. Debian packages could be |
| 39 | +# created on Red Hat Enterprise Linux, but since packages also need to be |
| 40 | +# verified on the target platform, please refrain from doing so. Another |
| 41 | +# reason for building installer packages on the target platform is to ensure |
| 42 | +# the binaries are linked to the libc version shipped with that platform. To |
| 43 | +# support "generic" Linux distributions, eventually compressed tarballs will |
| 44 | +# be shipped. |
| 45 | +# |
| 46 | +# NOTE: Settings for different platforms are in separate control branches. |
| 47 | +# Although that does not make sense from a technical point-of-view, it |
| 48 | +# does help to clearify which settings are required for a platform. |
| 49 | + |
| 50 | +set(CPACK_COMPONENTS_ALL dev lib) |
| 51 | +set(CPACK_COMPONENT_LIB_DISPLAY_NAME "${PROJECT_NAME_FULL} library") |
| 52 | +set(CPACK_COMPONENT_LIB_DESCRIPTION "Library used to run programs with ${PROJECT_NAME_FULL}") |
| 53 | +set(CPACK_COMPONENT_DEV_DISPLAY_NAME "${PROJECT_NAME_FULL} development") |
| 54 | +set(CPACK_COMPONENT_DEV_DESCRIPTION "Development files for use with ${PROJECT_NAME_FULL}") |
| 55 | + |
| 56 | +if(WIN32 AND NOT UNIX) |
| 57 | + |
| 58 | + if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 59 | + set(__arch "win64") |
| 60 | + else() |
| 61 | + set(__arch "win32") |
| 62 | + endif() |
| 63 | + mark_as_advanced(__arch) |
| 64 | + |
| 65 | + set(CPACK_GENERATOR "WIX;ZIP;${CPACK_GENERATOR}" CACHE STRING "List of package generators") |
| 66 | + set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${__arch}") |
| 67 | + set(WIX_DIR "${PROJECT_SOURCE_DIR}/WiX") |
| 68 | + set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME_FULL}") |
| 69 | + set(CPACK_WIX_UI_REF "CustomUI_InstallDir") |
| 70 | + set(CPACK_WIX_PATCH_FILE "${WIX_DIR}/env.xml") |
| 71 | + set(CPACK_WIX_EXTRA_SOURCES "${WIX_DIR}/PathDlg.wxs" |
| 72 | + "${WIX_DIR}/DialogOrder.wxs") |
| 73 | + set(CPACK_WIX_CMAKE_PACKAGE_REGISTRY "${PROJECT_NAME}") |
| 74 | + set(CPACK_WIX_PRODUCT_ICON "${WIX_DIR}/icon.ico") |
| 75 | + set(CPACK_WIX_UI_BANNER "${WIX_DIR}/banner.png") |
| 76 | + set(CPACK_WIX_UI_DIALOG "${WIX_DIR}/dialog.png") |
| 77 | + # when updating the version number also generate a new GUID |
| 78 | + set(CPACK_WIX_UPGRADE_GUID "f619c294-0696-4f04-98ed-4cfa6ebba6a5") |
| 79 | + |
| 80 | + include(InstallRequiredSystemLibraries) |
| 81 | + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) |
| 82 | + |
| 83 | +elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") |
| 84 | + set(CPACK_COMPONENTS_GROUPING "IGNORE") |
| 85 | + |
| 86 | + if(EXISTS "/etc/redhat-release") |
| 87 | + if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 88 | + set(__arch "x86_64") |
| 89 | + else() |
| 90 | + set(__arch "i686") |
| 91 | + endif() |
| 92 | + |
| 93 | + set(CPACK_GENERATOR "RPM;TGZ;${CPACK_GENERATOR}" CACHE STRING "List of package generators") |
| 94 | + set(CPACK_RPM_PACKAGE_LICENSE "Eclipse Public License v2.0 http://www.eclipse.org/legal/epl-2.0") |
| 95 | + set(CPACK_RPM_COMPONENT_INSTALL ON) |
| 96 | + set(CPACK_RPM_PACKAGE_RELEASE 1) |
| 97 | + set(CPACK_RPM_PACKAGE_RELEASE_DIST ON) |
| 98 | + set(CPACK_RPM_LIB_PACKAGE_NAME "${PROJECT_NAME_DASHED}") |
| 99 | + set(CPACK_RPM_LIB_FILE_NAME "${CPACK_RPM_LIB_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}-${__arch}.rpm") |
| 100 | + set(CPACK_RPM_DEV_PACKAGE_NAME "${CPACK_RPM_LIB_PACKAGE_NAME}-devel") |
| 101 | + set(CPACK_RPM_DEV_FILE_NAME "${CPACK_RPM_DEV_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}-${__arch}.rpm") |
| 102 | + set(CPACK_RPM_DEV_PACKAGE_REQUIRES "${CPACK_RPM_LIB_PACKAGE_NAME} = ${CPACK_PACKAGE_VERSION}") |
| 103 | + elseif(EXISTS "/etc/debian_version") |
| 104 | + set(CPACK_DEB_COMPONENT_INSTALL ON) |
| 105 | + if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 106 | + set(__arch "amd64") |
| 107 | + else() |
| 108 | + set(__arch "i386") |
| 109 | + endif() |
| 110 | + |
| 111 | + set(CPACK_GENERATOR "DEB;TGZ;${CPACK_GENERATOR}" CACHE STRING "List of package generators") |
| 112 | + |
| 113 | + string(TOLOWER "${PROJECT_NAME_DASHED}" CPACK_DEBIAN_LIB_PACKAGE_NAME) |
| 114 | + set(CPACK_DEBIAN_LIB_FILE_NAME "${CPACK_DEBIAN_LIB_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${__arch}.deb") |
| 115 | + set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "${CPACK_DEBIAN_LIB_PACKAGE_NAME} (= ${CPACK_PACKAGE_VERSION}), libc6 (>= 2.23)") |
| 116 | + set(CPACK_DEBIAN_DEV_PACKAGE_NAME "${CPACK_DEBIAN_LIB_PACKAGE_NAME}-dev") |
| 117 | + set(CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_DEV_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${__arch}.deb") |
| 118 | + else() |
| 119 | + # Generic tgz package |
| 120 | + set(CPACK_GENERATOR "TGZ;${CPACK_GENERATOR}" CACHE STRING "List of package generators") |
| 121 | + endif() |
| 122 | +else() |
| 123 | + # Fallback to zip package |
| 124 | + set(CPACK_GENERATOR "ZIP;${CPACK_GENERATOR}" CACHE STRING "List of package generators") |
| 125 | +endif() |
| 126 | + |
| 127 | +# This must always be last! |
| 128 | +include(CPack) |
0 commit comments