| 1 | cmake_minimum_required(VERSION 2.8) |
|---|
| 2 | project(TOL-Installer) |
|---|
| 3 | |
|---|
| 4 | if(LIB64) |
|---|
| 5 | message( STATUS "LIB64" ) |
|---|
| 6 | endif() |
|---|
| 7 | |
|---|
| 8 | if(WIN32) |
|---|
| 9 | # módulo adicional para construir el instalados con NSIS |
|---|
| 10 | set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/NSIS" ${CMAKE_MODULE_PATH}) |
|---|
| 11 | endif(WIN32) |
|---|
| 12 | |
|---|
| 13 | if(NOT TOL_RUNTIME_DIR) |
|---|
| 14 | message(FATAL_ERROR "You must specify the variable TOL_RUNTIME_DIR with the path to binary instalation of TOL. TOLTCL and TOLBASE should also be installed on that location.") |
|---|
| 15 | endif(NOT TOL_RUNTIME_DIR) |
|---|
| 16 | |
|---|
| 17 | # => http://www.cmake.org/Wiki/CMake:CPackPackageGenerators |
|---|
| 18 | |
|---|
| 19 | if(WIN32) |
|---|
| 20 | # usando MinGW |
|---|
| 21 | set(CPACK_PACKAGE_NAME "TOL (GNU)") |
|---|
| 22 | endif(WIN32) |
|---|
| 23 | if(UNIX) |
|---|
| 24 | set(CPACK_PACKAGE_NAME "TOL") |
|---|
| 25 | endif(UNIX) |
|---|
| 26 | |
|---|
| 27 | set(CPACK_PACKAGE_VENDOR "Tol-Project") |
|---|
| 28 | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Time Oriented Language") |
|---|
| 29 | set(CPACK_PACKAGE_VERSION_MAJOR "3") |
|---|
| 30 | set(CPACK_PACKAGE_VERSION_MINOR "2") |
|---|
| 31 | set(CPACK_PACKAGE_VERSION_PATCH "0") |
|---|
| 32 | set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") |
|---|
| 33 | |
|---|
| 34 | if(WIN32) |
|---|
| 35 | # usando MinGW (ej. tol-gnu-v3.2) |
|---|
| 36 | set(CPACK_PACKAGE_NAMEV "tol-gnu-v${CPACK_PACKAGE_VERSION}") |
|---|
| 37 | endif(WIN32) |
|---|
| 38 | if(UNIX) |
|---|
| 39 | # (ej. tol_3.2) |
|---|
| 40 | set(CPACK_PACKAGE_NAMEV "tol-${CPACK_PACKAGE_VERSION}") |
|---|
| 41 | endif(UNIX) |
|---|
| 42 | |
|---|
| 43 | # obligatorio para DEB |
|---|
| 44 | set(CPACK_PACKAGE_CONTACT "Pedro Gea <pgea@bayesforecast.com>") |
|---|
| 45 | |
|---|
| 46 | if(UNIX) |
|---|
| 47 | set(CPACK_DEBIAN_PACKAGE_SECTION "Mathematics") |
|---|
| 48 | endif(UNIX) |
|---|
| 49 | |
|---|
| 50 | if( UNIX ) |
|---|
| 51 | EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE ) |
|---|
| 52 | message( STATUS "Architecture: ${ARCHITECTURE}" ) |
|---|
| 53 | set( CPACK_RPM_PACKAGE_AUTOREQ " no" ) |
|---|
| 54 | #set( CPACK_RPM_PACKAGE_REQUIRES "suitesparse >= 3, boost-filesystem >= 1.41, boost-thread >= 1.41, fftw-devel >= 3") |
|---|
| 55 | set( CPACK_RPM_PACKAGE_REQUIRES " boost-filesystem >= 1.41, boost-thread >= 1.41, suitesparse >= 3, fftw >= 3, gsl >= 1.13, bzip2-libs, zlib, libtool-ltdl, libcurl >= 7.19 " ) |
|---|
| 56 | set( CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCHITECTURE} ) |
|---|
| 57 | endif( UNIX ) |
|---|
| 58 | |
|---|
| 59 | #set( CPACK_RPM_PACKAGE_ARCHITECTURE |
|---|
| 60 | |
|---|
| 61 | if(WIN32) |
|---|
| 62 | set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAMEV}") |
|---|
| 63 | set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAMEV}") |
|---|
| 64 | |
|---|
| 65 | # => http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack |
|---|
| 66 | |
|---|
| 67 | # BIN (APPLICATION) |
|---|
| 68 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.dll" dll_pattern) |
|---|
| 69 | file(GLOB RT_DLL ${dll_pattern}) |
|---|
| 70 | install(FILES ${RT_DLL} DESTINATION "bin" COMPONENT application) |
|---|
| 71 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.exe" exe_pattern) |
|---|
| 72 | file(GLOB RT_EXE ${exe_pattern}) |
|---|
| 73 | install(FILES ${RT_EXE} DESTINATION "bin" COMPONENT application) |
|---|
| 74 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir) |
|---|
| 75 | install(DIRECTORY ${stdlib_dir} DESTINATION "bin" COMPONENT application |
|---|
| 76 | PATTERN ".svn" EXCLUDE) |
|---|
| 77 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/language.txt" language_txt) |
|---|
| 78 | file(GLOB RT_TXT ${language_txt}) |
|---|
| 79 | install(FILES ${RT_TXT} DESTINATION "bin" COMPONENT application) |
|---|
| 80 | # BIN (DEVELOPMENT) |
|---|
| 81 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.lib" lib_pattern) |
|---|
| 82 | file(GLOB RT_LIB ${lib_pattern}) |
|---|
| 83 | install(FILES ${RT_LIB} DESTINATION "bin" COMPONENT development) |
|---|
| 84 | # LIB (APPLICATION) |
|---|
| 85 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir) |
|---|
| 86 | install(DIRECTORY ${lib_dir} DESTINATION "." COMPONENT application |
|---|
| 87 | PATTERN "*.a" EXCLUDE PATTERN ".svn" EXCLUDE) |
|---|
| 88 | # INCLUDE (DEVELOPMENT) |
|---|
| 89 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir) |
|---|
| 90 | install(DIRECTORY ${include_dir} DESTINATION "." COMPONENT development) |
|---|
| 91 | |
|---|
| 92 | # Components |
|---|
| 93 | set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE") |
|---|
| 94 | set(CPACK_COMPONENTS_ALL application development) |
|---|
| 95 | set(CPACK_COMPONENT_APPLICATION_REQUIRED 1) |
|---|
| 96 | set(CPACK_COMPONENT_DEVELOPMENT_DISABLED 1) |
|---|
| 97 | set(CPACK_COMPONENT_APPLICATION_DISPLAY_NAME "TOL Application") |
|---|
| 98 | set(CPACK_COMPONENT_DEVELOPMENT_DISPLAY_NAME "C++ Headers & Libraries") |
|---|
| 99 | set(CPACK_COMPONENT_APPLICATION_DESCRIPTION "Main components of TOL Application") |
|---|
| 100 | set(CPACK_COMPONENT_DEVELOPMENT_DESCRIPTION "C/C++ header files and libraries for development purposes") |
|---|
| 101 | endif(WIN32) |
|---|
| 102 | |
|---|
| 103 | if(UNIX) |
|---|
| 104 | # BIN |
|---|
| 105 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/tol*" exe_pattern) |
|---|
| 106 | file(GLOB RT_EXE ${exe_pattern}) |
|---|
| 107 | install(FILES ${RT_EXE} DESTINATION "lib/tol${CPACK_PACKAGE_VERSION}/bin" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE) |
|---|
| 108 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir) |
|---|
| 109 | install(DIRECTORY ${stdlib_dir} DESTINATION "lib/tol${CPACK_PACKAGE_VERSION}/bin") |
|---|
| 110 | # LIB |
|---|
| 111 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir) |
|---|
| 112 | install(DIRECTORY ${lib_dir} DESTINATION "lib/tol${CPACK_PACKAGE_VERSION}") |
|---|
| 113 | # INCLUDE |
|---|
| 114 | file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir) |
|---|
| 115 | install(DIRECTORY ${include_dir} DESTINATION "lib/tol${CPACK_PACKAGE_VERSION}") |
|---|
| 116 | endif(UNIX) |
|---|
| 117 | |
|---|
| 118 | # => http://stackoverflow.com/questions/21144655/customizing-nsis-installer-using-cpack |
|---|
| 119 | configure_file(${CMAKE_SOURCE_DIR}/CPackOptions.cmake.in ${PROJECT_BINARY_DIR}/CPackOptions.cmake) |
|---|
| 120 | |
|---|
| 121 | set(CPACK_PROPERTIES_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake") |
|---|
| 122 | |
|---|
| 123 | set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/tol/COPYING") |
|---|
| 124 | if(WIN32) |
|---|
| 125 | string(REPLACE "/" "\\\\" CPACK_RESOURCE_FILE_LICENSE ${CPACK_RESOURCE_FILE_LICENSE}) |
|---|
| 126 | endif(WIN32) |
|---|
| 127 | |
|---|
| 128 | if(WIN32) |
|---|
| 129 | # => http://www.mantidproject.org/NSIS_CPACK_Customisations |
|---|
| 130 | # => http://nsis.sourceforge.net/Environmental_Variables:_append,_prepend,_and_remove_entries |
|---|
| 131 | # => http://www.cmake.org/Wiki/CMake:CPackNSISAdvancedTips |
|---|
| 132 | |
|---|
| 133 | set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/NSIS/nsis_tol.bmp") |
|---|
| 134 | string(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON}) |
|---|
| 135 | set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/NSIS/tolbase-install.ico") |
|---|
| 136 | string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON ${CPACK_NSIS_MUI_ICON}) |
|---|
| 137 | set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/NSIS/tolbase-uninstall.ico") |
|---|
| 138 | string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_UNIICON}) |
|---|
| 139 | set(CPACK_NSIS_HELP_LINK "www.tol-project.org") |
|---|
| 140 | |
|---|
| 141 | # nombre del paquete en el instalador |
|---|
| 142 | set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}") |
|---|
| 143 | # nombre del instalador: |
|---|
| 144 | set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}-win32") |
|---|
| 145 | |
|---|
| 146 | set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " |
|---|
| 147 | DeleteRegValue HKCU \\\"Environment\\\" TOLGNU_ROOT |
|---|
| 148 | WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT \\\$INSTDIR |
|---|
| 149 | SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000 |
|---|
| 150 | ") |
|---|
| 151 | set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " |
|---|
| 152 | DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT |
|---|
| 153 | SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000 |
|---|
| 154 | ") |
|---|
| 155 | |
|---|
| 156 | # añade el icono en el panel para desinstalar programas |
|---|
| 157 | set(CPACK_NSIS_INSTALLED_ICON_NAME "${INSTDIR}/lib/TolbaseApp${CPACK_PACKAGE_VERSION}/toltk/images/tolbase-gnu.ico") |
|---|
| 158 | string(REPLACE "/" "\\\\" CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_NSIS_INSTALLED_ICON_NAME}) |
|---|
| 159 | |
|---|
| 160 | # pregunta tras instalar si abrir tolbase |
|---|
| 161 | set(CPACK_NSIS_MUI_FINISHPAGE_RUN "tolbase.exe") |
|---|
| 162 | |
|---|
| 163 | # crea acceso directos a estos ejecutables (pares nombre_archivo nombre_acceso) |
|---|
| 164 | set(CPACK_PACKAGE_EXECUTABLES tolbase "tolbase-gnu-v${CPACK_PACKAGE_VERSION}") |
|---|
| 165 | # crea otros accesos directos |
|---|
| 166 | set(CPACK_NSIS_MENU_LINKS "http://www.tol-project.org" "Tol-Project Site") |
|---|
| 167 | endif(WIN32) |
|---|
| 168 | |
|---|
| 169 | if(UNIX) |
|---|
| 170 | # nombre del paquete instalador |
|---|
| 171 | set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}") |
|---|
| 172 | endif(UNIX) |
|---|
| 173 | |
|---|
| 174 | include(CPack) |
|---|