install.sh 3.59 KB
Newer Older
Arnaud Blanchard's avatar
Arnaud Blanchard committed
1
#!/bin/bash
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Basic Libraries And Applications (blaa)
# Copyright  ETIS — ENSEA, Université de Cergy-Pontoise, CNRS (2011 - 2015)
# Author: Arnaud Blanchard
#
# This software is governed by the CeCILL v2.1 license under French law and abiding by the rules of distribution of free software.
# You can use, modify and/ or redistribute the software under the terms of the CeCILL v2.1 license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".
# As a counterpart to the access to the source code and  rights to copy, modify and redistribute granted by the license,
# users are provided only with a limited warranty and the software's author, the holder of the economic rights,  and the successive licensors have only limited liability.
# In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software,
# that may mean  that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge.
# Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured  and, more generally, to use and operate it in the same conditions as regards security.
# The fact that you are presently reading this means that you have had knowledge of the CeCILL v2.1 license and that you accept its terms. 

usage()
{
17
    echo "Usage: install [-b directory] [-h] [-i diectory] <all>|<project_directory> [Release|Debug|RelWithDebugInfo|MinSizeRel]"
18 19
    echo "    -b directory            :Directory to create the build. (default: $build_dir)"
    echo "    -h                      :Display this help."
Arnaud Blanchard's avatar
Arnaud Blanchard committed
20
    echo "    -q                      :Quiet mode"
21
#   echo "    -i directory            :Directory to install the binaries. Default: $install_prefix"
22 23 24
    echo
}

25
install_dir="/usr/local"
26

Arnaud Blanchard's avatar
Arnaud Blanchard committed
27
set -- $(getopt b:hi:q "$@")
28 29 30 31
while [ $# -gt 0 ]
do
    case "$1" in
    (-b) build_dir="$2"; shift;;
32
    (-h) usage; exit 0;;
33
#    (-i) install_dir=$PWD/$2; install_prefix="-DCMAKE_INSTALL_PREFIX=$install_dir"; shift;;
Arnaud Blanchard's avatar
Arnaud Blanchard committed
34
    (-q) QUIET=-q;;
35
    (--) shift; break;;
36
(-*) echo "$0: error - unrecognized option $1" 1>&2; exit 1;;
37 38 39 40 41
    (*)  break;;
    esac
    shift
done

42
[ $1 ] || { echo "You need at least an argument"; usage; exit 1; }
43

44 45 46 47 48 49 50 51
if [ "$2" ]; then
case "$2" in
Release|Debug|RelWithDebugInfo|MinSizeRel) build_type="$2";;
*)echo "Unknown build type '$2'">&2; usage;;
esac
else build_type="Release"
fi

52 53 54 55
cd `dirname $0`
blaar_dir="$PWD"
blaar_build_dir="${blaar_dir}_build"

56 57 58 59 60 61 62 63 64 65 66
[ "$1" = "all" ] &&
{
#We make sure we respect the order of compilation in .gitmodules
cat .gitmodules | sed -n 's/.*path = //p' | { while read project; do ./install.sh $project $build_type || { echo;echo "Fail compiling $project";echo; exit 1; } done }
exit 0
}

cd $1
project_dir="$PWD";
project_name=`basename $project_dir`;
cd - > /dev/null;
67

68
project=`basename $project_dir`
69
build_dir="${blaar_build_dir}/${build_type}/${project}"
70 71


72
echo
73
echo " Install $project"
74 75
echo "=========================="

Arnaud Blanchard's avatar
Arnaud Blanchard committed
76
./compile.sh $QUIET $project_dir $build_type && echo "Success compiling $project"
77

78 79 80 81
cd $build_dir

if ninja -t targets all | grep --quiet "install: phony";
then
82
if [ -w $install_dir ]; then
Arnaud Blanchard's avatar
Arnaud Blanchard committed
83
ninja install;
84
else
Arnaud Blanchard's avatar
Arnaud Blanchard committed
85
sudo ninja install
86
fi
87

88 89

if [ $? -ne 0 ]
90 91 92 93 94 95 96 97 98
then
echo
echo  "\nFail installing $project\n"
echo
exit 1;
else
echo
echo  "\nSuccess installing $project"
echo
99
fi
100 101
else echo "Skipped install $project. It is not needed" ;
fi
102