|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +# Exemple d'utilisation : |
| 4 | +# |
| 5 | +# Installation dans /opt/install de la bibliothèque compilée en I4.R8 avec Xlmlima + tests : |
| 6 | +# |
| 7 | +# Lima/configurations/build.sh -installdir /tmp/install_lima -builddir /tmp/build_lima -toolchain ~/Lima/configurations/Ubuntu_GNU11.cmake -meshparameters ~/Lima/configurations/Ubuntu_GNU11_external_meshlibs.cmake -i8 OFF -r8 ON -python 3 |
| 8 | +# |
| 9 | +# ATTENTION : les chemins donnés doivent être en absolus |
| 10 | +# |
| 11 | + |
| 12 | +# ATTENTION : S'ASSURER QUE LA VERSION UTILISEE DE CMAKE EST >= 3.14 |
| 13 | + |
| 14 | +# # ============================================================================================================================================= |
| 15 | +# Pour une installation en production : -debug OFF -production ON |
| 16 | +# Pour une installation en mode développement/tests de non régression : -debug OFF -production OFF |
| 17 | +# Pour une installation en mode développement : -debug ON -production OFF |
| 18 | +# ============================================================================================================================================= |
| 19 | + |
| 20 | +# Rem : -v affiche les lignes au fur et à mesure qu'elles sont exécutées. |
| 21 | +#set -eo pipefail |
| 22 | + |
| 23 | +libs='Lima' |
| 24 | + |
| 25 | + |
| 26 | +# Paramètres par défaut : |
| 27 | +# ======================= |
| 28 | + |
| 29 | +if [ "$TMPDIR" = "" ]; then |
| 30 | + TMPDIR=/tmp/"$USER" |
| 31 | +fi |
| 32 | +INSTALLDIR="$TMPDIR" |
| 33 | +BUILDDIR="$TMPDIR" |
| 34 | +DEBUG=OFF |
| 35 | +PRODUCTION=ON |
| 36 | +NBPROCS=16 |
| 37 | +PYTHONVERSION=3 |
| 38 | + |
| 39 | +# Spécificités application : |
| 40 | +INT8=OFF |
| 41 | +REAL8=ON |
| 42 | + |
| 43 | +# Paramètres utilisés : |
| 44 | +# ===================== |
| 45 | + |
| 46 | +# On évite PWD qui peut varier selon la façon d'accéder au répertoire, surtout si il y a des liens ... |
| 47 | +SOURCES_DIR=`realpath .` |
| 48 | +INSTALL_DIR="$INSTALLDIR" |
| 49 | +BUILD_DIR="$BUILDDIR" |
| 50 | +TOOLCHAIN_FILE="" |
| 51 | +MESHPARAMETERS_FILE="" |
| 52 | +ENABLE_DEBUG="$DEBUG" |
| 53 | +ENABLE_PRODUCTION="$PRODUCTION" |
| 54 | +NB_PROCS="$NBPROCS" |
| 55 | +PYTHON_VERSION="$PYTHONVERSION" |
| 56 | +# Spécificités application : |
| 57 | +INT_8="$INT8" |
| 58 | +REAL_8="$REAL8" |
| 59 | + |
| 60 | + |
| 61 | +# Fonctions : |
| 62 | +# =========== |
| 63 | + |
| 64 | +usage ( ) |
| 65 | +{ |
| 66 | + echo ""$0" -tmpdir dir -destdir directory -toolchain toolchain.cmakefile -graphicparameters graphicparameters.cmakefile -meshparameters meshparameters.cmake [-procnum num]" |
| 67 | + echo "-installdir .................... : répertoire où seront installées toutes les dépendances de ce logiciel. Défaut : "$INSTALLDIR"" |
| 68 | + echo "-builddir ...................... : répertoire où sera installé le logiciel (sans ses dépendances => faire éventuellement -installdir et -builddir avec le même répertoire). Défaut : "$BUILDDIR"" |
| 69 | + echo "-production .................... : compilation pour déploiement en production (ON/OFF). Défaut : "$DEBUG" (influence les fichiers d'environnement - binding python utilisés)" |
| 70 | + echo "-debug ......................... : compilation en mode debug (ON/OFF). Défaut : "$DEBUG"" |
| 71 | + echo "-nbprocs ....................... : nombre de processeurs à utiliser. Défaut : "$NBPROCS"" |
| 72 | + echo "-toolchain ..................... : fichier cmake contenant la déclaration des compilateurs utilisés." |
| 73 | + echo "-meshparameters ................ : fichier cmake contenant la déclaration des variables cmake propres au maillage." |
| 74 | +# Spécificités applications : |
| 75 | + echo "-i8 ............................ : entiers sur 8 bits (ON/OFF). Défaut : "$INT8"" |
| 76 | + echo "-r8 ............................ : floats sur 8 bits (ON/OFF). Défaut : "$REAL8"" |
| 77 | + echo "-python ........................ : (2/3). Défaut : "$PYTHON_VERSION"" |
| 78 | +} # usage |
| 79 | + |
| 80 | + |
| 81 | +parse_args ( ) |
| 82 | +{ |
| 83 | + echo "=====================> EXECUTION DU SCRIPT "$0" TRAITEMENT DES PARAMETRES TRANSMIS A LA LIGNE DE COMMANDE :" |
| 84 | + while [ "$1" != "" ]; do |
| 85 | + case $1 in |
| 86 | + -h | -help | --help) usage |
| 87 | + exit |
| 88 | + ;; |
| 89 | + -installdir) shift |
| 90 | + INSTALL_DIR=$1 |
| 91 | + ;; |
| 92 | + -builddir) shift |
| 93 | + BUILD_DIR=$1 |
| 94 | + ;; |
| 95 | + -production) shift |
| 96 | + ENABLE_PRODUCTION=$1 |
| 97 | + ;; |
| 98 | + -debug) shift |
| 99 | + ENABLE_DEBUG=$1 |
| 100 | + ;; |
| 101 | + -nbprocs) shift |
| 102 | + NB_PROCS=$1 |
| 103 | + ;; |
| 104 | + -toolchain) shift |
| 105 | + TOOLCHAIN_FILE=$1 |
| 106 | + ;; |
| 107 | + -meshparameters) shift |
| 108 | + MESHPARAMETERS_FILE=$1 |
| 109 | + ;; |
| 110 | + -i8) shift |
| 111 | + INT_8=$1 |
| 112 | + ;; |
| 113 | + -r8) shift |
| 114 | + REAL_8=$1 |
| 115 | + ;; |
| 116 | + -python) shift |
| 117 | + PYTHON_VERSION=$1 |
| 118 | + ;; |
| 119 | + * ) echo "Erreur, argument inconnu : $1" |
| 120 | + usage |
| 121 | + exit 1 |
| 122 | + esac |
| 123 | + shift |
| 124 | + done |
| 125 | + |
| 126 | + echo "=====================> EXECUTION DU SCRIPT "$0" TRAITEMENT DES PARAMETRES TRANSMIS A LA LIGNE DE COMMANDE EFFECTUE" |
| 127 | +} # parse_args |
| 128 | + |
| 129 | + |
| 130 | +validate_files ( ) |
| 131 | +{ |
| 132 | + echo "=====================> VALIDATION DE L'EXISTENCE DES FICHIERS DE PARAMETRAGE ..." |
| 133 | + if [ ! -e $TOOLCHAIN_FILE ] |
| 134 | + then |
| 135 | + echo "Fichier de variables cmake contenant la déclaration des compilateurs utilisés invalide ($TOOLCHAIN_FILE)." |
| 136 | + exit -1 |
| 137 | + fi |
| 138 | + if [ ! -e $OSPARAMETERS_FILE ] |
| 139 | + then |
| 140 | + echo "Fichier de variables cmake contenant la déclaration déclaration des variables cmake propres à cet environnement invalide ($OSPARAMETERS_FILE)." |
| 141 | + exit -1 |
| 142 | + fi |
| 143 | + if [ ! -e $MESHPARAMETERS_FILE ] |
| 144 | + then |
| 145 | + echo "Fichier de variables cmake propres au maillage invalide ($MESHPARAMETERS_FILE)." |
| 146 | + exit -1 |
| 147 | + fi |
| 148 | + echo "=====================> EXISTENCE DES FICHIERS DE PARAMETRAGE VALIDEE" |
| 149 | +} # validate_files |
| 150 | + |
| 151 | + |
| 152 | +# Paramètres composés utilisés : |
| 153 | +# ============================== |
| 154 | + |
| 155 | +parse_args $* |
| 156 | +validate_files |
| 157 | + |
| 158 | +INT_4=ON |
| 159 | +if [ $INT_8 = ON ] |
| 160 | +then |
| 161 | + INT_4=OFF |
| 162 | +fi |
| 163 | +REAL_4=ON |
| 164 | +if [ $REAL_8 = ON ] |
| 165 | +then |
| 166 | + REAL_4=OFF |
| 167 | +fi |
| 168 | +if [ $PYTHON_VERSION != "2" ] && [ $PYTHON_VERSION != "3" ] |
| 169 | +then |
| 170 | + echo "Version de python invalide : $PYTHON_VERSION. Version attendue : 2 ou 3." |
| 171 | + exit -1 |
| 172 | +fi |
| 173 | + |
| 174 | +COMMON_ARGS="-DBUILD_SHARED_LIBS:BOOL=ON -DINT_8:BOOL=$INT_8 -DREAL_8:BOOL=$REAL_8" # Toujours en mode shared, pour le scripting |
| 175 | +if [ $PYTHON_VERSION = 3 ] |
| 176 | +then |
| 177 | + COMMON_ARGS="$COMMON_ARGS -DUSE_PYTHON_3:BOOL=ON" |
| 178 | +fi |
| 179 | +LIMA_ARGS="-DBUILD_XLMLIMA:BOOL=ON -DBUILD_TESTS:BOOL=ON -DBUILD_SCRIPTING:BOOL=ON -DMACHINE_TYPES:BOOL=OFF -DSUMESH:BOOL=OFF" |
| 180 | +CMAKE_CFLAGS_ARGS='-DUSING_NAMESPACES' |
| 181 | +if [ $ENABLE_DEBUG = ON ] |
| 182 | +then |
| 183 | + PRODUCTION_MODE="Debug" |
| 184 | +else |
| 185 | + PRODUCTION_MODE="Release" |
| 186 | +fi |
| 187 | + |
| 188 | +# Spécifier le nombre de processeurs au build : |
| 189 | +export CMAKE_BUILD_PARALLEL_LEVEL="$NB_PROCS" |
| 190 | + |
| 191 | +# Les bibliothèques et produits maison sous cmake : |
| 192 | +for lib in $libs |
| 193 | +do |
| 194 | + echo "==> PREPARING " $lib " ..." |
| 195 | + echo "COMMON ARGS="$COMMON_ARGS |
| 196 | + echo "ADDITIONNAL_LIBS_ARGS="$SABRE_COMMON_ARGS |
| 197 | + LIB_BUILD_DIR=$BUILD_DIR/$lib |
| 198 | + umask u=rwx,g=rwx,o=rx; mkdir -p $LIB_BUILD_DIR |
| 199 | + umask u=rwx,g=rwx,o=rx; cd $LIB_BUILD_DIR; cmake -DCMAKE_BUILD_TYPE:STRING="$PRODUCTION_MODE" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \ |
| 200 | + -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE" \ |
| 201 | + -C"$MESHPARAMETERS_FILE" \ |
| 202 | + -DPRODUCTION="$ENABLE_PRODUCTION" \ |
| 203 | + $COMMON_ARGS $LIMA_ARGS $ADDITIONNAL_LIBS_ARGS -DEXTRA_CXX_FLAGS="$CMAKE_CFLAGS_ARGS" \ |
| 204 | + -S $SOURCES_DIR/$lib -B . ; cmake --build $LIB_BUILD_DIR; make install |
| 205 | + echo "==> " $lib " PREPARED." |
| 206 | +done # for lib in $libs |
| 207 | + |
0 commit comments