forked from Imagelibrary/rtems
Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
1. Rtems contains some perl scripts that use hard-coded paths to
/usr/bin/perl or /usr/local/bin/perl I have already fixed these
problems by adding some checks to configure.in. While doing this,
I also cleaned up some more autoconf related problems for generating
shell scripts. This patch might seem a bit scary to you, but I am
quite confident it won't break something (I've been testing it for
almost a week now, however it might introduce typos for a limited
number configurations I don't have access to - But it shouldn't be
a problem for you to test them :-).
I expect to get this finished tonight, hence you will very likely
have the patch when you get up tomorrow.
Changes:
* Check for PERL and disable all PERL scripts if perl wasn't found.
* Generate all KSHELL-scripts with autoconf instead of make-script
* Automatic dependency handling for autoconf generated KSHELL or PERL
scripts (make/rtems.cfg)
Notes:
* this patch contains new files and deletes some other files.
* The patch is relative to rtems-4.0.0-beta4 with my previous
rtems-rc-981014-1.diff patch applied.
Testing:
I tested it with sh-rtems and posix under linux. Now all targets
which are touched by this patch and which are not used while building
for sh-rtems and posix still need to be tested. AFAIS, only the
sparc/erc32 BSP should be affected by this criterion. And if you
like to, you should also consider testing it on a Cygwin32 and a
Solaris host for one arbitrary BSP.
This commit is contained in:
142
tools/build/scripts/install-if-change.in
Normal file
142
tools/build/scripts/install-if-change.in
Normal file
@@ -0,0 +1,142 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# Either bash or ksh will be ok for this; requires (( )) arithmetic
|
||||
# (-p above just says to not parse $ENV file; makes it faster for
|
||||
# those of us who set $ENV)
|
||||
#
|
||||
# install files if they have changed by running 'cmp', then 'install'
|
||||
# as necessary.
|
||||
#
|
||||
# Optionally, can append a suffix before last existing suffix (if any)
|
||||
#
|
||||
# NOTE
|
||||
# We avoid using typical install(1M) programs since they have
|
||||
# large variability across systems and we also need to support ou
|
||||
# -V option.
|
||||
# So we just copy and chmod by hand.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
progname=`basename $0`
|
||||
#progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"usage: $progname [ -vmV ] file [ file ... ] dest-directory-or-file
|
||||
-v -- verbose
|
||||
-V suffix -- suffix to append to targets (before any . suffix)
|
||||
eg: -V _g would change 'foo' to 'foo_g' and
|
||||
'libfoo.a' to 'libfoo_g.a'
|
||||
-m mode -- mode for new file(s)"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo $* >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
suffix=""
|
||||
mode=""
|
||||
|
||||
while getopts vm:V: OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
V)
|
||||
eval suffix=$OPTARG;;
|
||||
m)
|
||||
mode="$OPTARG";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
shiftcount=`expr $OPTIND - 1`
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
|
||||
#
|
||||
# Separate source file(s) from dest directory or file
|
||||
#
|
||||
|
||||
files=""
|
||||
dest=""
|
||||
for d in $args
|
||||
do
|
||||
files="$files $dest"
|
||||
dest=$d
|
||||
done
|
||||
|
||||
if [ ! "$files" ] || [ ! "$dest" ]
|
||||
then
|
||||
fatal "missing files or invalid destination"
|
||||
fi
|
||||
|
||||
#
|
||||
# Process the arguments
|
||||
#
|
||||
|
||||
targets=""
|
||||
for f in $files
|
||||
do
|
||||
# leaf=`basename $f`
|
||||
leaf=${f##*/} # fast basename hack for ksh, bash
|
||||
|
||||
target=$dest
|
||||
if [ -d $dest ]
|
||||
then
|
||||
# if we were given a suffix, then add it as appropriate
|
||||
if [ "$suffix" ]
|
||||
then
|
||||
case $f in
|
||||
*.*)
|
||||
# leaf=`echo $leaf |
|
||||
# /bin/sed "s/\([~\.]*\)\.\(.*\)$/\1$suffix.\2/"`
|
||||
# ksh,bash hack for above sed script
|
||||
leaf=${leaf%%.*}$suffix.${leaf#*.}
|
||||
|
||||
[ "$verbose" = "yes" ] &&
|
||||
echo "$progname: $f will be installed as $leaf"
|
||||
;;
|
||||
*)
|
||||
leaf=$leaf$suffix;;
|
||||
esac
|
||||
fi
|
||||
target=$target/$leaf
|
||||
fi
|
||||
|
||||
[ ! -r $f ] && fatal "can not read $f"
|
||||
|
||||
if cmp -s $f $target
|
||||
then
|
||||
[ "$verbose" = "yes" ] && echo "'$f' not newer than '$target'"
|
||||
else
|
||||
[ "$verbose" = "yes" ] && echo "rm -f $target"
|
||||
rm -f $target
|
||||
echo "cp -p $f $target"
|
||||
cp -p $f $target || exit 1
|
||||
targets="$targets $target" # keep list for chmod below
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$mode" -a "$targets" ]
|
||||
then
|
||||
[ "$verbose" = "yes" ] && echo "chmod $mode $targets"
|
||||
chmod $mode $targets
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
Reference in New Issue
Block a user