#!/bin/bash - # libvespo auto installer # Copyright(c) 2023 Jean-Guillaume Dumas <Jean-Guillaume.Dumas@imag.fr> ### By default compile relic with 4 threads MAKETHREADS=4 if [ ! -z "$1" ] then MAKETHREADS=$1 fi ### VESPO git sources and commit ### VESPO_GITDIR=https://github.com/jgdumas/vespo.git VESPO_COMMIT=98a4b4d ### RELIC git sources and commit ### RELIC_GITDIR=https://github.com/relic-toolkit/relic.git RELIC_COMMIT=f05130cd ### ### LOGFILE=libvespo-auto-install.log ### die/cool ### DONE="\033[0;36m done !\033[0m" BEG="\033[1;32m * \033[0m" die() { echo -ne "\n\033[1;31m * \033[0mfailed" ; if [[ -n $1 ]] ; then echo " ($1)" else echo "." fi exit -1 ; } cool() { echo -e $DONE } ### Create local directory ### echo "mkdir libvespo && cd libvespo" mkdir libvespo && cd libvespo ### Extract RELIC sources ### echo -en "${BEG}fetching RELIC..."| tee -a ${LOGFILE} OK=0; git clone ${RELIC_GITDIR} 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool | tee -a ${LOGFILE} || die cd relic OK=0; git reset --hard ${RELIC_COMMIT} 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool | tee -a ../${LOGFILE} || die cd .. ### Extract VESPO sources ### echo -en "${BEG}fetching VESPO..."| tee -a ${LOGFILE} OK=0; git clone ${VESPO_GITDIR} 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool | tee -a ${LOGFILE} || die cd vespo OK=0; git reset --hard ${VESPO_COMMIT} 2>&1 >/dev/null && OK=1 [ "$OK" = "1" ] && cool | tee -a ../${LOGFILE} || die cd .. ### Build RELIC ### echo -e "${BEG}building RELIC ..."| tee -a ${LOGFILE} cd relic mkdir relic-target | tee -a ../${LOGFILE} cd relic-target cmake -DWITH=ALL -DALLOC=AUTO -DWSIZE=64 -DRAND=UDEV -DSHLIB=OFF -DSTBIN=ON -DTIMER=CYCLE -DCHECK=off -DVERBS=off -DARITH=x64-asm-4l -DFP_PRIME=254 -DFP_METHD="INTEG;INTEG;INTEG;MONTY;LOWER;LOWER;SLIDE" -DCFLAGS="-Ofast -funroll-loops -fomit-frame-pointer -finline-small-functions -march=native -mtune=native" -DFP_PMERS=off -DFP_QNRES=on -DFPX_METHD="INTEG;INTEG;LAZYR" -DPP_METHD="LAZYR;OATEP" -DBN_PRECI=4096 -DCMAKE_BUILD_TYPE=Release -DBENCH=10 -DTESTS=10 -DCMAKE_INSTALL_PREFIX="../" .. | tee -a ../../${LOGFILE} make -j ${MAKETHREADS} | tee -a ../../${LOGFILE} OK=0; make install | tee -a ../../${LOGFILE} || die && OK=1 [ "$OK" = "1" ] && cool | tee -a ../../${LOGFILE} || die cd ../.. ### Build VESPO ### echo -e "${BEG}building VESPO ..."| tee -a ${LOGFILE} cd vespo OK=0; make LIBS_DIR=../relic | tee -a ../${LOGFILE} || die && OK=1 [ "$OK" = "1" ] && cool | tee -a ../${LOGFILE} || die cd .. ### Done. ### cd ..