1##--------------------------------------------------------------------------- 2## Author: Pavel Kalian (Based on the work of Sean D'Epagnier) 3## Copyright: 2014 4## License: GPLv3+ 5##--------------------------------------------------------------------------- 6 7# build a CPack driven installer package 8#include (InstallRequiredSystemLibraries) 9 10SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}") 11SET(CPACK_PACKAGE_VENDOR "opencpn.org") 12SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}) 13SET(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) 14SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) 15SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) 16SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) 17SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/") 18SET(CPACK_PACKAGE_EXECUTABLES OpenCPN ${PACKAGE_NAME}) 19 20IF(WIN32) 21# to protect against confusable windows users, let us _not_ generate zip packages 22# SET(CPACK_GENERATOR "NSIS;ZIP") 23 24 # override install directory to put package files in the opencpn directory 25 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenCPN") 26 27# CPACK_NSIS_DIR ?? 28# CPACK_BUILDWIN_DIR ?? 29# CPACK_PACKAGE_ICON ?? 30 31 SET(CPACK_NSIS_PACKAGE_NAME "${PACKAGE_NAME}") 32 33 # Let cmake find NSIS.template.in 34 SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildwin") 35 36# These lines set the name of the Windows Start Menu shortcut and the icon that goes with it 37# SET(CPACK_NSIS_INSTALLED_ICON_NAME "${PACKAGE_NAME}") 38SET(CPACK_NSIS_DISPLAY_NAME "OpenCPN ${PACKAGE_NAME}") 39 40# SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${VERSION_MAJOR}.${VERSION_MINOR}_setup" ) 41 42 SET(CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode") #Gunther 43 SET(CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin") #Gunther 44 45ELSE(WIN32) 46 SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME}) 47ENDIF(WIN32) 48 49SET(CPACK_STRIP_FILES "${PACKAGE_NAME}") 50 51SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/gpl.txt") 52 53IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README") 54# MESSAGE(STATUS "Using generic cpack package description file.") 55 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") 56 SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README") 57ENDIF () 58 59#SET(CPACK_SOURCE_GENERATOR "TGZ") 60 61# The following components are regex's to match anywhere (unless anchored) 62# in absolute path + filename to find files or directories to be excluded 63# from source tarball. 64set(CPACK_SOURCE_IGNORE_FILES 65"^${CMAKE_CURRENT_SOURCE_DIR}/.git/*" 66"^${CMAKE_CURRENT_SOURCE_DIR}/build*" 67"^${CPACK_PACKAGE_INSTALL_DIRECTORY}/*" 68) 69 70IF(UNIX AND NOT APPLE) 71 72# need apt-get install rpm, for rpmbuild 73if (NOT OCPN_PACKAGE_RELEASE) 74 SET(OCPN_PACKAGE_RELEASE 1) 75endif () 76 77 78 IF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") 79 SET (ARCH "armhf") 80 # don't bother with rpm on armhf 81 ELSE () 82 SET(CPACK_GENERATOR "DEB;TBZ2") 83 84 IF (CMAKE_SIZEOF_VOID_P MATCHES "8") 85 SET (ARCH "amd64") 86 ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") 87 SET (ARCH "i386") 88 # note: in a chroot must use "setarch i686 make package" 89 ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") 90 ENDIF () 91 92 SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS ${PACKAGE_RECS}) 93 SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) 94 SET(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") 95 SET(CPACK_DEBIAN_PACKAGE_SECTION "misc") 96 SET(CPACK_DEBIAN_COMPRESSION_TYPE "xz") # requires my patches to cmake 97 98 99 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") 100 SET(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") 101# SET(CPACK_SET_DESTDIR ON) 102 SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 103 104 105 SET(CPACK_PACKAGE_FILE_NAME 106 "${PACKAGE_NAME}_${PACKAGE_VERSION}-${OCPN_PACKAGE_RELEASE}_${ARCH}" ) 107ENDIF(UNIX AND NOT APPLE) 108 109IF(TWIN32 AND NOT UNIX) 110# configure_file(${PROJECT_SOURCE_DIR}/src/opencpn.rc.in ${PROJECT_SOURCE_DIR}/src/opencpn.rc) 111 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_GERMAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_GERMAN.nsh" @ONLY) 112 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_FRENCH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_FRENCH.nsh" @ONLY) 113 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_CZECH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_CZECH.nsh" @ONLY) 114 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_DANISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_DANISH.nsh" @ONLY) 115 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_SPANISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_SPANISH.nsh" @ONLY) 116 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_ITALIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_ITALIAN.nsh" @ONLY) 117 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_DUTCH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_DUTCH.nsh" @ONLY) 118 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_POLISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_POLISH.nsh" @ONLY) 119 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_PORTUGUESEBR.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_PORTUGUESEBR.nsh" @ONLY) 120 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_PORTUGUESE.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_PORTUGUESE.nsh" @ONLY) 121 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_RUSSIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_RUSSIAN.nsh" @ONLY) 122 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_SWEDISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_SWEDISH.nsh" @ONLY) 123 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_FINNISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_FINNISH.nsh" @ONLY) 124 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_NORWEGIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_NORWEGIAN.nsh" @ONLY) 125 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_CHINESETW.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_CHINESETW.nsh" @ONLY) 126 configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_TURKISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_TURKISH.nsh" @ONLY) 127ENDIF(TWIN32 AND NOT UNIX) 128 129 130# this dummy target is necessary to make sure the ADDITIONAL_MAKE_CLEAN_FILES directive is executed. 131# apparently, the base CMakeLists.txt file must have "some" target to activate all the clean steps. 132#ADD_CUSTOM_TARGET(dummy COMMENT "dummy: Done." DEPENDS ${PACKAGE_NAME}) 133 134 135INCLUDE(CPack) 136 137IF(NOT STANDALONE MATCHES "BUNDLED") 138 139IF(APPLE) 140MESSAGE (STATUS "*** Staging to build PlugIn OSX Package ***") 141 142 # Copy a bunch of files so the Packages installer builder can find them 143 # relative to ${CMAKE_CURRENT_BINARY_DIR} 144 # This avoids absolute paths in the chartdldr_pi.pkgproj file 145 146configure_file(${PROJECT_SOURCE_DIR}/cmake/gpl.txt 147 ${CMAKE_CURRENT_BINARY_DIR}/license.txt COPYONLY) 148 149configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg 150 ${CMAKE_CURRENT_BINARY_DIR}/pkg_background.jpg COPYONLY) 151 152 # Patch the pkgproj.in file to make the output package name conform to Xxx-Plugin_x.x.pkg format 153 # Key is: 154 # <key>NAME</key> 155 # <string>${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR}</string> 156 157 configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/${PACKAGE_NAME}.pkgproj.in 158 ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj) 159 160 ADD_CUSTOM_COMMAND( 161 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg 162 COMMAND /usr/local/bin/packagesbuild -F ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj 163 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 164 DEPENDS ${PACKAGE_NAME} 165 COMMENT "create-pkg [${PACKAGE_NAME}]: Generating pkg file." 166) 167 168 ADD_CUSTOM_TARGET(create-pkg COMMENT "create-pkg: Done." 169 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg ) 170 171 172ENDIF(APPLE) 173ENDIF(NOT STANDALONE MATCHES "BUNDLED") 174