initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / bin / tools / buildParaViewFunctions
blob7231ad140e79cab6a0cb4c1c55ee4b0c0bbb34d1
1 #---------------------------------*- sh -*-------------------------------------
2 # =========                 |
3 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4 #  \\    /   O peration     |
5 #   \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
6 #    \\/     M anipulation  |
7 #------------------------------------------------------------------------------
8 # License
9 #     This file is part of OpenFOAM.
11 #     OpenFOAM is free software; you can redistribute it and/or modify it
12 #     under the terms of the GNU General Public License as published by the
13 #     Free Software Foundation; either version 2 of the License, or (at your
14 #     option) any later version.
16 #     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 #     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 #     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19 #     for more details.
21 #     You should have received a copy of the GNU General Public License
22 #     along with OpenFOAM; if not, write to the Free Software Foundation,
23 #     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 # Script
26 #     buildParaViewFunctions
28 # Description
29 #     ParaView build/install helper functions
31 #------------------------------------------------------------------------------
33 addCMakeVariable ()
35     while [ -n "$1" ]
36     do
37         CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
38         shift
39     done
43 initialiseVariables ()
45     unset CMAKE_VARIABLES OBJ_ADD
47     if [ "$VERBOSE" = ON ]; then
48         addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
49     fi
50     addCMakeVariable "VTK_USE_TK=FALSE"
54 addMpiSupport ()
56     [ "$INCLUDE_MPI" = ON ] || return
58     MPI_LIBRARY=$MPI_ARCH_PATH/lib/libmpi.so
59     MPI_INCLUDE_PATH=$MPI_ARCH_PATH/include
60     MPI_RUN=$MPI_ARCH_PATH/bin/mpirun
62     OBJ_ADD="$OBJ_ADD-mpi"
63     addCMakeVariable "VTK_USE_MPI=ON"
64     addCMakeVariable "PARAVIEW_USE_MPI=ON"
65     addCMakeVariable "MPI_INCLUDE_PATH=$MPI_INCLUDE_PATH"
66     addCMakeVariable "MPI_LIBRARY=$MPI_LIBRARY"
67     addCMakeVariable "VTK_MPIRUN_EXE=$MPI_RUN"
68     addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
72 addPythonSupport ()
74     [ "$INCLUDE_PYTHON" = ON ] || return
76     WHICH_PYTHON=`which python`
77     if [ -n "$WHICH_PYTHON" ]; then
78         OBJ_ADD="$OBJ_ADD-py"
80         if [ -n "$PYTHON_LIBRARY" ]; then
81             # check $PYTHON_LIBRARY if it has been set
82             if [ ! -e "$PYTHON_LIBRARY" ]; then
83                 echo "*** Error: libpython not found at location specified " \
84                      "by PYTHON_LIBRARY: $PYTHON_LIBRARY"
85                 echo "    Please set the variable PYTHON_LIBRARY to the full"
86                 echo "    path to (and including) libpython, or deactivate"
87                 echo "    python support by setting INCLUDE_PYTHON=OFF"
88                 exit 1
89             fi
90         else
91             # Try to obtain $PYTHON_LIBRARY if not set
92             # - assumes dynamically linked
93             PYTHON_LIBRARY=`ldd $WHICH_PYTHON | \
94                 sed -ne '/libpython/s/.* => \(.*\) (.*/\1/p'`
95         fi
97         if [ ! -n "$PYTHON_LIBRARY" ]; then
98             echo "*** Error: Unable to determine path to python library."
99             echo "    Please set the variable PYTHON_LIBRARY to the full"
100             echo "    path to (and including) libpython, or deactivate"
101             echo "    python support by setting INCLUDE_PYTHON=OFF"
102             exit 1
103         fi
104         PYTHON_MAJOR_VERSION=`echo $PYTHON_LIBRARY | \
105             sed 's/.*libpython\(.*\)\.so.*/\1/'`
106         PYTHON_INCLUDE_DIR=/usr/include/python$PYTHON_MAJOR_VERSION
108         addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON"
109         addCMakeVariable "PYTHON_INCLUDE_PATH=$PYTHON_INCLUDE_DIR"
110         addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY"
111     else
112         echo "*** Error: python not installed"
113         echo "***        De-activate python support by setting " \
114              "INCLUDE_PYTHON=OFF"
115         exit 1
116     fi
120 addMesaSupport ()
122     [ "$INCLUDE_MESA" = ON ] || return
124     MESA_INCLUDE_DIR=/usr/include/GL
125     MESA_LIBRARY=/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so
127     if [ -d "$MESA_INCLUDE_DIR" -a -f "$MESA_LIBRARY" ]; then
128         OBJ_ADD="$OBJ_ADD-mesa"
129         addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON"
130         addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR"
131         addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY"
132     else
133         echo "*** Error: no MESA information found"
134         exit 1
135     fi
139 buildParaView ()
141     # set general options
142     addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON"
143     addCMakeVariable "VTK_USE_RPATH:BOOL=OFF"
144     addCMakeVariable "CMAKE_BUILD_TYPE:STRING=Release"
146     # set paraview environment
147     unset PARAVIEW_SRC_DIR
148     for i in $PWD $WM_THIRD_PARTY_DIR
149     do
150        if [ -d $i/$PARAVIEW_SRC ]
151        then
152           PARAVIEW_SRC_DIR=$i/$PARAVIEW_SRC
153           break
154        fi
155     done
157     [ -d "$PARAVIEW_SRC_DIR" ] || {
158        echo "did not find $PARAVIEW_SRC in these directories:"
159        echo "  PWD=$PWD"
160        echo "  WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR"
161        echo "abort build"
162        exit 1
163     }
165     # PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS/obj$OBJ_ADD
166     PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_ARCH$WM_COMPILER
168     # provide a shortcut for repeated builds - use with caution
169     if [ "$CMAKE_SKIP" = YES ]
170     then
172        # change to build folder
173        cd $PARAVIEW_OBJ_DIR || exit 1
175     else
177        # remove existing build folder if present
178        if [ -e "$PARAVIEW_OBJ_DIR" ]; then
179            rm -rf $PARAVIEW_OBJ_DIR
180        fi
182        # create paraview build folder
183        mkdir -p $PARAVIEW_OBJ_DIR
184        cd $PARAVIEW_OBJ_DIR
186        echo "Building $PARAVIEW_SRC"
187        echo "    MPI support    : $INCLUDE_MPI"
188        echo "    Python support : $INCLUDE_PYTHON"
189        echo "    MESA support   : $INCLUDE_MESA"
190        echo "    Source         : $PARAVIEW_SRC_DIR"
191        echo "    Target         : $PARAVIEW_OBJ_DIR"
193        # make paraview
194        cmake \
195            -DCMAKE_INSTALL_PREFIX=$PARAVIEW_APP_DIR \
196            $CMAKE_VARIABLES \
197            $PARAVIEW_SRC_DIR
198     fi
200     if [ -r /proc/cpuinfo ]; then
201         WM_NCOMPPROCS=`egrep "^processor" /proc/cpuinfo | wc -l`
203         if [ $WM_NCOMPPROCS -gt 8 ]; then
204             WM_NCOMPPROCS=8
205         fi
207         make -j $WM_NCOMPPROCS
208     else
209         make
210     fi
214 installParaView ()
216     if [ -e "$PARAVIEW_OBJ_DIR/bin/paraview" ]; then
217         echo "    Build complete"
219         cd $PARAVIEW_OBJ_DIR
221         # Replace PARAVIEW_SRC_DIR path with ParaView_INST_DIR
222         # environment variables
223         echo "    Replacing path hard links"
224         find . -iname \*.cmake -execdir sed -i \
225             "s,$PARAVIEW_SRC_DIR,\$ENV{ParaView_INST_DIR},g" {} ';' \
226             -print
228         # Replace local MPI_ARCH_PATH path with MPI_ARCH_PATH
229         # environment variables
230         if [ "$INCLUDE_MPI" = ON ]; then
231             find . -iname \*.cmake -execdir sed -i \
232                 "s,$MPI_ARCH_PATH,\$ENV{MPI_ARCH_PATH},g" {} ';' \
233                 -print
234         fi
236         # Replace local CMAKE_HOME path with CMAKE_HOME
237         # environment variables
238         find . -iname '*cmake*' -execdir sed -i \
239             "s,$CMAKE_HOME,\$ENV{CMAKE_HOME},g" {} ';' \
240             -print
242         # Replace local WM_COMPILER_DIR path with WM_COMPILER_DIR
243         # environment variables
244         find . -iname '*cmake*' -execdir sed -i \
245             "s,$WM_COMPILER_DIR,\$ENV{WM_COMPILER_DIR},g" {} ';' \
246             -print
248         # create a softlink to the $PARAVIEW_OBJ_DIR/bin folder
249         # - workaround for chosen install location
250         echo "    Creating paraview $PARAVIEW_MAJOR_VERSION soft link to /bin"
251         (  mkdir lib && cd lib && ln -s ../bin \
252             paraview-$PARAVIEW_MAJOR_VERSION  )
254         # info on symlinks to screen
255         echo ""
256         echo "    ---"
257         echo "    Installation complete"
258         echo "    Set environment variables:"
259         echo "    - ParaView_INST_DIR to $PARAVIEW_SRC_DIR"
260         echo "    - ParaView_DIR to $PARAVIEW_OBJ_DIR"
261         echo "    - PV_PLUGIN_PATH to $FOAM_LIBBIN"
262         echo "    Add $PARAVIEW_OBJ_DIR/bin to PATH"
263         # echo "   Add $ParaView_INST_DIR/lib to LD_LIBRARY_PATH"
264         echo "    ---"
265     fi
269 # for good measure - clear a few variables before using any of the functions
271 unset VERBOSE INCLUDE_MPI INCLUDE_PYTHON INCLUDE_MESA PYTHON_LIBRARY
272 unset CMAKE_VARIABLES OBJ_ADD
273 unset CMAKE_SKIP
276 # ----------------------------------------------------------------- end-of-file