From 7124f736cda3a7df6427981b97e86d77e9175fe4 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Tue, 25 Jun 2013 18:37:59 +0100 Subject: [PATCH] wmake: "dwim" option behaviour is now the default if no argument is supplied i.e. wmake searches up the directory tree to find the Make directory if it is not in the current directory. --- wmake/wmake | 83 ++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/wmake/wmake b/wmake/wmake index e5d93965656..0f8e2cc41f0 100755 --- a/wmake/wmake +++ b/wmake/wmake @@ -50,7 +50,6 @@ The 'target' is a Makefile target: e.g., Make/linux64GccDPOpt/fvMesh.o or a special target: - dwim search up directories tree for Make sub-directory and build all all subdirectories, uses any Allwmake files if they exist exe build statically linked executable lib build statically linked archive lib (.a) @@ -86,9 +85,11 @@ do esac done -# -# check environment variables -# + +#------------------------------------------------------------------------------ +# Check environment variables +#------------------------------------------------------------------------------ + for check in WM_OPTIONS WM_LINK_LANGUAGE WM_DIR do eval test "\$$check" || { @@ -103,13 +104,13 @@ done [ "$1" = exe -o \( "$WM_PROJECT" -a "$WM_PROJECT_DIR" \) ] || { echo "$Script error:" 1>&2 echo " environment variable \$WM_PROJECT or \$WM_PROJECT_DIR not set" 1>&2 - echo " while building project library" 1>&2 + echo " while building project library" 1>&2 exit 1 } #------------------------------------------------------------------------------ -# Select the version of make to be used +# Select the version of make use #------------------------------------------------------------------------------ # set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set @@ -169,8 +170,30 @@ then fi +#------------------------------------------------------------------------------ +# Recurse the application directories tree +#------------------------------------------------------------------------------ + +if [ "$makeType" = all ] +then + if [ -e Allwmake ] + then + ./Allwmake + exit $? + elif [ ! -d $MakeDir ] + then + # FOAM_APPS=$(find . -maxdepth 1 \( -type d -a ! -name "." -a ! -name Optional -a ! -name Make \) -printf "%f ") + # avoid 'find' with '-printf' ... not entirely portable + FOAM_APPS=$(for d in *; do [ -d "$d" -a "$d" != Optional -a "$d" != Make ] && echo "$d"; done | xargs) + $make -k -f $WM_DIR/MakefileApps FOAM_APPS="$FOAM_APPS" + exit $? + fi +fi + + #------------------------------------------------------------------------------ # Search up directories tree for the Make sub-directory and build there +# Also check the existance of the 'files' file #------------------------------------------------------------------------------ unset dir @@ -189,18 +212,22 @@ find_target() { expandpath $1 - if [ "$exPath" = "$WM_PROJECT_DIR" -o "$exPath" = "$HOME" -o "$exPath" = "/" ]; then + if [ "$exPath" = "$WM_PROJECT_DIR" -o "$exPath" = "$HOME" -o "$exPath" = "/" ] + then echo "$Script error: could not find Make directory" elif [ -d "$1/Make" ]; then - echo Target $1 + echo " Found target directory " $1 dir=$1 else find_target "$1/.." fi } -if [ "$makeType" = dwim ] +if [ ! -d $MakeDir ] then + echo "$Script: '$MakeDir' directory does not exist in $PWD" 1>&2 + echo " Searching up directories tree for Make directory" + find_target . makeType= @@ -214,41 +241,16 @@ then fi -#------------------------------------------------------------------------------ -# Recurse the application directories tree -#------------------------------------------------------------------------------ - -if [ "$makeType" = all ] -then - if [ -e Allwmake ] - then - ./Allwmake - exit $? - elif [ ! -d $MakeDir ] - then - # FOAM_APPS=$(find . -maxdepth 1 \( -type d -a ! -name "." -a ! -name Optional -a ! -name Make \) -printf "%f ") - # avoid 'find' with '-printf' ... not entirely portable - FOAM_APPS=$(for d in *; do [ -d "$d" -a "$d" != Optional -a "$d" != Make ] && echo "$d"; done | xargs) - $make -k -f $WM_DIR/MakefileApps FOAM_APPS="$FOAM_APPS" - exit $? - fi -fi - - -#------------------------------------------------------------------------------ -# Require the existence of the 'Make' directory and 'files' file -#------------------------------------------------------------------------------ - -[ -d $MakeDir ] || { - echo "$Script error: '$MakeDir' directory does not exist in $PWD" 1>&2 - exit 1 -} - [ -r $MakeDir/files ] || { echo "$Script error: file '$MakeDir/files' does not exist in $PWD" 1>&2 exit 1 } + +#------------------------------------------------------------------------------ +# Transform options +#------------------------------------------------------------------------------ + # transform "all" or no option to "libso" if that looks appropriate or remove it # so that the call to make builds the application if [ "$makeType" = all -o "$makeType" = "" ] @@ -261,8 +263,11 @@ then fi +#------------------------------------------------------------------------------ # Spawn a sub-shell and unset MAKEFLAGS in that sub-shell to avoid # files and options being built in parallel +#------------------------------------------------------------------------------ + ( cd $MakeDir unset MAKEFLAGS -- GitLab