-
Notifications
You must be signed in to change notification settings - Fork 331
/
Copy pathElmerCPack.cmake
177 lines (149 loc) · 7.27 KB
/
ElmerCPack.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# Use CPack only if its cmake script exists
IF(NOT EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
MESSAGE(WARNING "${CMAKE_ROOT}/Modules/CPack.cmake does not exist")
RETURN()
ENDIF()
SET(CPACK_PACKAGE_NAME "Elmer")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Open Source Finite Element Software for Multiphysical Problems")
SET(CPACK_PACKAGE_DESCRIPTION "Elmer is an open source multiphysical
simulation software mainly developed by CSC - IT Center for Science (CSC).
Elmer development was started 1995 in collaboration with Finnish
Universities, research institutes and industry. After it's open source
publication in 2005, the use and development of Elmer has become
international.
Elmer includes physical models of fluid dynamics, structural mechanics,
electromagnetics, heat transfer and acoustics, for example. These are
described by partial differential equations which Elmer solves by the Finite
Element Method (FEM).")
SET(CPACK_PACKAGE_VERSION_MAJOR "${ELMER_FEM_MAJOR_VERSION}")
SET(CPACK_PACKAGE_VERSION_MINOR "${ELMER_FEM_MINOR_VERSION}")
SET(CPACK_PACKAGE_VERSION_PATCH "${ELMER_FEM_REVISION}")
#SET(CPACK_PACKAGE_FILE_NAME "elmerfem-${ELMER_FEM_MAJOR_VERSION}.${ELMER_FEM_MINOR_VERSION}_${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
IF(${CMAKE_VERSION} VERSION_GREATER 2.8.11)
STRING(TIMESTAMP DATE "%Y%m%d")
ELSE()
MESSAGE(WARNING "cmake ${CMAKE_VERSION} does not support STRING(TIMESTAMP ...)")
ENDIF()
SET(CPACK_PACKAGE_BASE_FILE_NAME "elmerfem" CACHE STRING "")
MARK_AS_ADVANCED(CPACK_PACKAGE_BASE_FILE_NAME)
SET(CPACK_PACKAGE_VENDOR "CSC")
SET(CPACK_PACKAGE_VERSION "${ELMER_FEM_MAJOR_VERSION}.${ELMER_FEM_MINOR_VERSION}-${CPACK_PACKAGE_VERSION_PATCH}")
SET(CPACK_PACKAGE_CONTACT "[email protected]")
IF(CPACK_PACKAGE_FILE_NAME STREQUAL "")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_BASE_FILE_NAME}-${CPACK_PACKAGE_VERSION}-${DATE}_${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" CACHE STRING "" FORCE)
ELSE()
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_BASE_FILE_NAME}-${CPACK_PACKAGE_VERSION}-${DATE}_${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" CACHE STRING "")
ENDIF(CPACK_PACKAGE_FILE_NAME STREQUAL "")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license_texts/LICENSES_GPL.txt")
MESSAGE(STATUS "------------------------------------------------")
MESSAGE(STATUS " Package filename: ${CPACK_PACKAGE_FILE_NAME} ")
MESSAGE(STATUS " Patch version: ${CPACK_PACKAGE_VERSION} ")
IF(NOT(BYPASS_DEB_DEPENDENCIES))
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libblas-dev, liblapack-dev")
MACRO(ADD_DEBIAN_DEPENDENCY WITH_RULE DEPS)
IF(${WITH_RULE})
LIST(APPEND DEP_LIST ${DEPS})
ENDIF(${WITH_RULE})
ENDMACRO()
ADD_DEBIAN_DEPENDENCY(WITH_MPI "openmpi-bin")
ADD_DEBIAN_DEPENDENCY(WITH_Mumps "libmumps-4.10.0")
ADD_DEBIAN_DEPENDENCY(WITH_Hypre "libhypre-2.8.0b")
ADD_DEBIAN_DEPENDENCY(WITH_ELMERGUI "libqt4-opengl")
ADD_DEBIAN_DEPENDENCY(WITH_ELMERGUILOGGER "libqt4-core")
ADD_DEBIAN_DEPENDENCY(WITH_ELMERGUITESTER "libqt4-core")
ADD_DEBIAN_DEPENDENCY(WITH_OCC "liboce-foundation" "liboce-modeling8")
ADD_DEBIAN_DEPENDENCY(WITH_PARAVIEW "paraview")
ADD_DEBIAN_DEPENDENCY(WITH_VTK "libvtk5.8-qt4" "libvtk5.8")
ADD_DEBIAN_DEPENDENCY(WITH_QWT "libqwt6")
FOREACH(arg ${DEP_LIST})
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${arg}")
ENDFOREACH()
ENDIF()
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
MARK_AS_ADVANCED(MAKE_DEB_PACKAGE MAKE_RPM_PACKAGE MAKE_TGZ_PACKAGE)
#MESSAGE(STATUS "DEB package dependencies ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
SET(MAKE_DEB_PACKAGE TRUE CACHE BOOL "Create DEB package with cpack")
SET(MAKE_RPM_PACKAGE TRUE CACHE BOOL "Create RPM package with cpack")
SET(MAKE_TGZ_PACKAGE TRUE CACHE BOOL "Create TGZ package with cpack")
IF(MAKE_TGZ_PACKAGE)
LIST(APPEND CPACK_GENERATOR TGZ)
ENDIF()
IF(MAKE_DEB_PACKAGE)
LIST(APPEND CPACK_GENERATOR DEB)
ENDIF()
IF(MAKE_RPM_PACKAGE) # @TODO: untested
SET(CPACK_GENERATOR "${CPACK_GENERATOR};RPM")
ENDIF()
ENDIF()
IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
MARK_AS_ADVANCED(MAKE_NSIS_PACKAGE MAKE_ZIP_PACKAGE CPACK_BUNDLE_EXTRA_WINDOWS_DLLS)
SET(MAKE_ZIP_PACKAGE TRUE CACHE BOOL "Create windows .zip file")
SET(MAKE_NSIS_PACKAGE TRUE CACHE BOOL "Create windows installer executable")
SET(CPACK_BUNDLE_EXTRA_WINDOWS_DLLS TRUE CACHE BOOL "Bundle dlls in windows install.")
IF(CPACK_BUNDLE_EXTRA_WINDOWS_DLLS)
INSTALL(FILES ${LAPACK_LIBRARIES} DESTINATION "bin")
IF(NOT(LAPACK_LIB))
FIND_FILE(LAPACK_LIB liblapack.dll PATH_SUFFIXES "bin")
ENDIF()
IF(NOT(BLAS_LIB))
FIND_FILE(BLAS_LIB libblas.dll PATH_SUFFIXES "bin")
ENDIF()
# msys2 runtime dynamic link libraries
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../bundle_msys2/bin" DESTINATION ".")
# Here we augment the installation by some needed dll's that should be included with QT5.
# This is a quick and dirty remedy. I'm sure there is a prettier way too.
IF(WITH_QT5)
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../bundle_qt5/bin" DESTINATION ".")
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../platforms" DESTINATION "bin")
ENDIF()
IF(WITH_VTK)
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../bundle_vtk/bin" DESTINATION ".")
ENDIF()
IF(WITH_OCC)
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../bundle_oce/bin" DESTINATION ".")
ENDIF()
IF(BUNDLE_STRIPPED_GFORTRAN)
# TODO: This will make the windows package to be GPL3
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../stripped_gfortran" DESTINATION "." COMPONENT "stripped_gfortran")
SET(CPACK_COMPONENT_STRIPPED_GFORTRAN_DESCRIPTION "A stripped version of x86_64-w64-mingw32-gfortran 10.2.0 compiler for compiling Elmer modules.")
SET(CPACK_COMPONENT_STRIPPED_GFORTRAN_DISPLAY_NAME "gfortran 10.2.0")
ENDIF()
IF(WITH_MPI)
IF(BUNDLE_MSMPI_REDIST)
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../msmpi_redist/msmpisetup.exe" DESTINATION "redist" COMPONENT "MS_MPI_Redistributable")
SET(CPACK_COMPONENT_MS_MPI_REDISTRIBUTABLE_DESCRIPTION "Install MS-MPI 10.1.1. Redistributable Package")
SET(CPACK_COMPONENT_MS_MPI_REDISTRIBUTABLE_DISPLAY_NAME "MS-MPI")
LIST(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
IfFileExists '$INSTDIR\\\\redist\\\\msmpisetup.exe' MSMpiSetupExists MsMpiSetupNotExist
MsMpiSetupExists:
ExecWait '$INSTDIR\\\\redist\\\\msmpisetup.exe'
MsMpiSetupNotExist:
")
ENDIF()
ENDIF()
ENDIF()
IF(MAKE_NSIS_PACKAGE)
SET(CPACK_GENERATOR "NSIS")
ENDIF()
IF(MAKE_ZIP_PACKAGE)
SET(CPACK_GENERATOR "${CPACK_GENERATOR};ZIP")
ENDIF()
IF(MAKE_NSIS_PACKAGE)
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpack/NSISCPack.cmake)
ENDIF()
ENDIF()
SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR}" "Elmer" "ALL" "/")
IF(WITH_ELMERGUI)
SET(CPACK_PACKAGE_EXECUTABLES "ElmerGUI" "ElmerGUI")
SET(CPACK_CREATE_DESKTOP_LINKS "ElmerGUI")
ENDIF(WITH_ELMERGUI)
IF(WITH_ELMERPOST)
SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ElmerPost" "ElmerPost")
ENDIF()
IF(WITH_ELMERGUITESTER)
SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ElmerGUItester" "ElmerGUItester")
ENDIF(WITH_ELMERGUITESTER)
IF(WITH_ELMERGUILOGGER)
SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ElmerGUIlogger" "ElmerGUIlogger")
ENDIF(WITH_ELMERGUILOGGER)
INCLUDE(CPack)