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