| 1 |
|
|---|
| 2 | # la variable SOURCE_DIR apunta al directorio principal del código (trunk)
|
|---|
| 3 | set(SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
|
|---|
| 4 |
|
|---|
| 5 | # directorio con archivos adicionales para el instalador
|
|---|
| 6 | set(NSIS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/NSIS")
|
|---|
| 7 | # módulo adicional para construir el instalados con NSIS
|
|---|
| 8 | set(CMAKE_MODULE_PATH "${NSIS_DIR}" ${CMAKE_MODULE_PATH})
|
|---|
| 9 |
|
|---|
| 10 | # => http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
|
|---|
| 11 |
|
|---|
| 12 | if(${TOL_PLATFORM} EQUAL "64")
|
|---|
| 13 | message(STATUS "Installer for TOL 64-bits")
|
|---|
| 14 | # la version de 64 bits se instala en el "program files" de 64
|
|---|
| 15 | # el instalador es sin embargo un ejecutable de 32 bits
|
|---|
| 16 | set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
|
|---|
| 17 | set(win_system_name win64)
|
|---|
| 18 | set(TOL_ENV_VAR TOLGNU_ROOT_64)
|
|---|
| 19 | set(CPACK_PACKAGE_NAME "TOL (GNU-64)")
|
|---|
| 20 | else()
|
|---|
| 21 | message(STATUS "Installer for TOL 32-bits")
|
|---|
| 22 | set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32")
|
|---|
| 23 | set(win_system_name win32)
|
|---|
| 24 | set(TOL_ENV_VAR TOLGNU_ROOT)
|
|---|
| 25 | set(CPACK_PACKAGE_NAME "TOL (GNU)")
|
|---|
| 26 | endif()
|
|---|
| 27 |
|
|---|
| 28 | if(INCLUDE_TOLBASE)
|
|---|
| 29 | message(STATUS "Installer includes tolbase")
|
|---|
| 30 | set(CPACK_PACKAGE_NAMEV_INSTALL "tol-gnu-v${CPACK_PACKAGE_VERSION}")
|
|---|
| 31 | set(CPACK_PACKAGE_NAMEV "tol-gnu-v${CPACK_PACKAGE_VERSION}")
|
|---|
| 32 | else()
|
|---|
| 33 | message(STATUS "Installer includes only tolsh")
|
|---|
| 34 | set(CPACK_PACKAGE_NAMEV_INSTALL "tol-gnu-v${CPACK_PACKAGE_VERSION}")
|
|---|
| 35 | # se utiliza un nombre diferente para el instalador sin tolbase
|
|---|
| 36 | set(CPACK_PACKAGE_NAMEV "tolsh-gnu-v${CPACK_PACKAGE_VERSION}")
|
|---|
| 37 | endif()
|
|---|
| 38 |
|
|---|
| 39 | #! Debería comprobarse que fueron compilados e instalados en el Runtime_Base
|
|---|
| 40 | #! los proyectos tol, toltcl y rtol, y también tolbase si corresponde.
|
|---|
| 41 |
|
|---|
| 42 | set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAMEV_INSTALL}")
|
|---|
| 43 | set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAMEV_INSTALL}")
|
|---|
| 44 |
|
|---|
| 45 | # => http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack
|
|---|
| 46 |
|
|---|
| 47 | # BIN (APPLICATION)
|
|---|
| 48 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.dll" dll_pattern)
|
|---|
| 49 | file(GLOB RT_DLL ${dll_pattern})
|
|---|
| 50 | install(FILES ${RT_DLL} DESTINATION "bin" COMPONENT application)
|
|---|
| 51 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.exe" exe_pattern)
|
|---|
| 52 | file(GLOB RT_EXE ${exe_pattern})
|
|---|
| 53 | install(FILES ${RT_EXE} DESTINATION "bin" COMPONENT application)
|
|---|
| 54 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir)
|
|---|
| 55 | install(DIRECTORY ${stdlib_dir} DESTINATION "bin" COMPONENT application
|
|---|
| 56 | PATTERN ".svn" EXCLUDE)
|
|---|
| 57 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/language.txt" language_txt)
|
|---|
| 58 | file(GLOB RT_TXT ${language_txt})
|
|---|
| 59 | install(FILES ${RT_TXT} DESTINATION "bin" COMPONENT application)
|
|---|
| 60 |
|
|---|
| 61 | # BIN (DEVELOPMENT)
|
|---|
| 62 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.lib" lib_pattern)
|
|---|
| 63 | file(GLOB RT_LIB ${lib_pattern})
|
|---|
| 64 | install(FILES ${RT_LIB} DESTINATION "bin" COMPONENT development)
|
|---|
| 65 |
|
|---|
| 66 | # LIB (APPLICATION)
|
|---|
| 67 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir)
|
|---|
| 68 | install(DIRECTORY ${lib_dir} DESTINATION "." COMPONENT application
|
|---|
| 69 | PATTERN "*.a" EXCLUDE PATTERN ".svn" EXCLUDE)
|
|---|
| 70 |
|
|---|
| 71 | # INCLUDE (DEVELOPMENT)
|
|---|
| 72 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir)
|
|---|
| 73 | install(DIRECTORY ${include_dir} DESTINATION "." COMPONENT development)
|
|---|
| 74 |
|
|---|
| 75 | # Components
|
|---|
| 76 | set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE")
|
|---|
| 77 | set(CPACK_COMPONENTS_ALL application development)
|
|---|
| 78 | set(CPACK_COMPONENT_APPLICATION_REQUIRED 1)
|
|---|
| 79 | set(CPACK_COMPONENT_DEVELOPMENT_DISABLED 1)
|
|---|
| 80 | set(CPACK_COMPONENT_APPLICATION_DISPLAY_NAME "TOL Application")
|
|---|
| 81 | set(CPACK_COMPONENT_DEVELOPMENT_DISPLAY_NAME "C++ Headers & Libraries")
|
|---|
| 82 | set(CPACK_COMPONENT_APPLICATION_DESCRIPTION "Main components of TOL Application")
|
|---|
| 83 | set(CPACK_COMPONENT_DEVELOPMENT_DESCRIPTION "C/C++ header files and libraries for development purposes")
|
|---|
| 84 |
|
|---|
| 85 | # => http://stackoverflow.com/questions/21144655/customizing-nsis-installer-using-cpack
|
|---|
| 86 | configure_file(${SOURCE_DIR}/CPackOptions.cmake.in ${PROJECT_BINARY_DIR}/CPackOptions.cmake)
|
|---|
| 87 |
|
|---|
| 88 | set(CPACK_PROPERTIES_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake")
|
|---|
| 89 |
|
|---|
| 90 | set(CPACK_RESOURCE_FILE_LICENSE "${SOURCE_DIR}/tol/COPYING")
|
|---|
| 91 | string(REPLACE "/" "\\\\" CPACK_RESOURCE_FILE_LICENSE ${CPACK_RESOURCE_FILE_LICENSE})
|
|---|
| 92 |
|
|---|
| 93 | # => http://www.mantidproject.org/NSIS_CPACK_Customisations
|
|---|
| 94 | # => http://nsis.sourceforge.net/Environmental_Variables:_append,_prepend,_and_remove_entries
|
|---|
| 95 | # => http://www.cmake.org/Wiki/CMake:CPackNSISAdvancedTips
|
|---|
| 96 |
|
|---|
| 97 | set(CPACK_PACKAGE_ICON "${NSIS_DIR}/nsis_tol.bmp")
|
|---|
| 98 | string(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON})
|
|---|
| 99 | set(CPACK_NSIS_MUI_ICON "${NSIS_DIR}/tolbase-install.ico")
|
|---|
| 100 | string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON ${CPACK_NSIS_MUI_ICON})
|
|---|
| 101 | set(CPACK_NSIS_MUI_UNIICON "${NSIS_DIR}/tolbase-uninstall.ico")
|
|---|
| 102 | string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_UNIICON})
|
|---|
| 103 | set(CPACK_NSIS_HELP_LINK "www.tol-project.org")
|
|---|
| 104 |
|
|---|
| 105 | # nombre del paquete en el instalador
|
|---|
| 106 | set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
|
|---|
| 107 | # nombre del instalador:
|
|---|
| 108 | set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}-${win_system_name}")
|
|---|
| 109 | message(STATUS "Instaler Name: ${CPACK_PACKAGE_FILE_NAME}")
|
|---|
| 110 |
|
|---|
| 111 | set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
|
|---|
| 112 | DeleteRegValue HKCU \\\"Environment\\\" ${TOL_ENV_VAR}
|
|---|
| 113 | WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" ${TOL_ENV_VAR} \\\$INSTDIR
|
|---|
| 114 | SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
|
|---|
| 115 | ")
|
|---|
| 116 | set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
|
|---|
| 117 | DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" ${TOL_ENV_VAR}
|
|---|
| 118 | SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
|
|---|
| 119 | ")
|
|---|
| 120 |
|
|---|
| 121 | if(INCLUDE_TOLBASE)
|
|---|
| 122 | # añade el icono en el panel para desinstalar programas
|
|---|
| 123 | set(CPACK_NSIS_INSTALLED_ICON_NAME "${INSTDIR}/lib/TolbaseApp${CPACK_PACKAGE_VERSION}/toltk/images/tolbase-gnu.ico")
|
|---|
| 124 | string(REPLACE "/" "\\\\" CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_NSIS_INSTALLED_ICON_NAME})
|
|---|
| 125 |
|
|---|
| 126 | # pregunta tras instalar si abrir tolbase
|
|---|
| 127 | set(CPACK_NSIS_MUI_FINISHPAGE_RUN "tolbase.exe")
|
|---|
| 128 |
|
|---|
| 129 | # crea acceso directos a estos ejecutables (pares nombre_archivo nombre_acceso)
|
|---|
| 130 | set(CPACK_PACKAGE_EXECUTABLES tolbase "tolbase-gnu-v${CPACK_PACKAGE_VERSION}")
|
|---|
| 131 | endif()
|
|---|
| 132 |
|
|---|
| 133 | # crea otros accesos directos
|
|---|
| 134 | set(CPACK_NSIS_MENU_LINKS "http://www.tol-project.org" "Tol-Project Site")
|
|---|
| 135 |
|
|---|
| 136 | # include(CPack) ha de hacerse en este mismo archivo para que funcione adecuadamente
|
|---|
| 137 | include(CPack)
|
|---|