#----------------------------------*-sh-*-------------------------------------- # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. # # OpenFOAM is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with OpenFOAM. If not, see . # # Script # wmakeFunctions # # Description # Functions to check wmake environment and find .dep and .o files #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # Check environment variables #------------------------------------------------------------------------------ checkEnv() { for envar in WM_OPTIONS WM_LINK_LANGUAGE WM_DIR WM_PROJECT_DIR do eval test "\$$envar" || { echo "$Script error: environment variable \$$envar not set" 1>&2 exit 1 } done } #------------------------------------------------------------------------------ # Search up directories tree for the Make sub-directory #------------------------------------------------------------------------------ # Return the absolute path for a directory or a file's parent directory # expandPath dirName # expandPath fileName # # Sets: # - exPath expandPath() { if [ -d "$1" ] then exPath=$(cd "$1" && pwd -P) else exPath=$(cd $(dirname "$1") && pwd -P) fi } # Find the target directory # findTarget dirName # findTarget fileName # # Sets: # - dir # # Side-effect variables: # - sets exPath # - sets wmpdir # # Global variables used: # - WM_PROJECT_DIR, HOME findTarget() { expandPath $WM_PROJECT_DIR wmpdir=$exPath expandPath $1 if [ "$exPath" = "$wmpdir" \ -o "$exPath" = "$HOME" \ -o "$exPath" = "/" \ ] then echo "$Script error: could not find Make directory" 1>&2 exit 1 elif [ -d "$1/Make" ] then dir=$1 else findTarget "$1/.." fi } # Change to 'MakeDir' # - 'MakeDir' for its input # # Sets: # - dir # # Side-effect variables: # - sets exPath # - unsets targetType cdSource() { if [ ! -d $MakeDir ] then echo "$Script: '$MakeDir' directory does not exist in $PWD" 1>&2 echo " Searching up directories tree for Make directory" 1>&2 unset targetType findTarget . if [ "$dir" ] then cd $dir 2>/dev/null || { echo "$Script error: could not change to directory '$dir'" 1>&2 exit 1 } fi fi [ -r $MakeDir/files ] || { echo "$Script error: file '$MakeDir/files' does not exist in $PWD" 1>&2 exit 1 } } # Find the object directory # findObjectDir dirName # findObjectDir fileName # # Sets: # - dir # - path # - appDir # - objectsDir # # Side-effect variables: # - sets exPath # - sets wmpdir # - set platformPath # # Global variables used: # - WM_PROJECT_DIR, WM_OPTIONS findObjectDir() { expandPath $WM_PROJECT_DIR wmpdir=$exPath expandPath $1 if echo $exPath | grep "$wmpdir" > /dev/null then platformPath=$WM_PROJECT_DIR/platforms/${WM_OPTIONS} objectsDir=$platformPath$(echo $exPath | sed s%$wmpdir%% ) else path=$exPath dir=. if [ ! -d Make ] then findTarget . fi appDir=$dir expandPath $appDir/. objectsDir=$appDir/Make/${WM_OPTIONS}$(echo $path | sed s%$exPath%% ) fi } # depToSource # - uses 'depFile' for its input # # Sets: # - sourceFile # # Global variables used: # - WM_OPTIONS # - WM_MPLIB if [ -n "$BASH_VERSION" ] then depToSource() { sourceFile=${depFile%.dep} sourceFile="${sourceFile/platforms\/${WM_OPTIONS}\//}" sourceFile="${sourceFile/Make\/${WM_OPTIONS}\//}" sourceFile="${sourceFile/platforms\/${WM_OPTIONS}${WM_MPLIB}\//}" sourceFile="${sourceFile/Make\/${WM_OPTIONS}${WM_MPLIB}\//}" } else depToSource() { sourceFile=$(echo ${depFile%.dep} | \ sed -e s%platforms/${WM_OPTIONS}/%% \ -e s%Make/${WM_OPTIONS}/%% \ -e s%platforms/${WM_OPTIONS}${WM_MPLIB}/%% \ -e s%Make/${WM_OPTIONS}${WM_MPLIB}/%% ) } fi #------------------------------------------------------------------------------