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