source: tol/CMakeLists.txt @ 18f7361

1941-docker-image-to-testdevel
Last change on this file since 18f7361 was 416d6ed, checked in by Pedro Gea <pgea@…>, 11 years ago

Refs #1860, #1880
Se revisa el CMakeLists.txt del instalador.
Se incorpora un script para generar el instalador en linux (tanto DEB como RPM).

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@6920 be4846ae-f051-483a-831f-b64e7d08527f

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