- this seems to be the most sensible solution. The changed time stamps on the links doesn't seem to bother make at all.
157 lines
3.8 KiB
Bash
Executable File
157 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
|
|
# \\/ 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 2 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, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#
|
|
# Script
|
|
# wmakeLnInclude
|
|
#
|
|
# Description
|
|
# Link all the source files in the <dir> directory into <dir>/lnInclude
|
|
#
|
|
# Usage: wmakeLnInclude [-f] <dir> [-lnOption]
|
|
#
|
|
# The desired source files:
|
|
# *.C *.H *.h *.cpp *.cxx *.hpp *.hxx
|
|
#
|
|
# Avoid
|
|
# *.c (C source)
|
|
# .#* (cvs recovered files)
|
|
#------------------------------------------------------------------------------
|
|
Script=${0##*/}
|
|
|
|
usage() {
|
|
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
|
cat<<USAGE
|
|
|
|
usage: $Script [-f] <dir> [-lnOption]
|
|
|
|
Link all the source files in the <dir> into <dir>/lnInclude
|
|
|
|
Note
|
|
The '-f' option forces an update when the lnInclude directory already exists
|
|
and also changes the default linking from 'ln -s' to 'ln -sf'.
|
|
|
|
USAGE
|
|
exit 1
|
|
}
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# simple option parsing
|
|
unset forceUpdate
|
|
unset findOpt
|
|
|
|
# default ln option
|
|
lnOpt="-s"
|
|
|
|
# simple parse options
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
-h | -help) # provide immediate help
|
|
usage
|
|
;;
|
|
-f)
|
|
shift
|
|
forceUpdate=1
|
|
lnOpt="-sf"
|
|
;;
|
|
-*)
|
|
usage "unknown option: '$*'"
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $# -eq 1 ]
|
|
then
|
|
baseDir=$1
|
|
elif [ $# -eq 2 ]
|
|
baseDir=$1
|
|
lnOpt="$2"
|
|
else
|
|
usage "ERROR: incorrect number of arguments"
|
|
fi
|
|
|
|
|
|
# convert incorrect path/dir/lnInclude to something sensible
|
|
while [ "${baseDir##*/}" = lnInclude ]
|
|
do
|
|
baseDir="${baseDir%/*}"
|
|
if [ "$baseDir" = lnInclude ]
|
|
then
|
|
baseDir="."
|
|
fi
|
|
done
|
|
incDir=$baseDir/lnInclude
|
|
|
|
|
|
if [ ! -d $baseDir ]
|
|
then
|
|
echo "$Script error: base directory $baseDir does not exist" 1>&2
|
|
exit 2
|
|
fi
|
|
|
|
if [ -d $incDir ]
|
|
then
|
|
if [ ! "$forceUpdate" ]
|
|
then
|
|
# echo "$Script error: include directory $incDir already exists" 1>&2
|
|
exit 0
|
|
fi
|
|
else
|
|
mkdir $incDir
|
|
fi
|
|
|
|
if [ ! -d $incDir ]
|
|
then
|
|
echo "$Script error: failed to create include directory $incDir" 1>&2
|
|
exit 0
|
|
fi
|
|
|
|
cd $incDir || exit 1
|
|
|
|
|
|
# Link include files
|
|
# ~~~~~~~~~~~~~~~~~~
|
|
echo "$Script: linking include files to $incDir"
|
|
|
|
#
|
|
# remove any broken links first (this helps when file locations have moved)
|
|
#
|
|
find -L . -type l -exec rm {} \;
|
|
|
|
#
|
|
# create links, avoid recreating links unless necessary
|
|
# things placed in the 'noLink' directory are skipped
|
|
#
|
|
find .. $findOpt \
|
|
\( -name lnInclude -o -name Make -o -name config -o -name noLink \) -prune \
|
|
-o \( -name '*.[CHh]' -o -name '*.[ch]xx' -o -name '*.[ch]pp' -o -name '*.type' \) \
|
|
-exec ln $lnOpt {} . \;
|
|
|
|
#------------------------------------------------------------------------------
|