File: Pack.cmake

package info (click to toggle)
swi-prolog 9.0.4%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 82,408 kB
  • sloc: ansic: 387,503; perl: 359,326; cpp: 6,613; lisp: 6,247; java: 5,540; sh: 3,147; javascript: 2,668; python: 1,900; ruby: 1,594; yacc: 845; makefile: 428; xml: 317; sed: 12; sql: 6
file content (114 lines) | stat: -rw-r--r-- 3,797 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
102
103
104
105
106
107
108
109
110
111
112
113
114
# Setup package generation
if(NOT CPACK_GENERATOR AND NOT APPLE)
  message("-- Finding default package generator")
  if(WIN32)
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
      set(CPACK_GENERATOR "NSIS64")
    else()
      set(CPACK_GENERATOR "NSIS")
    endif()    
  else()
    find_program(APT apt)
    find_program(DNF dnf)
    if(APT AND NOT DNF)
      set(CPACK_GENERATOR "DEB")
    elseif(DNF AND NOT APT)
      set(CPACK_GENERATOR "RPM")
    else()
      message("-- Found both apt and dnf.  Setting DEB generator")
      set(CPACK_GENERATOR "DEB")
    endif()
  endif(WIN32)

  message("-- Setup for packaging with ${CPACK_GENERATOR}")
  set(CPACK_GENERATOR ${CPACK_GENERATOR} CACHE STRING
      "Default package generator for platform" FORCE)
endif(NOT CPACK_GENERATOR AND NOT APPLE)

set(CPACK_PACKAGE_VERSION ${SWIPL_VERSION_STRING})
set(CPACK_PACKAGE_NAME "swipl")
set(CPACK_PACKAGE_RELEASE 1)
set(CPACK_PACKAGE_CONTACT "Jan Wielemaker")
set(CPACK_PACKAGE_VENDOR "SWI-Prolog")

# We don't want an additional page when attaching the dmg
if(NOT BUILD_MACOS_BUNDLE)
  set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
endif()

if(CPACK_GENERATOR STREQUAL RPM)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A comprehensive Prolog environment")
else()
file(READ cmake/pack_summary.txt CPACK_PACKAGE_DESCRIPTION_SUMMARY)
endif()

# Stripping on apple complains about dynamic symbols that cannot be
# stripped
if(NOT APPLE)
  set(CPACK_STRIP_FILES ON)
endif()
# set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})

if(NOT CMAKE_SYSTEM_PROCESSOR)
  if(WIN32)
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
      set(CMAKE_SYSTEM_PROCESSOR x64)
    else()
      set(CMAKE_SYSTEM_PROCESSOR x86)
    endif()
  endif()
endif()

# see https://crascit.com/2015/08/07/cmake_cpack_nsis_shortcuts_with_parameters/

if(WIN32)
  set(CPACK_NSIS_CREATE_ICONS_EXTRA "")

  function(createShortCut name exe options desktop)
    set(CPACK_NSIS_CREATE_ICONS_EXTRA
	"${CPACK_NSIS_CREATE_ICONS_EXTRA}\n  CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${name}.lnk' '$INSTDIR\\\\bin\\\\${exe}.exe' '${options}'")
    set(CPACK_NSIS_DELETE_ICONS_EXTRA
	"${CPACK_NSIS_DELETE_ICONS_EXTRA}\n  Delete '$SMPROGRAMS\\\\$START_MENU\\\\${name}.lnk'")
    if(desktop)
      set(CPACK_NSIS_CREATE_ICONS_EXTRA
	  "${CPACK_NSIS_CREATE_ICONS_EXTRA}\n  StrCmp '$INSTALL_DESKTOP' '1' 0 +2\n  CreateShortCut '$DESKTOP\\\\${name}.lnk' '$INSTDIR\\\\bin\\\\${exe}.exe' '${options}'")
      set(CPACK_NSIS_DELETE_ICONS_EXTRA
	  "${CPACK_NSIS_DELETE_ICONS_EXTRA}\n  Delete '$DESKTOP\\\\${name}.lnk'")
    endif()

    set(CPACK_NSIS_CREATE_ICONS_EXTRA "${CPACK_NSIS_CREATE_ICONS_EXTRA}" PARENT_SCOPE)
    set(CPACK_NSIS_DELETE_ICONS_EXTRA "${CPACK_NSIS_DELETE_ICONS_EXTRA}" PARENT_SCOPE)
  endfunction()

  set(CPACK_PACKAGE_INSTALL_DIRECTORY swipl)

  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
  set(CPACK_NSIS_MODIFY_PATH ON)
  set(CPACK_NSIS_DISPLAY_NAME "SWI-Prolog")
  set(CPACK_NSIS_URL_INFO_ABOUT "https://swi-prolog.org")
  set(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\swipl-win.exe)

  createShortCut("SWI-Prolog" "swipl-win" "--win_app" ON)
  createShortCut("SWI-Prolog (console)" "swipl" "" OFF)

  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
   set(CPACK_NSIS_ONINIT_REGVIEW "SetRegView 64")
  endif()

  set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
   WriteRegStr HKLM 'Software\\\\SWI\\\\Prolog' 'fileExtension' 'pl'
   WriteRegStr HKLM 'Software\\\\SWI\\\\Prolog' 'home' '$INSTDIR'
   ")
  set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
   DeleteRegKey HKLM 'Software\\\\SWI\\\\Prolog'
   ")
endif(WIN32)

if(NOT SWIPL_CPACK_ARCH)
  set(SWIPL_CPACK_ARCH "${CMAKE_SYSTEM_PROCESSOR}")
endif()

set(CPACK_PACKAGE_FILE_NAME
    "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${SWIPL_CPACK_ARCH}")

include(CPack)