#----------------------------------*-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-2022 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 # -build-root=... # Exports FOAM_BUILDROOT value. # -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 ;; -module-prefix=* | -prefix=* | --prefix=*) # As per setModulePrefix (wmakeFunctions) export FOAM_MODULE_PREFIX="${arg#*=}" case "$FOAM_MODULE_PREFIX" in # Prefix: user (u | user) FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}" ;; # Prefix: group (g | group) FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}" ;; # Prefix: openfoam (other) (o | openfoam) FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}" ;; # Prefix: false | none (ie, 'disabled') (false | none) FOAM_MODULE_PREFIX=false ;; # Prefix: directory (absolute or relative) (*) : "${FOAM_MODULE_PREFIX:=/usr/local}" # Fallback (autoconf-like) # Require absolute path [ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \ FOAM_MODULE_PREFIX="${PWD}/${FOAM_MODULE_PREFIX}" ;; esac # Avoid potential conflicts unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN echo "Module prefix = ${FOAM_MODULE_PREFIX:-[]}" 1>&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) wmakeOpt_log="log.${WM_OPTIONS:-build}" continue # Argument handled, remove it ;; -log=*) wmakeOpt_log="${arg##*=}" if [ -d "$wmakeOpt_log" ] then wmakeOpt_log="${wmakeOpt_log%/}/log.${WM_OPTIONS:-build}" elif [ -z "$wmakeOpt_log" ] then wmakeOpt_log="log.${WM_OPTIONS:-build}" fi continue # Argument handled, remove it ;; -debug | -debug-O[g0123]) wmakeOpt_debug="$arg" continue # Argument handled, remove it ;; -q | -queue) wmakeOpt_queue="-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 "$wmakeOpt_nonRecursive" ] then if [ -z "$wmakeOpt_log" ] then exec wmake $wmakeOpt_frontend -all \ $wmakeOpt_debug $wmakeOpt_queue $wmakeOpt_openmp $* exit $? # Unneeded, but just in case something went wrong else echo "Logging wmake -all output to '$wmakeOpt_log'" 1>&2 echo 1>&2 exec wmake $wmakeOpt_frontend -all \ $wmakeOpt_debug $wmakeOpt_queue $wmakeOpt_openmp $* 2>&1 | \ /usr/bin/tee $wmakeOpt_log # Need to cleanup after the tee rc=$? # Error code from tee (not wmake), but not entirely important echo "Done logging to '$wmakeOpt_log'" 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 wmakeOpt_frontend wmakeOpt_nonRecursive unset wmakeOpt_debug wmakeOpt_log wmakeOpt_queue unset -f usage #------------------------------------------------------------------------------