diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-05-17 20:39:40 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-05-17 20:39:40 +0000 |
commit | d751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7 (patch) | |
tree | 84a74c59b9f7f096e0fae3dd351e5274bf836bb5 /tools/build/install-if-change.in | |
parent | 2011-05-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-d751cecbb1ca1b7ac0a7bc8492e0e61e6c5fc0c7.tar.bz2 |
* tools/build/.cvsignore, tools/build/ChangeLog,
tools/build/Makefile.am, tools/build/README, tools/build/binpatch.c,
tools/build/cklength.c, tools/build/config.h.in,
tools/build/configure.ac, tools/build/cvsignore-add.sh,
tools/build/doxy-filter, tools/build/eolstrip.c,
tools/build/install-if-change.in, tools/build/multigen,
tools/build/packhex.c, tools/build/rtems-bin2c.c,
tools/build/search-id.sh, tools/build/unhex.c, tools/cpu/.cvsignore,
tools/cpu/ChangeLog, tools/cpu/Makefile.am, tools/cpu/configure.ac,
tools/cpu/generic/.cvsignore, tools/cpu/generic/ChangeLog,
tools/cpu/generic/Makefile.am, tools/cpu/generic/configure.ac,
tools/cpu/generic/size_rtems.in, tools/cpu/nios2/.cvsignore,
tools/cpu/nios2/ChangeLog, tools/cpu/nios2/Makefile.am,
tools/cpu/nios2/README, tools/cpu/nios2/bridges.c,
tools/cpu/nios2/bridges.h, tools/cpu/nios2/clocks.c,
tools/cpu/nios2/clocks.h, tools/cpu/nios2/configure.ac,
tools/cpu/nios2/devices.c, tools/cpu/nios2/devices.h,
tools/cpu/nios2/linkcmds.c, tools/cpu/nios2/linkcmds.h,
tools/cpu/nios2/memory.c, tools/cpu/nios2/memory.h,
tools/cpu/nios2/nios2gen.c, tools/cpu/nios2/output.c,
tools/cpu/nios2/output.h, tools/cpu/nios2/ptf.c,
tools/cpu/nios2/ptf.h, tools/cpu/nios2/sample.ptf,
tools/cpu/sh/.cvsignore, tools/cpu/sh/AUTHORS, tools/cpu/sh/COPYING,
tools/cpu/sh/ChangeLog, tools/cpu/sh/Makefile.am, tools/cpu/sh/TODO,
tools/cpu/sh/configure.ac, tools/cpu/sh/sci.c, tools/cpu/sh/sci.h,
tools/cpu/sh/shgen.c: New files.
Diffstat (limited to '')
-rw-r--r-- | tools/build/install-if-change.in | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/tools/build/install-if-change.in b/tools/build/install-if-change.in new file mode 100644 index 0000000000..b2f3cb04bb --- /dev/null +++ b/tools/build/install-if-change.in @@ -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: *** |