1include(CPackComponent)
2
3set(CPACK_PACKAGE_NAME ont-vbz-hdf-plugin)
4set(CPACK_PACKAGE_VENDOR "nanoporetech")
5set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
6
7if (NOT VBZ_BUILD_ARCHIVE)
8    set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/packaging/readme.txt")
9    set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/packaging/readme.txt")
10    set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENCE.txt")
11
12    cpack_add_component(
13            hdf_plugin
14            DISPLAYNAME "Hdf5 Plugin"
15            GROUP HDF_PLUGIN)
16
17    set(CPACK_COMPONENTS_ALL hdf_plugin)
18
19    if (NOT HDF5_PLUGIN_PATH)
20        IF (WIN32)
21            set(HDF5_PLUGIN_PATH "C:/ProgramData/hdf5/lib/plugin")
22        else()
23            set(HDF5_PLUGIN_PATH "/usr/local/hdf5/lib/plugin")
24        endif()
25    endif()
26
27endif()
28
29
30
31
32if (VBZ_BUILD_ARCHIVE)
33    set(CPACK_GENERATOR "TGZ")
34elseif (APPLE)
35    set(CPACK_GENERATOR "productbuild")
36    set(CPACK_PACKAGING_INSTALL_PREFIX "/Applications/OxfordNanopore/${CPACK_PACKAGE_NAME}/")
37
38    set(ONT_VBZ_PLUGIN_SOURCE_PATH "${CPACK_PACKAGING_INSTALL_PREFIX}/hdf5/lib/plugin/libvbz_hdf_plugin.dylib")
39    set(ONT_VBZ_PLUGIN_DEST_PATH "${HDF5_PLUGIN_PATH}/libvbz_hdf_plugin.dylib")
40
41    set(POSTFLIGHT_SCRIPT "${CMAKE_BINARY_DIR}/postinstall.sh")
42    configure_file(
43        "${CMAKE_SOURCE_DIR}/packaging/postinstall.sh.in"
44        "${POSTFLIGHT_SCRIPT}"
45        @ONLY
46    )
47
48    set(CPACK_POSTFLIGHT_HDF_PLUGIN_SCRIPT "${POSTFLIGHT_SCRIPT}")
49elseif (WIN32)
50    set(CPACK_GENERATOR "WIX")
51    set(CPACK_PACKAGE_VENDOR "Oxford Nanopore Technologies, Limited")
52    set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/packaging/wix_nanopore_icon.ico")
53    set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/packaging/wix_nanopore_background.bmp")
54    set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/packaging/wix_nanopore_banner.bmp")
55
56    if(VBZ_MSI_UPGRADE_CODE)
57        set(CPACK_WIX_UPGRADE_GUID "${VBZ_MSI_UPGRADE_CODE}")
58    endif()
59
60    set(WIX_SOURCE_FILE "${CMAKE_SOURCE_DIR}/packaging/wix_extra.wxs.in")
61    set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_BINARY_DIR}/wix_extra.wxs")
62    set(CPACK_WIX_PATCH_FILE "${CMAKE_SOURCE_DIR}/packaging/wix_patch.wxs.xml")
63
64    install(CODE "
65        set(ONT_VBZ_PLUGIN_SOURCE_PATH \"${CMAKE_BINARY_DIR}/bin/\$\{CMAKE_INSTALL_CONFIG_NAME\}/vbz_hdf_plugin.dll\")
66        configure_file(
67            \"${WIX_SOURCE_FILE}\"
68            \"${CPACK_WIX_EXTRA_SOURCES}\"
69            @ONLY
70        )"
71        COMPONENT hdf_plugin
72    )
73
74    set(VBZ_INSTALLATION_PREFIX "OxfordNanopore/${CPACK_PACKAGE_NAME}")
75    set(CPACK_WIX_PROGRAM_MENU_FOLDER "${VBZ_INSTALLATION_PREFIX}")
76    set(CPACK_PACKAGE_INSTALL_DIRECTORY "${VBZ_INSTALLATION_PREFIX}")
77    set(CPACK_WIX_PROPERTY_ALLUSERS 1)  # Install to everyone by default
78
79else()
80    set(CPACK_GENERATOR "DEB")
81    set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/")
82
83    set(CPACK_DEB_PACKAGE_COMPONENT ON)
84    set(CPACK_DEB_COMPONENT_INSTALL ON)
85    find_program(DPKG dpkg)
86    execute_process(
87        COMMAND ${DPKG} --print-architecture  # e.g. "amd64" or "arm64"
88        OUTPUT_VARIABLE DPKG_ARCHITECTURE
89        OUTPUT_STRIP_TRAILING_WHITESPACE
90    )
91
92    find_program(LSB_RELEASE lsb_release)
93    execute_process(
94        COMMAND ${LSB_RELEASE} -cs  # e.g. "trusty" or "xenial"
95        OUTPUT_VARIABLE LSB_PLATFORM_NAME
96        OUTPUT_STRIP_TRAILING_WHITESPACE
97    )
98
99    set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}-1~${LSB_PLATFORM_NAME}")
100
101    set(CPACK_DEBIAN_HDF_PLUGIN_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
102    set(CPACK_DEBIAN_HDF_PLUGIN_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${DPKG_ARCHITECTURE}.deb")
103    set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6")
104    set(CPACK_DEBIAN_PACKAGE_MAINTAINER nanoporetech.com)
105endif()
106
107include(CPack)