Codebase list swi-prolog / debian/8.0.2+dfsg-1 cmake / Pack.cmake
debian/8.0.2+dfsg-1

Tree @debian/8.0.2+dfsg-1 (Download .tar.gz)

Pack.cmake @debian/8.0.2+dfsg-1raw · history · blame

# Setup package generation

if(NOT CPACK_GENERATOR AND NOT APPLE)
  message("-- Finding default package generator")
  if(WIN32)
    set(CPACK_GENERATOR "NSIS")
  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 attacking 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 ${CPACK_PACKAGE_VERSION}")
  set(CPACK_NSIS_URL_INFO_ABOUT "http://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)
endif()

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

include(CPack)