#! /bin/bash #_____________________________________________________________________________ # usage # call if option -h, -help or --help, display usage and quit function usage () { echo "--------------------------------------------" echo "--- CLASS Installation options " echo "--------------------------------------------" echo "" echo "- ./install.sh [options]" echo "" echo "--- options = -h|-help|--help" echo "-> Print help! " echo "" echo "--- options = --build|-build|build" echo "-> Build following packages : CLASSpkg_root CLASSpkg CLASSGui " echo "" echo "--- options = --gtest|-gtest|gtest" echo "-> Run google tests" echo "" echo "--- options = --clean|-clean|clean )" echo "-> Clean the repo" echo "" echo "--- options = --clean-build" echo "-> Clean first and then build" echo "" echo "--- options = --build-gtest" echo "-> Build and run Google test" echo "" echo "--------------------------------------------" exit 418 } function build () { if [ ! -d "bld" ]; then mkdir bld fi cd bld if [ "$1" == "WithNoTest" ]; then cmake .. make -j ${J} CLASSpkg_root CLASSpkg CLASSGui fi if [ "$1" == "WithTest" ]; then cmake .. make -j ${J} ../bin/RunTest fi if [ "$1" == "TestOnly" ]; then cmake .. make -j ${J} RunTest ../bin/RunTest fi } function clean () { if [ -d "bld" ]; then cd bld make clean cd .. rm -rf bld fi rm -rf source/src/*Dict.cxx rm -rf lib rm -rf bin } ############################################################################## ### calls of all functions ############################################################################## J="1" BUILD=false CLEAN=false GTEST=false # Help if no argument if [ -z "$*" ]; then usage; fi # loop on all arguments for arg in "$@"; do case $arg in -h|-help|--help ) usage ;; --build|-build|build ) BUILD=true ;; --gtest|-gtest|gtest ) GTEST=true ;; --clean|-clean|clean ) CLEAN=true ;; --clean-build ) CLEAN=true;BUILD=true ;; --build-gtest ) BUILD=true;GTEST=true ;; -j* ) J="${arg//-j=/}" ;; esac done if [ "${CLEAN}" = true ]; then clean fi if [ "${BUILD}" = true ] && [ "${GTEST}" = false ]; then build "WithNoTest" fi if [ "${BUILD}" = true ] && [ "${GTEST}" = true ]; then build "WithTest" fi if [ "${BUILD}" = false ] && [ "${GTEST}" = true ]; then build "TestOnly" fi exit 0 EOF ############################################################################## %DOC # Exit status In `bash`, a correct exectution of a script return an exit status equals to `0` (that why a *C*/*C++* program end by `return 0;`). There is no standard for other exit status, so I (Josselin Massot) use the list of status code in HTTP for exit status. * `404` : *Not Found*, a test find a file which doesn't exist. * `418` : *I'm a teapot*, if only return help (I don't find a correct exit status for this). * `501` : *Not Implemented*, test a feature which doesn't implemented on OS. * `505` : *HTTP Version not supported*, the version of a library is not the one is expected. * `507` : *Insufficient storage*, an error on making a directory, maybe because of the insufficient storage.