forked from Imagelibrary/rtems
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.
143 lines
3.0 KiB
Plaintext
143 lines
3.0 KiB
Plaintext
#!@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: ***
|