File: package.cmake

package info (click to toggle)
sight 25.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 42,180 kB
  • sloc: cpp: 289,476; xml: 17,257; ansic: 9,878; python: 1,379; sh: 144; makefile: 33
file content (101 lines) | stat: -rw-r--r-- 4,736 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#Windows install
macro(win_package PRJ_NAME)

    # Magic line to make CPack NSIS generator find NSIS.template.in and NSIS.InstallOptions.ini.in
    list(APPEND CMAKE_MODULE_PATH ${FWCMAKE_RESOURCE_PATH}/install/windows/NSIS/)

    #set app icon filename
    string(TOLOWER ${PRJ_NAME} LOWER_PRJ_NAME)
    set(ICON_FILENAME ${LOWER_PRJ_NAME}.ico)

    get_target_property(TYPE ${PRJ_NAME} SIGHT_TARGET_TYPE)
    set(CPACK_LAUNCHER_PATH "bin\\\\${PRJ_NAME}.bat")
    if("${TYPE}" STREQUAL "APP")
        if(${FW_BUILD_EXTERNAL})
            # install the launcher
            install(PROGRAMS "${Sight_BINARY_DIR}/${LAUNCHER}" DESTINATION "bin")
        endif()
    elseif("${TYPE}" STREQUAL "EXECUTABLE")

    endif()

    if(CMAKE_CL_64)
        set(CPACK_NSIS_INSTALL_DIR "$PROGRAMFILES64")
    endif()

    set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)

    set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/IRCAD/sight")
    set(CPACK_NSIS_CONTACT "https://gitter.im/IRCAD-IHU/sight-support")

    get_last_git_tag(${PRJ_NAME})
    get_platform_package_suffix()

    set(CPACK_GENERATOR NSIS)
    set(CPACK_SOURCE_GENERATOR ZIP)
    set(CPACK_PACKAGE_NAME "${PRJ_NAME}")
    set(CPACK_PACKAGE_FILE_NAME "${PRJ_NAME}-${GIT_TAG}-${PLATFORM_SUFFIX}")
    set(CPACK_PACKAGE_VERSION "${SIGHT_VERSION}")
    set(CPACK_PACKAGE_VENDOR "${SIGHT_APP_VENDOR}")
    set(CPACK_OUTPUT_FILE_PREFIX packages)
    set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PRJ_NAME};ALL;.")

    # Look inside install dir for packaging
    set(CPACK_INSTALLED_DIRECTORIES "${CMAKE_INSTALL_PREFIX};.")

    set(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackConfig.cmake")
    set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackSourceConfig.cmake")
    set(CPACK_NSIS_PACKAGE_NAME "${PRJ_NAME}")
    set(CPACK_NSIS_DISPLAY_NAME "${PRJ_NAME}")
    set(CPACK_SIGHT_MODULE_RC_PREFIX "${SIGHT_MODULE_RC_PREFIX}")

    # CPackComponent doesn't work properly with the 'single project' packaging mechanism we hacked here
    # As a workaround, this script allows to remove the dev component files before packing
    set(CPACK_PRE_BUILD_SCRIPTS ${FWCMAKE_RESOURCE_PATH}/install/pre_package.cmake)

    set(DEFAULT_NSIS_RC_PATH "${FWCMAKE_RESOURCE_PATH}/install/windows/NSIS/rc/")

    # Clear variables otherwise they are not evaluated when we modify PROJECTS_TO_INSTALL
    unset(CPACK_PACKAGE_ICON CACHE)
    unset(CPACK_NSIS_WELCOMEFINISH_IMAGE CACHE)
    unset(CPACK_NSIS_MUI_ICON CACHE)
    unset(CPACK_NSIS_MUI_UNIICON CACHE)
    unset(CPACK_RESOURCE_FILE_LICENSE CACHE)

    find_file(CPACK_PACKAGE_ICON "banner_nsis.bmp" PATHS "${CMAKE_CURRENT_SOURCE_DIR}/rc/NSIS/" ${DEFAULT_NSIS_RC_PATH}
              NO_SYSTEM_ENVIRONMENT_PATH
    )
    find_file(CPACK_NSIS_WELCOMEFINISH_IMAGE "dialog_nsis.bmp" PATHS "${CMAKE_CURRENT_SOURCE_DIR}/rc/NSIS/"
                                                                     ${DEFAULT_NSIS_RC_PATH} NO_SYSTEM_ENVIRONMENT_PATH
    )
    find_file(CPACK_NSIS_MUI_ICON "${ICON_FILENAME}" "app.ico" PATHS "${CMAKE_CURRENT_SOURCE_DIR}/rc/"
                                                                     ${DEFAULT_NSIS_RC_PATH} NO_SYSTEM_ENVIRONMENT_PATH
    )
    find_file(CPACK_NSIS_MUI_UNIICON "${ICON_FILENAME}" "app.ico" PATHS "${CMAKE_CURRENT_SOURCE_DIR}/rc/"
                                                                        ${DEFAULT_NSIS_RC_PATH}
              NO_SYSTEM_ENVIRONMENT_PATH
    )
    find_file(CPACK_RESOURCE_FILE_LICENSE "license.rtf"
              PATHS "${CMAKE_CURRENT_SOURCE_DIR}/rc/NSIS/" "${CMAKE_CURRENT_BINARY_DIR}/NSIS/" ${DEFAULT_NSIS_RC_PATH}
              NO_SYSTEM_ENVIRONMENT_PATH
    )

    # Extract the icon found for the installer and use it for every shortcut (Start menu, Desktop and Uninstall)
    # The output variable is used in our NSIS.template
    string(REGEX REPLACE ".*\/(.*)" "\\1" CPACK_NSIS_SIGHT_APP_ICON ${CPACK_NSIS_MUI_ICON})
    string(REPLACE "/" "\\\\" CPACK_SIGHT_MODULE_RC_PREFIX ${CPACK_SIGHT_MODULE_RC_PREFIX})

    if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${CPACK_NSIS_SIGHT_APP_ICON}")
        install(FILES ${CPACK_NSIS_MUI_ICON} DESTINATION "${CPACK_SIGHT_MODULE_RC_PREFIX}/${CPACK_NSIS_PACKAGE_NAME}")
    endif()

    string(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON})
    string(REPLACE "/" "\\\\" CPACK_NSIS_WELCOMEFINISH_IMAGE ${CPACK_NSIS_WELCOMEFINISH_IMAGE})
    string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON ${CPACK_NSIS_MUI_ICON})
    string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_UNIICON})
    string(REPLACE "/" "\\\\" CPACK_RESOURCE_FILE_LICENSE ${CPACK_RESOURCE_FILE_LICENSE})

    # Avoid a useless warning
    include(CPack)

endmacro()