Salome HOME
use PERSALYS v12, openturns 1.18. Use OPENTURNS_SALOME git repository instead of...
[tools/sat_salome.git] / products / compil_scripts / ParaView-5.9.0.sh
1 #!/bin/bash
2
3 echo "##########################################################################"
4 echo "ParaView" $VERSION
5 echo "##########################################################################"
6
7
8 PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
9
10 CMAKE_OPTIONS=""
11
12 ### common compiler and install settings
13 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
14 CMAKE_OPTIONS+=" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
15 if [ -n "$SAT_DEBUG" ]; then
16     CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Debug"
17 else
18     CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE:STRING=Release"
19 fi
20 CMAKE_OPTIONS+=" -DCMAKE_CXX_FLAGS:STRING=-m64"
21 CMAKE_OPTIONS+=" -DCMAKE_C_FLAGS:STRING=-m64"
22
23 ### common ParaView settings
24 CMAKE_OPTIONS+=" -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON"
25 CMAKE_OPTIONS+=" -DCMAKE_INSTALL_LIBDIR:STRING=lib"
26 CMAKE_OPTIONS+=" -DBUILD_TESTING:BOOL=OFF"
27 CMAKE_OPTIONS+=" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
28
29 ### OpenGL settings
30 CMAKE_OPTIONS+=" -DOpenGL_GL_PREFERENCE:STRING=LEGACY"
31 CMAKE_OPTIONS+=" -DCATALYST_BUILD_STUB_IMPLEMENTATION:BOOL=ON"
32
33 echo "INFO: setting CATALYST"
34 CMAKE_OPTIONS+=" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGeneratorPlugin=ON"
35 CMAKE_OPTIONS+=" -DPARAVIEW_AUTOLOAD_PLUGIN_CatalystScriptGeneratorPlugin=ON"
36 CMAKE_OPTIONS+=" -DPARAVIEW_BUILD_CATALYST_ADAPTORS=ON"
37 CMAKE_OPTIONS+=" -DUSE_CATALYST:BOOL=ON"
38 CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_CATALYST=ON"
39
40 ### spns #20550 - Headless mode
41 if [ -n "$PARAVIEW_HEADLESS_MODE" ]; then
42     EGL_FOUND=false
43     LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION"
44     case $LINUX_DISTRIBUTION in
45         CO*|FD*)
46             if [ -f /usr/include/EGL/egl.h ] && [ -f /usr/lib64/libEGL.so ] && [ -f /usr/lib64/libOpenGL.so ]
47             then
48                 EGL_FOUND=true
49             fi
50             ;;
51         *)
52             ;;
53     esac
54     if [ $EGL_FOUND == "true" ]; then
55         echo "WARNING: Building with headless mode support..."
56         CMAKE_OPTIONS+=" -DVTK_OPENGL_HAS_EGL:BOOL=ON"
57     else
58         echo "FATAL: Headless mode cannot be set on node $LINUX_DISTRIBUTION! Please expand the PARAVIEW_HEADLESS_MODE section in script: $0"
59         exit 1
60     fi
61 fi
62
63 ### Ray-tracing settings
64 if [ -n "$OSPRAY_ROOT_DIR" ]; then
65     CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_RAYTRACING:BOOL=ON"
66     CMAKE_OPTIONS+=" -DVTK_ENABLE_OSPRAY:BOOL=ON"
67     CMAKE_OPTIONS+=" -Dospray_DIR:PATH=${OSPRAY_ROOT_DIR}/lib/cmake/ospray-${OSPRAY_VERSION}"
68     CMAKE_OPTIONS+=" -Dembree_DIR:PATH=${EMBREE_ROOT_DIR}/lib/cmake/embree-${EMBREE_VERSION}"
69 else
70     echo "WARNING: Paraview will be built without OSPRAY support!"
71     CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_RAYTRACING:BOOL=OFF"
72     CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_OSPRAY:BOOL=OFF"
73 fi
74
75 ### VTK general settings
76 if [ -n "$SALOME_USE_64BIT_IDS" ]
77 then
78     echo "WARNING: user requested VTK 64 bits encoding..."
79     CMAKE_OPTIONS+=" -DVTK_USE_64BIT_IDS:BOOL=ON"
80 else
81     CMAKE_OPTIONS+=" -DVTK_USE_64BIT_IDS:BOOL=OFF"
82 fi
83 CMAKE_OPTIONS+=" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
84 CMAKE_OPTIONS+=" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
85
86 CMAKE_OPTIONS+=" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
87
88 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_RenderingLOD:INTERNAL=YES"
89 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_FiltersCore:INTERNAL=YES"
90 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_CommonCore:INTERNAL=YES"
91 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_IOCore:INTERNAL=YES"
92 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_IOEnSight:INTERNAL=YES"
93 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_IOInfovis:INTERNAL=YES"
94
95 ### TBB settings (in case of a system installation, TBB will be detected automatically)
96 if [ -n "$TBB_ROOT_DIR" ]
97 then
98     CMAKE_OPTIONS+=" -DTBB_ROOT:PATH=${TBB_ROOT_DIR}"
99 fi
100
101 ### Qt settings
102 CMAKE_OPTIONS+=" -DPARAVIEW_USE_QT:BOOL=ON"
103 CMAKE_OPTIONS+=" -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
104
105 ### Python settings
106 CMAKE_OPTIONS+=" -DPARAVIEW_USE_PYTHON:BOOL=ON"
107 CMAKE_OPTIONS+=" -DVTK_WRAP_PYTHON:BOOL=ON"
108 if [ "${PYTHON_ROOT_DIR}" != "/usr" ]
109 then
110     CMAKE_OPTIONS+=" -DPython3_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
111     CMAKE_OPTIONS+=" -DPython3_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so"
112 fi
113 CMAKE_OPTIONS+=" -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON"
114 CMAKE_OPTIONS+=" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"
115 CMAKE_OPTIONS+=" -DVTK_PYTHON_VERSION:STRING=3"
116
117 ### Java settings
118 CMAKE_OPTIONS+=" -DVTK_WRAP_JAVA:BOOL=OFF"
119
120 ### MPI settings
121 if [ -n "$SAT_HPC" ]
122 then
123     CMAKE_OPTIONS+=" -DPARAVIEW_USE_MPI:BOOL=ON"
124     if [ -n "$MPI_ROOT_DIR" ]; then
125         CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=${MPI_CXX_COMPILER}"
126         CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=${MPI_C_COMPILER}"
127     fi
128     CMAKE_OPTIONS+=" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP -DVTKm_ENABLE_OPENMP=ON"
129     CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_FiltersParallelMPI=YES"
130     CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_ParallelMPI=YES"
131     CMAKE_OPTIONS+=" -DMPI_C_FOUND=${MPI_C_FOUND}"
132 elif [ -n "$VTK_SMP_IMPLEMENTATION_TYPE" ]
133 then
134     echo "WARNING: VTK_SMP_IMPLEMENTATION_TYPE environment variable was found...."
135     CMAKE_OPTIONS+=" -DPARAVIEW_USE_MPI:BOOL=OFF"
136     CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
137     CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=`which gcc`"
138     if [[ $VTK_SMP_IMPLEMENTATION_TYPE = "sequential" ]]
139     then
140         echo "WARNING: sequential approach will be used..."
141         CMAKE_OPTIONS+=" -DPARAVIEW_USE_MPI:BOOL=OFF"
142         CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
143         CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=`which gcc`"
144     elif [[ $VTK_SMP_IMPLEMENTATION_TYPE = "TBB" ]]
145     then
146         echo "WARNING: VTK_SMP_IMPLEMENTATION_TYPE was set to: TBB..."
147         CMAKE_OPTIONS+=" -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DVTKm_ENABLE_TBB:BOOL=ON"
148     elif [[ $VTK_SMP_IMPLEMENTATION_TYPE = "OpenMP" ]]
149     then
150         echo "WARNING: VTK_SMP_IMPLEMENTATION_TYPE was set to: OpenMP..."
151         CMAKE_OPTIONS+=" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP -DVTKm_ENABLE_OPENMP:BOOL=ON"
152     else
153         echo "ERROR: Unknown ${VTK_SMP_IMPLEMENTATION_TYPE} option.... aborting!"
154         exit 1
155     fi
156 else
157     echo "WARNING: MPI will not be supported!"
158     CMAKE_OPTIONS+=" -DPARAVIEW_USE_MPI:BOOL=OFF"
159     CMAKE_OPTIONS+=" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
160     CMAKE_OPTIONS+=" -DCMAKE_C_COMPILER:STRING=`which gcc`"
161 fi
162
163 ### HDF5 settings
164 CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON"
165 ###CMAKE_OPTIONS+=" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
166 CMAKE_OPTIONS+=" -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
167 CMAKE_OPTIONS+=" -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
168 CMAKE_OPTIONS+=" -DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib"
169 CMAKE_OPTIONS+=" -DHDF5_hdf5_hl_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
170 CMAKE_OPTIONS+=" -DHDF5_hdf5_CXX_LIBRARY_RELEASE=${HDF5_ROOT_DIR}/lib/libhdf5_cpp.so"
171 CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
172 CMAKE_OPTIONS+=" -DHDF5_C_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
173 CMAKE_OPTIONS+=" -DHDF5_HL_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5_hl.so"
174 CMAKE_OPTIONS+=" -DHDF5_C_LIBRARY=${HDF5_ROOT_DIR}/lib/libhdf5.so"
175 CMAKE_OPTIONS+=" -DHDF5_INCLUDE_DIR=${HDF5_ROOT_DIR}/include"
176 ### CGNS
177 CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns:BOOL=ON"
178 if [ "$CGNS_ROOT_DIR" != "/usr" ]
179 then
180     CMAKE_OPTIONS+=" -DCGNS_INCLUDE_DIR:PATH=${CGNS_ROOT_DIR}/include"
181     CMAKE_OPTIONS+=" -DCGNS_LIBRARY:PATH=${CGNS_ROOT_DIR}/lib/libcgns.so"
182 fi
183 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_ParaView_cgns:INTERNAL=YES"
184 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSReader:INTERNAL=YES"
185 CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSWriter:INTERNAL=YES"
186
187 ### VisIt Database bridge settings
188 CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON"
189
190 ### Boost settings
191 CMAKE_OPTIONS+=" -DBOOST_ROOT:PATH=${BOOST_ROOT_DIR}"
192 CMAKE_OPTIONS+=" -DBoost_NO_BOOST_CMAKE:BOOL=ON"
193 CMAKE_OPTIONS+=" -DBoost_NO_SYSTEM_PATHS:BOOL=ON"
194
195 ### gl2ps settings
196 CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF"
197
198 ### libxml2 settings
199 if [ -n "$LIBXML2_ROOT_DIR" ]
200 then
201     # with a native libxml2, do not use these options
202     CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON"
203     if [ "${LIBXML2_ROOT_DIR}" != "/usr" ]
204     then
205         CMAKE_OPTIONS+=" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
206         CMAKE_OPTIONS+=" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
207         CMAKE_OPTIONS+=" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
208     fi
209 fi
210
211 ### freetype settings
212 CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON"
213 if [ -n "$FREETYPE_ROOT_DIR" ]
214 then
215     # with a native freetype, do not use these options
216     CMAKE_OPTIONS+=" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
217     CMAKE_OPTIONS+=" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
218 fi
219
220 ### Extra options
221 CMAKE_OPTIONS+=" -DPARAVIEW_PLUGINS_DEFAULT:BOOL=ON"
222 CMAKE_OPTIONS+=" -DPARAVIEW_PLUGIN_ENABLE_Moments:BOOL=OFF"
223 CMAKE_OPTIONS+=" -DPARAVIEW_PLUGIN_ENABLE_SLACTools:BOOL=OFF"
224 CMAKE_OPTIONS+=" -DPARAVIEW_PLUGIN_ENABLE_PacMan:BOOL=OFF"
225 CMAKE_OPTIONS+=" -DPARAVIEW_PLUGIN_ENABLE_pvblot:BOOL=OFF"
226
227 # allow additional plugins
228 CMAKE_OPTIONS+=" -DVTK_ALL_NEW_OBJECT_FACTORY:BOOL=ON"
229
230 # Openturns:
231 if [ -n "$OT_VERSION" ]; then
232     function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
233     if version_ge $OT_VERSION "1.17" ; then
234         echo "INFO: Adding OpenTURNS version ${OT_VERSION} support..."
235         CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_OPENTURNS=ON"
236         CMAKE_OPTIONS+=" -DOpenTURNS_DIR=$OT_ROOT_DIR/lib/cmake/openturns"
237     else
238         echo "WARNING: OpenTURNS ${OT_VERSON} is not supported with current ParaView build..."
239     fi
240 else
241     echo "WARNING: No OpenTURNS environment variable is found..."
242 fi
243
244 # GDAL see bos #26944
245 if [ -n "$GDAL_ROOT_DIR" ]; then
246     echo "INFO: switching ON GDAL"
247     CMAKE_OPTIONS+=" -DPARAVIEW_ENABLE_GDAL:BOOL=ON"
248     if [ "$GDAL_ROOT_DIR" != "/usr" ]; then
249         CMAKE_OPTIONS+=" -DGDAL_ROOT_DIR=$GDAL_ROOT_DIR"
250         CMAKE_OPTIONS+=" -DGDAL_LIBRARY=$GDAL_ROOT_DIR/lib/libgdal.so"
251         CMAKE_OPTIONS+=" -DGDAL_INCLUDE_DIR=$GDAL_ROOT_DIR/include"
252     fi
253     CMAKE_OPTIONS+=" -DPARAVIEW_GENERATE_PROXY_DOCUMENTATION:BOOL=ON"
254     CMAKE_OPTIONS+=" -DPARAVIEW_PLUGIN_ENABLE_GeographicalMap:BOOL=ON"
255 fi
256
257 # NETCDF see bos #26944
258 if [ -n "$NETCDF_ROOT_DIR" ]; then
259     echo "INFO: switching ON NETCDF"
260     CMAKE_OPTIONS+=" -DVTK_MODULE_USE_EXTERNAL_VTK_netcdf:BOOL=ON"
261     if [ "NETCDF_ROOT_DIR" != "/usr" ]; then
262         CMAKE_OPTIONS+=" -DNETCDF_ROOT_DIR=$NETCDF_ROOT_DIR"
263         CMAKE_OPTIONS+=" -Dnetcdf_DIR=$NETCDF_ROOT_DIR/lib/cmake/netCDF"
264 #        CMAKE_OPTIONS+=" -DCMAKE_PREFIX_PATH=$NETCDF_ROOT_DIR/lib/cmake/netCDF"
265     fi
266     CMAKE_OPTIONS+=" -DVTK_MODULE_ENABLE_VTK_FiltersParallelGeometry=YES"
267 fi
268
269 echo
270 echo "*** cmake" ${CMAKE_OPTIONS}
271 cmake ${CMAKE_OPTIONS} $SOURCE_DIR
272 if [ $? -ne 0 ]
273 then
274     echo "ERROR on cmake"
275     exit 1
276 fi
277
278 # SPN #18779
279 MEMTOTAL=$(cat /proc/meminfo | grep MemTotal | awk ' {print $2}')
280 MEMTHRESHOLD=15000000
281 if [ "$MEMTOTAL" -lt "$MEMTHRESHOLD" ] || [ -n "$SAT_PARAVIEW_FORCE_MAKE_J1" ]; then
282     echo "WARNING: ParaView build requires large memory for VTKm compilation step..."
283     echo "WARNING: ParaView build requires large memory for VTKm compilation step..."
284     echo "WARNING: Available RAM is smaller than 16GB... using -j 1"
285     MAKE_OPTIONS="-j 1 "
286 fi
287
288 echo
289 echo "*** make" $MAKE_OPTIONS
290 make $MAKE_OPTIONS
291 if [ $? -ne 0 ]
292 then
293     echo "ERROR on make"
294     exit 2
295 fi
296
297 echo
298 echo "*** make install"
299 make install
300 if [ $? -ne 0 ]
301 then
302     echo "ERROR on make install"
303     exit 3
304 fi
305
306 echo
307 echo "########## END"