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