source: tol/CMakeLists.txt @ 6d12912

1941-docker-image-to-testdevel
Last change on this file since 6d12912 was b0cbf1a, checked in by Jorge Pérez <josp.jorge@…>, 11 years ago

refs #1860, invocamos el contenido de rpm_post_install.sh desde la seccion %post del rpm

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

  • Property mode set to 100644
File size: 11.9 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)")
18else(WIN32)
19  set(CPACK_PACKAGE_NAME "TOL")
20endif(WIN32)
21
22set(CPACK_PACKAGE_VENDOR "Tol-Project")
23set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Time Oriented Language")
24set(CPACK_PACKAGE_VERSION_MAJOR "3")
25set(CPACK_PACKAGE_VERSION_MINOR "2")
26set(CPACK_PACKAGE_VERSION_PATCH "0")
27set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
28
29if(WIN32)
30  # usando MinGW (ej. tol-gnu-v3.2)
31  set(CPACK_PACKAGE_NAMEV "tol-gnu-v${CPACK_PACKAGE_VERSION}")
32endif(WIN32)
33if(UNIX)
34  # (ej. tol_3.2)
35  set(CPACK_PACKAGE_NAMEV "tol-${CPACK_PACKAGE_VERSION}")
36endif(UNIX)
37
38# System specific information: https://cmake.org/pipermail/cmake/attachments/20100722/04976a73/attachment-0001.obj
39if(UNIX)
40  if(CMAKE_SYSTEM_NAME MATCHES "Linux")
41    set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}")
42    set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "TGZ")
43    if(EXISTS "/etc/issue")
44      set(LINUX_NAME "")
45      file(READ "/etc/issue" LINUX_ISSUE)
46      message( STATUS "LINUX_ISSUE = ${LINUX_ISSUE}" )
47      # CentOS case
48      if(LINUX_ISSUE MATCHES "CentOS")
49        string(REGEX MATCH "release ([0-9]+)" CENTOS "${LINUX_ISSUE}")
50        set(LINUX_NAME "CentOS_${CMAKE_MATCH_1}") 
51        set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "RPM")     
52      endif(LINUX_ISSUE MATCHES "CentOS")
53      # Fedora case
54      if(LINUX_ISSUE MATCHES "Fedora")
55        string(REGEX MATCH "release ([0-9]+)" FEDORA "${LINUX_ISSUE}")
56        set(LINUX_NAME "FC${CMAKE_MATCH_1}") 
57        set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "RPM")     
58      endif(LINUX_ISSUE MATCHES "Fedora")
59      # Ubuntu case
60      if(LINUX_ISSUE MATCHES "Ubuntu")
61        string(REGEX MATCH "buntu ([0-9]+\\.[0-9]+)" UBUNTU "${LINUX_ISSUE}")
62        set(LINUX_NAME "Ubuntu_${CMAKE_MATCH_1}")       
63        set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "DEB")
64      endif(LINUX_ISSUE MATCHES "Ubuntu")
65      # Debian case
66      if(LINUX_ISSUE MATCHES "Debian")
67        string(REGEX MATCH "Debian .*ux ([a-zA-Z]*/?[a-zA-Z]*) .*" DEBIAN "${LINUX_ISSUE}")
68        set(LINUX_NAME "Debian_${CMAKE_MATCH_1}")
69        string(REPLACE "/" "_" LINUX_NAME ${LINUX_NAME})
70        set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "DEB")       
71      endif(LINUX_ISSUE MATCHES "Debian")     
72      # Open SuSE case
73      if(LINUX_ISSUE MATCHES "SUSE")
74        string(REGEX MATCH "SUSE  ([0-9]+\\.[0-9]+)" SUSE "${LINUX_ISSUE}")
75        set(LINUX_NAME "openSUSE_${CMAKE_MATCH_1}")
76        string(REPLACE "/" "_" LINUX_NAME ${LINUX_NAME})   
77        set(SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR "RPM")     
78      endif(LINUX_ISSUE MATCHES "SUSE")
79      # Mandriva case
80      # TODO     
81      if(LINUX_NAME)
82         set(SPECIFIC_SYSTEM_VERSION_NAME "${CMAKE_SYSTEM_NAME}-${LINUX_NAME}")
83      endif(LINUX_NAME)   
84    endif(EXISTS "/etc/issue")     
85  endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
86  set(SPECIFIC_SYSTEM_VERSION_NAME "${SPECIFIC_SYSTEM_VERSION_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
87  set(SPECIFIC_COMPILER_NAME "")
88endif(UNIX)
89
90# obligatorio para DEB
91set(CPACK_PACKAGE_CONTACT "Pedro Gea <pgea@bayesforecast.com>")
92
93if(UNIX)
94  set(CPACK_DEBIAN_PACKAGE_SECTION "Mathematics")
95endif(UNIX)
96
97if( UNIX )
98  get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
99  if ("${LIB64}" STREQUAL "TRUE")
100    set(LIBSUFFIX 64)
101  else()
102    set(LIBSUFFIX "")
103  endif()
104
105  EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
106  message( STATUS "Architecture: ${ARCHITECTURE}" )
107  message( STATUS "SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR = ${SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR}" )
108  if( SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR STREQUAL "RPM" )
109    EXECUTE_PROCESS(
110      COMMAND rpmbuild --eval "%_arch"
111      OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE
112      ERROR_VARIABLE IGNORE_ERROR
113      OUTPUT_STRIP_TRAILING_WHITESPACE )
114
115    EXECUTE_PROCESS(
116      COMMAND rpmbuild --eval "${CPACK_PACKAGE_VERSION_PATCH}%dist"
117      OUTPUT_VARIABLE CPACK_RPM_PACKAGE_RELEASE
118      ERROR_VARIABLE IGNORE_ERROR
119      OUTPUT_STRIP_TRAILING_WHITESPACE )
120
121    set( RPM_FILE_NAME "${CPACK_PACKAGE_NAMEV}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}" )
122    message( STATUS "RPM_FILE_NAME = '${RPM_FILE_NAME}'" )
123  endif()
124
125  # RPM
126  set( CPACK_RPM_PACKAGE_URL "www.tol-project.org" )
127  set( CPACK_RPM_PACKAGE_RELOCATABLE ON )
128  set( CPACK_RPM_PACKAGE_AUTOREQ " no" )
129  #set( CPACK_RPM_PACKAGE_REQUIRES "suitesparse >= 3, boost-filesystem >= 1.41, boost-thread >= 1.41, fftw-devel >= 3")
130  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 " )
131  # if the user wants to use the dbdrivers he must install
132  # postgresql-libs >= 8.4, mysql-libs, unixODBC
133  set( CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCHITECTURE} )
134
135  # DEB
136  #set(CPACK_DEBIAN_PACKAGE_DEPENDS "liblapacke (>= 3.5.0-2), libblas3 (>= 1.2)")
137  set( CPACK_DEBIAN_PACKAGE_DEPENDS "libboost-filesystem-dev (>= 1.41), libboost-thread-dev (>= 1.41), libsuitesparse-dev, libfftw3-dev, libgsl0-dev (>= 1.13), bzip2, zlib1g-dev, libltdl-dev, libcurl3 (>=7.19)" )
138# ya estaban libcurl3 y bzip2
139endif( UNIX )
140
141if(WIN32)
142  set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAMEV}")
143  set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAMEV}")
144
145  # => http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack
146
147  # BIN (APPLICATION)
148  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.dll" dll_pattern)
149  file(GLOB RT_DLL  ${dll_pattern})
150  install(FILES ${RT_DLL} DESTINATION "bin" COMPONENT application)
151  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.exe" exe_pattern)
152  file(GLOB RT_EXE  ${exe_pattern})
153  install(FILES ${RT_EXE} DESTINATION "bin" COMPONENT application)
154  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir)
155  install(DIRECTORY ${stdlib_dir} DESTINATION "bin" COMPONENT application
156    PATTERN ".svn" EXCLUDE)
157  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/language.txt" language_txt)
158  file(GLOB RT_TXT  ${language_txt})
159  install(FILES ${RT_TXT} DESTINATION "bin" COMPONENT application)
160  # BIN (DEVELOPMENT)
161  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/*.lib" lib_pattern)
162  file(GLOB RT_LIB  ${lib_pattern})
163  install(FILES ${RT_LIB} DESTINATION "bin" COMPONENT development)
164  # LIB (APPLICATION)
165  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir)
166  install(DIRECTORY ${lib_dir} DESTINATION "." COMPONENT application
167    PATTERN "*.a" EXCLUDE PATTERN ".svn" EXCLUDE)
168  # INCLUDE (DEVELOPMENT)
169  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir)
170  install(DIRECTORY ${include_dir} DESTINATION "." COMPONENT development)
171
172  # Components
173  set(CPACK_COMPONENTS_GROUPING "ALL_COMPONENTS_IN_ONE")
174  set(CPACK_COMPONENTS_ALL application development)
175  set(CPACK_COMPONENT_APPLICATION_REQUIRED 1)
176  set(CPACK_COMPONENT_DEVELOPMENT_DISABLED 1)
177  set(CPACK_COMPONENT_APPLICATION_DISPLAY_NAME "TOL Application")
178  set(CPACK_COMPONENT_DEVELOPMENT_DISPLAY_NAME "C++ Headers & Libraries")
179  set(CPACK_COMPONENT_APPLICATION_DESCRIPTION "Main components of TOL Application")
180  set(CPACK_COMPONENT_DEVELOPMENT_DESCRIPTION "C/C++ header files and libraries for development purposes")
181endif(WIN32)
182
183if(UNIX)
184  # BIN
185  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/tol*" exe_pattern)
186  file(GLOB RT_EXE  ${exe_pattern} "${TOL_RUNTIME_DIR}/bin/confenv.sh" )
187  set( PREFIX_TOL "lib${LIBSUFFIX}/tol${CPACK_PACKAGE_VERSION}" )
188  install(FILES ${RT_EXE} DESTINATION "${PREFIX_TOL}/bin"
189    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
190                GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE
191                WORLD_EXECUTE)
192  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/bin/stdlib" stdlib_dir)
193  install(DIRECTORY ${stdlib_dir} DESTINATION "${PREFIX_TOL}/bin")
194  # LIB
195  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/lib" lib_dir)
196  install(DIRECTORY ${lib_dir} DESTINATION "${PREFIX_TOL}")
197  # INCLUDE
198  file(TO_CMAKE_PATH "${TOL_RUNTIME_DIR}/include" include_dir)
199  install(DIRECTORY ${include_dir} DESTINATION "${PREFIX_TOL}")
200  # SCRIPTS (/usr/bin)
201  ## !!
202  ## file(TO_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/building/Linux_32/scripts/tol*" sh_pattern)
203  ## file(GLOB RT_SH  ${sh_pattern})
204  ## install(FILES ${RT_SH} DESTINATION "bin" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
205endif(UNIX)
206
207# => http://stackoverflow.com/questions/21144655/customizing-nsis-installer-using-cpack
208configure_file(${CMAKE_SOURCE_DIR}/CPackOptions.cmake.in ${PROJECT_BINARY_DIR}/CPackOptions.cmake)
209
210set(CPACK_PROPERTIES_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake")
211
212set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/tol/COPYING")
213if(WIN32)
214  string(REPLACE "/" "\\\\" CPACK_RESOURCE_FILE_LICENSE ${CPACK_RESOURCE_FILE_LICENSE})
215endif(WIN32)
216
217if(WIN32)
218  # => http://www.mantidproject.org/NSIS_CPACK_Customisations
219  # => http://nsis.sourceforge.net/Environmental_Variables:_append,_prepend,_and_remove_entries
220  # => http://www.cmake.org/Wiki/CMake:CPackNSISAdvancedTips
221
222  set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/NSIS/nsis_tol.bmp")
223  string(REPLACE "/" "\\\\" CPACK_PACKAGE_ICON ${CPACK_PACKAGE_ICON})
224  set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/NSIS/tolbase-install.ico")
225    string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_ICON ${CPACK_NSIS_MUI_ICON})
226  set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/NSIS/tolbase-uninstall.ico")
227    string(REPLACE "/" "\\\\" CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_UNIICON})
228  set(CPACK_NSIS_HELP_LINK "www.tol-project.org")
229
230  # nombre del paquete en el instalador
231  set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
232  # nombre del instalador:
233  set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}-win32")
234
235  set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
236    DeleteRegValue HKCU \\\"Environment\\\" TOLGNU_ROOT
237    WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT \\\$INSTDIR
238    SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
239  ")
240  set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
241    DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" TOLGNU_ROOT
242    SendMessage \\\${HWND_BROADCAST} \\\${WM_WININICHANGE} 0 \\\"STR:Environment\\\" /TIMEOUT=5000
243  ")
244
245  # añade el icono en el panel para desinstalar programas
246  set(CPACK_NSIS_INSTALLED_ICON_NAME "${INSTDIR}/lib/TolbaseApp${CPACK_PACKAGE_VERSION}/toltk/images/tolbase-gnu.ico")
247    string(REPLACE "/" "\\\\" CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_NSIS_INSTALLED_ICON_NAME})
248
249  # pregunta tras instalar si abrir tolbase
250  set(CPACK_NSIS_MUI_FINISHPAGE_RUN "tolbase.exe")
251
252  # crea acceso directos a estos ejecutables (pares nombre_archivo nombre_acceso)
253  set(CPACK_PACKAGE_EXECUTABLES tolbase "tolbase-gnu-v${CPACK_PACKAGE_VERSION}")
254  # crea otros accesos directos
255  set(CPACK_NSIS_MENU_LINKS "http://www.tol-project.org" "Tol-Project Site")
256endif(WIN32)
257
258if(UNIX)
259  # nombre del paquete instalador
260  if( SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR STREQUAL "RPM" )
261    configure_file( ${CMAKE_SOURCE_DIR}/cpack/rpm_post_install.sh.in ${CMAKE_CURRENT_BINARY_DIR}/rpm_post_install.sh )
262    set( CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/rpm_post_install.sh" )
263   
264    set(CPACK_PACKAGE_FILE_NAME "${RPM_FILE_NAME}")
265  else()
266    set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAMEV}")
267  endif()
268  message( STATUS "CPACK_PACKAGE_FILE_NAME = ${CPACK_PACKAGE_FILE_NAME}" )
269endif(UNIX)
270
271include(CPack)
Note: See TracBrowser for help on using the repository browser.