#----------------------------------*-sh-*-------------------------------------- # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2014-2017 OpenFOAM Foundation # Copyright (C) 2019-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # wmake/scripts/AllwmakeParseArguments # # Description # Allwmake argument parser # # Usage # # Parse the arguments by sourcing this script # . ${WM_PROJECT_DIR:?}/wmake/scripts/AllwmakeParseArguments # # Parsed options (make) # -k | -keep-going | -non-stop # -j | -jN | -j N # # Parsed options (wmake) # -debug # -q | -queue # -module-prefix=... # Exports FOAM_MODULE_PREFIX value. # Unsets FOAM_MODULE_APPBIN, FOAM_MODULE_LIBBIN. # Handles (user|group|openfoam) or (u|g|o) as per foamEtcFile, # or absolute/relative paths # # Parsed options (special) # -l | -log | -log=FILE # -prefix=... same as -module-prefix=... # # Trapped options # -with-bear # #------------------------------------------------------------------------------ # Check environment [ -d "$WM_PROJECT_DIR" ] || { exec 1>&2 echo "$0" echo "Error encountered:" echo " The OpenFOAM environment not set or incorrect." echo " Check your setup." echo exit 1 } usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done # Print normal usage options cat<&2 continue # Argument handled, remove it ;; -k | -keep-going | -non-stop) # Keep going, ignoring errors export WM_CONTINUE_ON_ERROR=true continue # Argument handled, remove it ;; -l | -log) optLog="log.${WM_OPTIONS:-build}" continue # Argument handled, remove it ;; -log=*) optLog="${arg##*=}" if [ -d "$optLog" ] then optLog="${optLog%/}/log.${WM_OPTIONS:-build}" elif [ -z "$optLog" ] then optLog="log.${WM_OPTIONS:-build}" fi continue # Argument handled, remove it ;; -debug) optDebug="-debug" continue # Argument handled, remove it ;; -q | -queue) optQueue="-queue" continue # Argument handled, remove it ;; lib | libo | libso | dep | objects) # Target type targetType="$arg" ;; esac # Re-insert arg set -- "$@" "$arg" done #------------------------------------------------------------------------------ # Execute wmake -all if not called from wmake #------------------------------------------------------------------------------ if [ -z "$optNonRecursive" ] then if [ -z "$optLog" ] then exec wmake $optWmakeFrontend -all \ $optDebug $optQueue $* exit $? # Unneeded, but just in case something went wrong else echo "Logging wmake -all output to '$optLog'" 1>&2 echo 1>&2 exec wmake $optWmakeFrontend -all \ $optDebug $optQueue $* 2>&1 | /usr/bin/tee $optLog # Need to cleanup after the tee rc=$? # Error code from tee (not wmake), but not entirely important echo "Done logging to '$optLog'" 1>&2 exit "$rc" fi fi #------------------------------------------------------------------------------ # Activate the shell option "stop on error" unless WM_CONTINUE_ON_ERROR is set #------------------------------------------------------------------------------ if [ -z "${WM_CONTINUE_ON_ERROR}" ] then set -e fi #------------------------------------------------------------------------------ # Cleanup local variables and functions #------------------------------------------------------------------------------ unset optWmakeFrontend unset optNonRecursive optDebug optLog optQueue unset -f usage #------------------------------------------------------------------------------