From 83b101a1b8a73af9530e2f8b6762f868cd6b060c Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Tue, 27 May 2008 15:07:34 +0200
Subject: [PATCH] ParaView build fixes

  * share libs were not getting built
  * can now build from anywhere if the source is in $WM_PROJECT_INST_DIR
  * misc. stylistic changes
---
 bin/buildParaView3.2.1                 | 156 -----------------------
 bin/{ => tools}/buildParaView3.3-cvs   |  44 +++----
 bin/{ => tools}/buildParaViewFunctions | 170 ++++++++++++++++---------
 3 files changed, 131 insertions(+), 239 deletions(-)
 delete mode 100755 bin/buildParaView3.2.1
 rename bin/{ => tools}/buildParaView3.3-cvs (71%)
 rename bin/{ => tools}/buildParaViewFunctions (61%)

diff --git a/bin/buildParaView3.2.1 b/bin/buildParaView3.2.1
deleted file mode 100755
index 81a315fcee1..00000000000
--- a/bin/buildParaView3.2.1
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/bin/sh
-set -x
-
-# ParaView 3.x build script
-# - run from folder above source folder
-PARAVIEW_SRC="ParaView3.2.1"
-
-VERBOSE="OFF"
-INCLUDE_MPI="ON"
-MPI_MAX_PROCS=32
-INCLUDE_PYTHON="ON"
-INCLUDE_MESA="OFF"
-
-# initialisation
-CMAKE_VARIABLES=""
-PWD=`pwd`
-OBJ_ADD=""
-
-# set general options
-CMAKE_VARIABLES="$CMAKE_VARIABLES -DBUILD_SHARED_LIBS:BOOL=ON"
-
-if [ "$VERBOSE" = "ON" ]; then
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DCMAKE_VERBOSE_MAKEFILE=TRUE"
-fi
-
-# set MPI specific options
-if [ "$INCLUDE_MPI" = "ON" ]; then
-    OBJ_ADD="$OBJ_ADD-mpi"
-
-    if [ "$WM_MPLIB" = "OPENMPI" ]; then
-        MPI_INCLUDE_PATH=$OPENMPI_ARCH_PATH/include
-        MPI_LIBRARY=$OPENMPI_ARCH_PATH/lib/libmpi.so
-        MPI_RUN=$OPENMPI_ARCH_PATH/bin/mpirun
-    elif [ "$WM_MPLIB" = "LAM" ]; then
-        MPI_INCLUDE_PATH=$LAM_ARCH_PATH/include
-        MPI_LIBRARY=$LAM_ARCH_PATH/lib/libmpi.so
-        MPI_RUN=$LAM_ARCH_PATH/bin/mpirun
-    elif [ "$WM_MPLIB" = "MPICH" ]; then
-        MPI_INCLUDE_PATH=$MPICH_ARCH_PATH/include
-        MPI_LIBRARY=$MPICH_ARCH_PATH/lib/libmpich.so
-        MPI_RUN=$MPICH_ARCH_PATH/bin/mpirun
-    fi
-
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DVTK_USE_MPI=ON"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DPARAVIEW_USE_MPI=ON"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DMPI_INCLUDE_PATH=$MPI_INCLUDE_PATH"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DMPI_LIBRARY=$MPI_LIBRARY"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DVTK_MPIRUN_EXE=$MPI_RUN"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DVTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
-fi
-
-# set python specific options
-if [ "$INCLUDE_PYTHON" = "ON" ]; then
-    WHICH_PYTHON=`which python`
-    if [ "$WHICH_PYTHON" != "" ]; then
-        OBJ_ADD="$OBJ_ADD-py"
-
-        PYTHON_LIBRARY=`ldd $WHICH_PYTHON | grep libpython | \
-            sed 's/.* => \(.*\) (.*/\1/'`
-        PYTHON_MAJOR_VERSION=`echo $PYTHON_LIBRARY | \
-            sed 's/.*libpython\(.*\).so.*/\1/'`
-        PYTHON_INCLUDE_DIR=/usr/include/python$PYTHON_MAJOR_VERSION
-
-        CMAKE_VARIABLES="$CMAKE_VARIABLES -DPARAVIEW_ENABLE_PYTHON=ON"
-        CMAKE_VARIABLES= \
-            "$CMAKE_VARIABLES -DPYTHON_INCLUDE_PATH=$PYTHON_INCLUDE_DIR"
-        CMAKE_VARIABLES="$CMAKE_VARIABLES -DPYTHON_LIBRARY=$PYTHON_LIBRARY"
-    else
-        echo "*** Warning: Unable to determine python libray"
-        echo "***          De-activating python support"
-        INCLUDE_PYTHON="OFF"
-    fi
-fi
-
-# set MESA specific options
-if [ "$INCLUDE_MESA" = "ON" ]; then
-    OBJ_ADD="$OBJ_ADD-mesa"
-
-    MESA_INCLUDE_DIR=/usr/include/GL
-    MESA_LIBRARY=/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so
-
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DVTK_OPENGL_HAS_OSMESA=ON"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DOSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR"
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -DOSMESA_LIBRARY=$MESA_LIBRARY"
-fi
-
-# set paraview environment
-PARAVIEW_SRC_DIR=$PWD/$PARAVIEW_SRC
-#PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS/obj$OBJ_ADD
-PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS
-
-# remove existing build folder if present
-if [ -e "$PARAVIEW_OBJ_DIR" ]; then
-    rm -rf $PARAVIEW_OBJ_DIR
-fi
-
-# create paraview build folder
-mkdir -p $PARAVIEW_OBJ_DIR
-cd $PARAVIEW_OBJ_DIR
-
-echo "Building $PARAVIEW_SRC"
-echo "    MPI support    : $INCLUDE_MPI"
-echo "    Python support : $INCLUDE_PYTHON"
-echo "    MESA support   : $INCLUDE_MESA"
-echo "    Source         : $PARAVIEW_SRC_DIR"
-echo "    Target         : $PARAVIEW_OBJ_DIR"
-
-# make paraview
-cmake \
-    -DCMAKE_INSTALL_PREFIX=$PARAVIEW_APP_DIR \
-    $CMAKE_VARIABLES \
-    $PARAVIEW_SRC_DIR
-
-if [ -r /proc/cpuinfo ]; then
-    WM_NCOMPPROCS=`egrep "^processor" /proc/cpuinfo | wc -l`
-
-    if [ $WM_NCOMPPROCS -gt 8 ]; then
-        WM_NCOMPPROCS=8
-    fi
-
-    make -j $WM_NCOMPPROCS
-else
-    make
-fi
-
-if [ -e "$PARAVIEW_OBJ_DIR/bin/paraview" ]; then
-    echo "    Build complete"
-
-    # replace local links with ParaView_INST_DIR environment variables
-    echo "    Replacing path hard links"
-    find . -iname \*.cmake -execdir sed -i \
-        "s,$PARAVIEW_SRC_DIR,\$ENV{ParaView_INST_DIR},g" {} ';' \
-        -print
-
-    # create a softlink to the $PARAVIEW_OBJ_DIR/bin folder
-    echo "    Creating paraview 3.2 soft link to /bin"
-    ( mkdir lib && cd lib && ln -s ../bin paraview-3.2 )
-
-    # info on symlinks to screen
-    echo ""
-    echo "    ---"
-    echo "    Installation complete"
-    echo "    Set environment variables:"
-    echo "    - ParaView_INST_DIR to $PARAVIEW_SRC_DIR"
-    echo "    - ParaView_DIR to $PARAVIEW_OBJ_DIR"
-    echo "    - PV_PLUGIN_PATH to $FOAM_LIBBIN"
-    echo "    Add $PARAVIEW_OBJ_DIR/bin to PATH"
-    #echo "   Add $ParaView_INST_DIR/lib to LD_LIBRARY_PATH"
-    echo "    ---"
-    echo "done."
-fi
-
-# finalisation
-cd $PWD
-
-
diff --git a/bin/buildParaView3.3-cvs b/bin/tools/buildParaView3.3-cvs
similarity index 71%
rename from bin/buildParaView3.3-cvs
rename to bin/tools/buildParaView3.3-cvs
index 40a879cd24d..32ee3cf1697 100755
--- a/bin/buildParaView3.3-cvs
+++ b/bin/tools/buildParaView3.3-cvs
@@ -28,48 +28,42 @@
 #
 # Description
 #     Build and install ParaView
-#     - run from folder above source folder
+#     - run from folder above ParaView source folder or place the
+#       ParaView source under $WM_PROJECT_INST_DIR
 #
 #------------------------------------------------------------------------------
-set -x
+. $WM_PROJECT_DIR/bin/tools/buildParaViewFunctions
 
-. $WM_PROJECT_DIR/bin/buildParaViewFunctions
+# set -x
 
 PARAVIEW_SRC="ParaView3.3-cvs"
-PARAVIEW_MAJOR_VERSION="3.2"
+PARAVIEW_MAJOR_VERSION="3.3"
 
-VERBOSE="OFF"
-INCLUDE_MPI="ON"
+VERBOSE=OFF
+INCLUDE_MPI=ON
 MPI_MAX_PROCS=32
-INCLUDE_PYTHON="ON"
+INCLUDE_PYTHON=ON
 #PYTHON_LIBRARY="/usr/lib64/libpython2.5.so.1.0"
 PYTHON_LIBRARY=""
-INCLUDE_MESA="OFF"
+INCLUDE_MESA=OFF
 
+set +x
 
-initialiseVariables
-
-# set MPI specific options
-if [ "$INCLUDE_MPI" = "ON" ]; then
-    addMpiSupport
+# provide a shortcut for repeated builds - use with caution
+if [ "$#" -gt 0 ]
+then
+   CMAKE_SKIP=YES
 fi
 
-# set python specific options
-if [ "$INCLUDE_PYTHON" = "ON" ]; then
-    addPythonSupport
-fi
+initialiseVariables
 
-# set MESA specific options
-if [ "$INCLUDE_MESA" = "ON" ]; then
-    addMesaSupport
-fi
+addMpiSupport       # set MPI specific options
+addPythonSupport    # set python specific options
+addMesaSupport      # set MESA specific options
 
 buildParaView
-
 installParaView
 
-# finalisation
-cd $PWD
-
 echo "done."
 
+#------------------------------------------------------------------------------
diff --git a/bin/buildParaViewFunctions b/bin/tools/buildParaViewFunctions
similarity index 61%
rename from bin/buildParaViewFunctions
rename to bin/tools/buildParaViewFunctions
index 50130800968..326fed83ba7 100644
--- a/bin/buildParaViewFunctions
+++ b/bin/tools/buildParaViewFunctions
@@ -31,59 +31,71 @@
 #
 #------------------------------------------------------------------------------
 
-initialiseVariables ()
+addCMakeVariable ()
 {
-    CMAKE_VARIABLES=""
-    PWD=`pwd`
-    OBJ_ADD=""
-
-    if [ "$VERBOSE" = "ON" ]; then
-        addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
-    fi
+    while [ -n "$1" ]
+    do
+        CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
+        shift
+    done
 }
 
 
-addCMakeVariable ()
+initialiseVariables ()
 {
-    if [ -z "$1" ]; then
-        echo "*** Error: addCMakeVariable()"
-        echo "    No variable to add"
-    fi
+    unset CMAKE_VARIABLES OBJ_ADD
 
-    CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
+    if [ "$VERBOSE" = ON ]; then
+        addCMakeVariable "CMAKE_VERBOSE_MAKEFILE=TRUE"
+    fi
 }
 
 
 addMpiSupport ()
 {
-    OBJ_ADD="$OBJ_ADD-mpi"
+    [ "$INCLUDE_MPI" = ON ] || return
 
-   # using OpenFOAM variables to identify location of MPI libraries
-   if [ "$WM_MPLIB" = "OPENMPI" ]; then
+    # using OpenFOAM variables to identify location of MPI libraries
+    case "$WM_MPLIB" in
+    OPENMPI)
         MPI_INCLUDE_PATH=$OPENMPI_ARCH_PATH/include
         MPI_LIBRARY=$OPENMPI_ARCH_PATH/lib/libmpi.so
         MPI_RUN=$OPENMPI_ARCH_PATH/bin/mpirun
-    elif [ "$WM_MPLIB" = "LAM" ]; then
+        ;;
+    LAM)
         MPI_INCLUDE_PATH=$LAM_ARCH_PATH/include
         MPI_LIBRARY=$LAM_ARCH_PATH/lib/libmpi.so
         MPI_RUN=$LAM_ARCH_PATH/bin/mpirun
-    elif [ "$WM_MPLIB" = "MPICH" ]; then
+        ;;
+    MPICH)
         MPI_INCLUDE_PATH=$MPICH_ARCH_PATH/include
         MPI_LIBRARY=$MPICH_ARCH_PATH/lib/libmpich.so
         MPI_RUN=$MPICH_ARCH_PATH/bin/mpirun
+        ;;
+    *)
+        unset MPI_INCLUDE_PATH
+        ;;
+    esac
+
+    if [ "$MPI_INCLUDE_PATH" ]; then
+        OBJ_ADD="$OBJ_ADD-mpi"
+        addCMakeVariable "VTK_USE_MPI=ON"
+        addCMakeVariable "PARAVIEW_USE_MPI=ON"
+        addCMakeVariable "MPI_INCLUDE_PATH=$MPI_INCLUDE_PATH"
+        addCMakeVariable "MPI_LIBRARY=$MPI_LIBRARY"
+        addCMakeVariable "VTK_MPIRUN_EXE=$MPI_RUN"
+        addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
+    else
+       echo "unknown/unsupported mpi: $WM_MPLIB"
+       INCLUDE_MPI=OFF
     fi
-
-    addCMakeVariable "VTK_USE_MPI=ON"
-    addCMakeVariable "PARAVIEW_USE_MPI=ON"
-    addCMakeVariable "MPI_INCLUDE_PATH=$MPI_INCLUDE_PATH"
-    addCMakeVariable "MPI_LIBRARY=$MPI_LIBRARY"
-    addCMakeVariable "VTK_MPIRUN_EXE=$MPI_RUN"
-    addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
 }
 
 
 addPythonSupport ()
 {
+    [ "$INCLUDE_PYTHON" = ON ] || return
+
     WHICH_PYTHON=`which python`
     if [ -n "$WHICH_PYTHON" ]; then
         OBJ_ADD="$OBJ_ADD-py"
@@ -130,48 +142,81 @@ addPythonSupport ()
 
 addMesaSupport ()
 {
-    OBJ_ADD="$OBJ_ADD-mesa"
-
-    MESA_INCLUDE_DIR=/usr/include/GL
-    MESA_LIBRARY=/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so
-
-    addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON"
-    addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR"
-    addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY"
+   [ "$INCLUDE_MESA" = ON ] || return
+
+   MESA_INCLUDE_DIR=/usr/include/GL
+   MESA_LIBRARY=/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so
+
+   if [ -d "$MESA_INCLUDE_DIR" -a -f "$MESA_LIBRARY" ]; then
+       OBJ_ADD="$OBJ_ADD-mesa"
+       addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON"
+       addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR"
+       addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY"
+   else
+       echo "no MESA information found ... skipping"
+       INCLUDE_MESA=OFF
+   fi
 }
 
 
 buildParaView ()
 {
     # set general options
-    addCmakeVariable "DBUILD_SHARED_LIBS:BOOL=ON"
+    addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON"
 
     # set paraview environment
-    PARAVIEW_SRC_DIR=$PWD/$PARAVIEW_SRC
+    unset PARAVIEW_SRC_DIR
+    for i in $PWD $WM_PROJECT_INST_DIR
+    do
+       if [ -d $i/$PARAVIEW_SRC ]
+       then
+          PARAVIEW_SRC_DIR=$i/$PARAVIEW_SRC
+          break
+       fi
+    done
+
+    [ -d "$PARAVIEW_SRC_DIR" ] || {
+       echo "did not find $PARAVIEW_SRC in these directories:"
+       echo "  PWD=$PWD"
+       echo "  WM_PROJECT_INST_DIR=$WM_PROJECT_INST_DIR"
+       echo "abort build"
+       exit 1
+    }
+
     #PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS/obj$OBJ_ADD
     PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS
 
-    # remove existing build folder if present
-    if [ -e "$PARAVIEW_OBJ_DIR" ]; then
-        rm -rf $PARAVIEW_OBJ_DIR
-    fi
+    # provide a shortcut for repeated builds - use with caution
+    if [ "$CMAKE_SKIP" = YES ]
+    then
 
-    # create paraview build folder
-    mkdir -p $PARAVIEW_OBJ_DIR
-    cd $PARAVIEW_OBJ_DIR
+       # change to build folder
+       cd $PARAVIEW_OBJ_DIR || exit 1
 
-    echo "Building $PARAVIEW_SRC"
-    echo "    MPI support    : $INCLUDE_MPI"
-    echo "    Python support : $INCLUDE_PYTHON"
-    echo "    MESA support   : $INCLUDE_MESA"
-    echo "    Source         : $PARAVIEW_SRC_DIR"
-    echo "    Target         : $PARAVIEW_OBJ_DIR"
+    else
 
-    # make paraview
-    cmake \
-        -DCMAKE_INSTALL_PREFIX=$PARAVIEW_APP_DIR \
-        $CMAKE_VARIABLES \
-        $PARAVIEW_SRC_DIR
+       # remove existing build folder if present
+       if [ -e "$PARAVIEW_OBJ_DIR" ]; then
+           rm -rf $PARAVIEW_OBJ_DIR
+       fi
+
+       # create paraview build folder
+       mkdir -p $PARAVIEW_OBJ_DIR
+       cd $PARAVIEW_OBJ_DIR
+
+       echo "Building $PARAVIEW_SRC"
+       echo "    MPI support    : $INCLUDE_MPI"
+       echo "    Python support : $INCLUDE_PYTHON"
+       echo "    MESA support   : $INCLUDE_MESA"
+       echo "    Source         : $PARAVIEW_SRC_DIR"
+       echo "    Target         : $PARAVIEW_OBJ_DIR"
+
+       # make paraview
+       cmake \
+           -DCMAKE_INSTALL_PREFIX=$PARAVIEW_APP_DIR \
+           $CMAKE_VARIABLES \
+           $PARAVIEW_SRC_DIR
+    fi
 
     if [ -r /proc/cpuinfo ]; then
         WM_NCOMPPROCS=`egrep "^processor" /proc/cpuinfo | wc -l`
@@ -201,10 +246,10 @@ installParaView ()
             -print
 
         # create a softlink to the $PARAVIEW_OBJ_DIR/bin folder
-        # - work-around for chosen install location
+        # - workaround for chosen install location
         echo "    Creating paraview $PARAVIEW_MAJOR_VERSION soft link to /bin"
-        ( mkdir lib && cd lib && ln -s ../bin \
-            paraview-$PARAVIEW_MAJOR_VERSION )
+        (  mkdir lib && cd lib && ln -s ../bin \
+            paraview-$PARAVIEW_MAJOR_VERSION  )
 
         # info on symlinks to screen
         echo ""
@@ -215,7 +260,16 @@ installParaView ()
         echo "    - ParaView_DIR to $PARAVIEW_OBJ_DIR"
         echo "    - PV_PLUGIN_PATH to $FOAM_LIBBIN"
         echo "    Add $PARAVIEW_OBJ_DIR/bin to PATH"
-        #echo "   Add $ParaView_INST_DIR/lib to LD_LIBRARY_PATH"
+        # echo "   Add $ParaView_INST_DIR/lib to LD_LIBRARY_PATH"
         echo "    ---"
     fi
 }
+
+
+# for good measure - clear a few variables before using any of the functions
+
+unset VERBOSE INCLUDE_MPI INCLUDE_PYTHON INCLUDE_MESA PYTHON_LIBRARY
+unset CMAKE_VARIABLES OBJ_ADD
+unset CMAKE_SKIP
+
+#------------------------------------------------------------------------------
-- 
GitLab