X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=dependencies%2FcpPlugins_ThirdParty_Install_linux.sh;fp=dependencies%2FcpPlugins_ThirdParty_Install_linux.sh;h=a2c92dc06a461874c0346766e61cef940567b3b4;hb=42de9bd72fb773eb94d03b36a08c404cd82769a1;hp=0000000000000000000000000000000000000000;hpb=1e17bee074cb6a3f17fa60c5d9b67f9f58723d4a;p=cpPlugins.git diff --git a/dependencies/cpPlugins_ThirdParty_Install_linux.sh b/dependencies/cpPlugins_ThirdParty_Install_linux.sh new file mode 100755 index 0000000..a2c92dc --- /dev/null +++ b/dependencies/cpPlugins_ThirdParty_Install_linux.sh @@ -0,0 +1,317 @@ +#!/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="" +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="" +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 +$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=$itk_build_type \ + -DModule_ITKReview:BOOL=ON \ + -DModule_ITKVtkGlue:BOOL=OFF \ + -DModule_ParabolicMorphology:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX:PATH=$itk_prefix \ + $itk_source_dir +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$