]> Creatis software - cpPlugins.git/blobdiff - dependencies/cpPlugins_ThirdParty_Install_linux.sh
...
[cpPlugins.git] / dependencies / cpPlugins_ThirdParty_Install_linux.sh
diff --git a/dependencies/cpPlugins_ThirdParty_Install_linux.sh b/dependencies/cpPlugins_ThirdParty_Install_linux.sh
new file mode 100755 (executable)
index 0000000..0077ac7
--- /dev/null
@@ -0,0 +1,333 @@
+#!/bin/bash
+
+## ====================================
+## == Some base configuration values ==
+## ====================================
+
+cmake_min_version="3.0"
+qt_min_version="4.8"
+number_of_cores=`grep -c ^processor /proc/cpuinfo`
+number_of_threads=`expr $number_of_cores / 2`
+
+## =================================
+## == Compare two version strings ==
+## =================================
+
+function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
+
+## ==============================
+## == Try to locate base tools ==
+## ==============================
+
+gpp_exe=`which g++`
+if [ -z "gpp_exe" ]; then
+    echo "ERROR: \"g++\" program was not found."
+    echo "ERROR: Please install \"g++\""
+fi
+
+make_exe=`which make`
+if [ -z "$make_exe" ]; then
+    echo "ERROR: \"make\" program was not found."
+    echo "ERROR: Please install \"make\""
+fi
+
+## ===============
+## == Verify Qt ==
+## ===============
+
+read -p "Do you want to use Qt4.8? [y/N] " -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]; then
+    cont=true
+    qmake_exe=`which qmake`
+    while [ $cont == true ]; do
+        if [ -z "$qmake_exe" ]; then
+            read -e -p "Please provide a valid location for qmake: " tmp
+            eval tmp=$tmp
+            qmake_exe=`readlink -f $tmp`
+        fi
+        read -p "I am going to use \"$qmake_exe\" as the entry tool for Qt. Is this ok? [y/N] " -n 1 -r
+        echo
+        if [[ $REPLY =~ ^[Nn]$ ]]; then
+            qmake_exe=""
+        else
+            cont=false
+        fi
+    done
+    qt_version=`$qmake_exe -v | grep Using\ Qt\ version | sed 's/Using\ Qt\ version\ //g'`
+    if version_gt $qt_min_version $qt_version; then
+        echo "FATAL ERROR: your Qt version is $qt_version, but needed version should be at least $qt_min_version"
+    fi
+fi
+
+## ==================
+## == Verify cmake ==
+## ==================
+
+cmake_qt_options="--no-qt-gui"
+if [ -x "$qmake_exe" ]; then
+    cmake_qt_options="--qt-gui --qt-qmake=$qmake_exe"
+fi
+
+cont=true
+cmake_exe=`which cmake`
+while [ $cont == true ]; do
+    if [ -z "$cmake_exe" ]; then
+        read -e -p "Please provide a valid location for cmake: " tmp
+        eval tmp=$tmp
+        cmake_exe=`readlink -f $tmp`
+    fi
+    read -p "I am going to use \"$cmake_exe\". Is this ok? [y/N] " -n 1 -r
+    echo
+    if [[ $REPLY =~ ^[Nn]$ ]]; then
+        cmake_exe=""
+    else
+        cont=false
+    fi
+done
+if [ -z $cmake_exe ]; then
+    echo "FATAL ERROR: cmake is really needed to build cpPlugins."
+    exit 1
+fi
+
+cmake_mime=`file -bzk --mime-type $cmake_exe`
+if [ "$cmake_mime" != "application/x-executable" ]; then
+    echo "WARNING: I will try to compile cmake..."
+    if [[ -f $cmake_exe ]]; then
+        if [ "$cmake_mime" == "application/x-tar" ]; then
+            sub_mime=`file -b --mime-type $cmake_exe`
+            if [ $sub_mime == "application/gzip" ]; then
+                cmake_source_dir=`dirname $cmake_exe`/`basename $cmake_exe .tar.gz`
+                cmake_binary_dir=`dirname $cmake_exe`/`basename $cmake_exe .tar.gz`-build
+                echo -n "==> Extracting cmake sources... "
+                rm -rf $cmake_source_dir $cmake_binary_dir
+                mkdir -p $cmake_source_dir $cmake_binary_dir
+                tar xzf $cmake_exe -C $cmake_source_dir --strip-components=1
+                echo "done."
+            fi
+        fi
+    elif [[ -d $cmake_exe ]]; then
+        cmake_source_dir="$cmake_exe"
+        cmake_binary_dir="$cmake_exe"-build
+    else
+        echo "FATAL ERROR: $cmake_exe is not a valid file/directory"
+        exit 1
+    fi
+
+    read -e -p "==> Please provide instalation location for \"cmake\": " tmp
+    eval tmp=$tmp
+    cmake_prefix=`readlink -f $tmp`
+
+    echo "==> Configuring sources... "
+    cd $cmake_binary_dir
+    $cmake_source_dir/bootstrap --prefix=$cmake_prefix $cmake_qt_options
+    echo "==> Configuring sources... done."
+
+    echo "==> Compiling sources..."
+    cd $cmake_binary_dir
+    make -j$number_of_threads
+    echo "==> Compiling sources... done."
+
+    echo "==> Installing package..."
+    cd $cmake_binary_dir
+    make -j install
+    echo "==> Installing package... done."
+    cmake_exe=$cmake_binary_dir/bin/cmake
+fi
+cmake_version=`$cmake_exe --version | grep version | sed 's/cmake\ version\ //g'`
+
+if version_gt $cmake_min_version $cmake_version; then
+    echo "FATAL ERROR: your cmake version is $cmake_version, but needed version should be at least $cmake_min_version"
+fi
+
+## ===============
+## == Build VTK ==
+## ===============
+
+cont=true
+vtk_sources=`which cmake`
+while [ $cont == true ]; do
+    if [ -z "$vtk_sources" ]; then
+        read -e -p "Please provide a valid location for VTK: " tmp
+        eval tmp=$tmp
+        vtk_sources=`readlink -f $tmp`
+    fi
+    read -p "I am going to use \"$vtk_sources\". Is this ok? [y/N] " -n 1 -r
+    echo
+    if [[ $REPLY =~ ^[Nn]$ ]]; then
+        vtk_sources=""
+    else
+        cont=false
+    fi
+done
+if [ -z $vtk_sources ]; then
+    echo "FATAL ERROR: VTK is really needed to build cpPlugins."
+    exit 1
+fi
+
+echo "Now, I will try to compile VTK..."
+vtk_mime=`file -bzk --mime-type $vtk_sources`
+if [[ -f $vtk_sources ]]; then
+    if [ "$vtk_mime" == "application/x-tar" ]; then
+        sub_mime=`file -b --mime-type $vtk_sources`
+        if [ $sub_mime == "application/gzip" ]; then
+            vtk_source_dir=`dirname $vtk_sources`/`basename $vtk_sources .tar.gz`
+            vtk_binary_dir=`dirname $vtk_sources`/`basename $vtk_sources .tar.gz`-build
+            echo -n "==> Extracting VTK sources... "
+            rm -rf $vtk_source_dir $vtk_binary_dir
+            mkdir -p $vtk_source_dir $vtk_binary_dir
+            tar xzf $vtk_sources -C $vtk_source_dir --strip-components=1
+            echo "done."
+        fi
+    fi
+elif [[ -d $vtk_sources ]]; then
+    vtk_source_dir="$vtk_sources"
+    vtk_binary_dir="$vtk_sources"-build
+else
+    echo "FATAL ERROR: $vtk_sources is not a valid file/directory"
+    exit 1
+fi
+
+read -e -p "==> Please provide instalation location for \"VTK\": " tmp
+eval tmp=$tmp
+vtk_prefix=`readlink -f $tmp`
+
+vtk_build_type=MinSizeRel
+
+echo "==> Configuring sources... "
+cd $vtk_binary_dir
+if [ -x "$qmake_exe" ]; then
+    $cmake_exe \
+        -DCMAKE_CXX_FLAGS:STRING=-std=c++11 \
+        -DBUILD_DOCUMENTATION:BOOL=OFF \
+        -DBUILD_EXAMPLES:BOOL=OFF \
+        -DBUILD_SHARED_LIBS:BOOL=ON \
+        -DBUILD_TESTING:BOOL=OFF \
+        -DQT_QMAKE_EXECUTABLE:PATH=$qmake_exe \
+        -DCMAKE_BUILD_TYPE:STRING=$vtk_build_type \
+        -DModule_vtkGUISupportQt:BOOL=ON \
+        -DModule_vtkGUISupportQtOpenGL:BOOL=ON \
+        -DModule_vtkGUISupportQtSQL:BOOL=OFF \
+        -DModule_vtkGUISupportQtWebkit:BOOL=OFF \
+        -DCMAKE_INSTALL_PREFIX:PATH=$vtk_prefix \
+        $vtk_source_dir
+else
+    $cmake_exe \
+        -DCMAKE_CXX_FLAGS:STRING=-std=c++11 \
+        -DBUILD_DOCUMENTATION:BOOL=OFF \
+        -DBUILD_EXAMPLES:BOOL=OFF \
+        -DBUILD_SHARED_LIBS:BOOL=ON \
+        -DBUILD_TESTING:BOOL=OFF \
+        -DCMAKE_BUILD_TYPE:STRING=$build_type \
+        -DCMAKE_INSTALL_PREFIX:PATH=$vtk_prefix \
+        $vtk_source_dir
+fi
+echo "==> Configuring sources... done."
+
+echo "==> Compiling sources..."
+cd $vtk_binary_dir
+make -j$number_of_threads
+echo "==> Compiling sources... done."
+
+echo "==> Installing package..."
+cd $vtk_binary_dir
+make -j install
+echo "==> Installing package... done."
+
+## ===============
+## == Build ITK ==
+## ===============
+
+cont=true
+itk_sources=`which cmake`
+while [ $cont == true ]; do
+    if [ -z "$itk_sources" ]; then
+        read -e -p "Please provide a valid location for ITK: " tmp
+        eval tmp=$tmp
+        itk_sources=`readlink -f $tmp`
+    fi
+    read -p "I am going to use \"$itk_sources\". Is this ok? [y/N] " -n 1 -r
+    echo
+    if [[ $REPLY =~ ^[Nn]$ ]]; then
+        itk_sources=""
+    else
+        cont=false
+    fi
+done
+if [ -z $itk_sources ]; then
+    echo "FATAL ERROR: ITK is really needed to build cpPlugins."
+    exit 1
+fi
+
+echo "Now, I will try to compile ITK..."
+itk_mime=`file -bzk --mime-type $itk_sources`
+if [[ -f $itk_sources ]]; then
+    if [ "$itk_mime" == "application/x-tar" ]; then
+        sub_mime=`file -b --mime-type $itk_sources`
+        if [ $sub_mime == "application/gzip" ]; then
+            itk_source_dir=`dirname $itk_sources`/`basename $itk_sources .tar.gz`
+            itk_binary_dir=`dirname $itk_sources`/`basename $itk_sources .tar.gz`-build
+            echo -n "==> Extracting ITK sources... "
+            rm -rf $itk_source_dir $itk_binary_dir
+            mkdir -p $itk_source_dir $itk_binary_dir
+            tar xzf $itk_sources -C $itk_source_dir --strip-components=1
+            echo "done."
+        fi
+    fi
+elif [[ -d $itk_sources ]]; then
+    itk_source_dir="$itk_sources"
+    itk_binary_dir="$itk_sources"-build
+else
+    echo "FATAL ERROR: $itk_sources is not a valid file/directory"
+    exit 1
+fi
+
+read -e -p "==> Please provide instalation location for \"ITK\": " tmp
+eval tmp=$tmp
+itk_prefix=`readlink -f $tmp`
+
+itk_build_type=MinSizeRel
+
+echo "==> Configuring sources... "
+cd $itk_binary_dir
+if [ -x "$qmake_exe" ]; then
+    $cmake_exe \
+        -DCMAKE_CXX_FLAGS:STRING=-std=c++11 \
+        -DBUILD_DOCUMENTATION:BOOL=OFF \
+        -DBUILD_EXAMPLES:BOOL=OFF \
+        -DBUILD_SHARED_LIBS:BOOL=ON \
+        -DBUILD_TESTING:BOOL=OFF \
+        -DQT_QMAKE_EXECUTABLE:PATH=$qmake_exe \
+        -DCMAKE_BUILD_TYPE:STRING=$itk_build_type \
+        -DModule_itkGUISupportQt:BOOL=ON \
+        -DModule_itkGUISupportQtOpenGL:BOOL=ON \
+        -DModule_itkGUISupportQtSQL:BOOL=OFF \
+        -DModule_itkGUISupportQtWebkit:BOOL=OFF \
+        -DCMAKE_INSTALL_PREFIX:PATH=$itk_prefix \
+        $itk_source_dir
+else
+    $cmake_exe \
+        -DCMAKE_CXX_FLAGS:STRING=-std=c++11 \
+        -DBUILD_DOCUMENTATION:BOOL=OFF \
+        -DBUILD_EXAMPLES:BOOL=OFF \
+        -DBUILD_SHARED_LIBS:BOOL=ON \
+        -DBUILD_TESTING:BOOL=OFF \
+        -DCMAKE_BUILD_TYPE:STRING=$build_type \
+        -DCMAKE_INSTALL_PREFIX:PATH=$itk_prefix \
+        $itk_source_dir
+fi
+echo "==> Configuring sources... done."
+
+echo "==> Compiling sources..."
+cd $itk_binary_dir
+make -j$number_of_threads
+echo "==> Compiling sources... done."
+
+echo "==> Installing package..."
+cd $itk_binary_dir
+make -j install
+echo "==> Installing package... done."
+
+
+
+## eof - $RCSfile$