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:
@@ -22,11 +22,3 @@ unlock-directory
|
||||
Useful to keep people from accidentally overwriting
|
||||
"released" trees if they get confused about which
|
||||
module they have loaded.
|
||||
|
||||
rtems-glom
|
||||
glom together all the rtems libraries in order to simplify
|
||||
the link line used by applications.
|
||||
Produces rtems.rel.
|
||||
Not used by the RTEMS src tree at all.
|
||||
Strictly optional.
|
||||
|
||||
|
||||
142
tools/build/install-if-change.in
Normal file
142
tools/build/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: ***
|
||||
43
tools/build/lock-directory.in
Normal file
43
tools/build/lock-directory.in
Normal file
@@ -0,0 +1,43 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Make a directory write protected
|
||||
# Used to write protect the install point after a build
|
||||
# to prevent inadvertant overwriting.
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
lock_directory() {
|
||||
l_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $l_dir ]
|
||||
then
|
||||
find $l_dir -type d -perm -0200 -print | $XARGS chmod -w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
lock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
73
tools/build/rcs-clean.in
Normal file
73
tools/build/rcs-clean.in
Normal file
@@ -0,0 +1,73 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Delete all files from the current directory that can be recreated
|
||||
# via RCS 'co' commonds
|
||||
# Used by 'make clobber'
|
||||
#
|
||||
|
||||
progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"usage: $progname [ -v ]"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo $* >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
|
||||
while getopts v OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
let $((shiftcount = $OPTIND - 1))
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
[ "$args" ] && fatal
|
||||
|
||||
[ -d RCS/. ] || exit 0
|
||||
|
||||
# there is probably a better way to do this
|
||||
|
||||
rcs_files=`echo RCS/*,v | sed -e 's?RCS/??g' -e's/,v//g'`
|
||||
|
||||
kills=""
|
||||
for f in $rcs_files
|
||||
do
|
||||
# build list of all files in RCS/*,v that are *not* locked
|
||||
if [ -f $f ] && [ ! -w $f ] && [ -f RCS/$f,v ]
|
||||
then
|
||||
locked=`rlog -L -R $f`
|
||||
[ "$locked" = "" ] && kills="$kills $f"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$kills" ]
|
||||
then
|
||||
[ "$verbose" ] && echo rm -f $kills
|
||||
rm -f $kills
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
@@ -14,21 +14,23 @@ PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(RTEMS_ROOT)/make/rtems.cfg
|
||||
|
||||
DESTDIR=$(PROJECT_RELEASE)/build-tools
|
||||
|
||||
PGMS=install-if-change rcs-clean lock-directory unlock-directory \
|
||||
search-id.sh
|
||||
BUILD_PGMS=install-if-change rcs-clean lock-directory unlock-directory
|
||||
PGMS = $(BUILD_PGMS) search-id.sh
|
||||
|
||||
INSTALLED=$(PGMS:%=$(DESTDIR)/%)
|
||||
CLEAN_ADDITIONS += $(BUILD_PGMS)
|
||||
|
||||
INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
|
||||
|
||||
all: $(DESTDIR) $(PGMS) install
|
||||
|
||||
$(DESTDIR):
|
||||
@INSTALL@ $(INSTDIRFLAGS) $@
|
||||
|
||||
install: $(INSTALLED)
|
||||
$(INSTALLED_PGMS): $(PGMS)
|
||||
@INSTALL@ $(INSTBINFLAGS) $^ $(DESTDIR)
|
||||
|
||||
# Install the program
|
||||
$(DESTDIR)/%: %
|
||||
$(make-script)
|
||||
install: $(DESTDIR) $(INSTALLED_PGMS)
|
||||
|
||||
@@ -22,11 +22,3 @@ unlock-directory
|
||||
Useful to keep people from accidentally overwriting
|
||||
"released" trees if they get confused about which
|
||||
module they have loaded.
|
||||
|
||||
rtems-glom
|
||||
glom together all the rtems libraries in order to simplify
|
||||
the link line used by applications.
|
||||
Produces rtems.rel.
|
||||
Not used by the RTEMS src tree at all.
|
||||
Strictly optional.
|
||||
|
||||
|
||||
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: ***
|
||||
43
tools/build/scripts/lock-directory.in
Normal file
43
tools/build/scripts/lock-directory.in
Normal file
@@ -0,0 +1,43 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Make a directory write protected
|
||||
# Used to write protect the install point after a build
|
||||
# to prevent inadvertant overwriting.
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
lock_directory() {
|
||||
l_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $l_dir ]
|
||||
then
|
||||
find $l_dir -type d -perm -0200 -print | $XARGS chmod -w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
lock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
73
tools/build/scripts/rcs-clean.in
Normal file
73
tools/build/scripts/rcs-clean.in
Normal file
@@ -0,0 +1,73 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Delete all files from the current directory that can be recreated
|
||||
# via RCS 'co' commonds
|
||||
# Used by 'make clobber'
|
||||
#
|
||||
|
||||
progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"usage: $progname [ -v ]"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo $* >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
|
||||
while getopts v OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
let $((shiftcount = $OPTIND - 1))
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
[ "$args" ] && fatal
|
||||
|
||||
[ -d RCS/. ] || exit 0
|
||||
|
||||
# there is probably a better way to do this
|
||||
|
||||
rcs_files=`echo RCS/*,v | sed -e 's?RCS/??g' -e's/,v//g'`
|
||||
|
||||
kills=""
|
||||
for f in $rcs_files
|
||||
do
|
||||
# build list of all files in RCS/*,v that are *not* locked
|
||||
if [ -f $f ] && [ ! -w $f ] && [ -f RCS/$f,v ]
|
||||
then
|
||||
locked=`rlog -L -R $f`
|
||||
[ "$locked" = "" ] && kills="$kills $f"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$kills" ]
|
||||
then
|
||||
[ "$verbose" ] && echo rm -f $kills
|
||||
rm -f $kills
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
41
tools/build/scripts/unlock-directory.in
Normal file
41
tools/build/scripts/unlock-directory.in
Normal file
@@ -0,0 +1,41 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Unlock a directory processed by lock_directory
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
unlock_directory() {
|
||||
ul_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $ul_dir ]
|
||||
then
|
||||
find $ul_dir -type d ! -perm -0222 -print | $XARGS -t chmod +w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
unlock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
41
tools/build/unlock-directory.in
Normal file
41
tools/build/unlock-directory.in
Normal file
@@ -0,0 +1,41 @@
|
||||
#!@KSH@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Unlock a directory processed by lock_directory
|
||||
#
|
||||
|
||||
# is a particular command available on this machine?
|
||||
#
|
||||
cmd_avail()
|
||||
{
|
||||
set -- `type $1 2>&1`
|
||||
if [ "$2" = "not" -a "$3" = "found" ] || [ "$3" = "not" -a "$4" = "found" ]
|
||||
then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
unlock_directory() {
|
||||
ul_dir=$1/. # get any symlink out of the way using '.'
|
||||
if [ -d $ul_dir ]
|
||||
then
|
||||
find $ul_dir -type d ! -perm -0222 -print | $XARGS -t chmod +w
|
||||
fi
|
||||
}
|
||||
|
||||
# Use gnu xargs if available; faster, more reliable in general
|
||||
XARGS=xargs
|
||||
cmd_avail gxargs && XARGS=gxargs
|
||||
|
||||
for dir
|
||||
do
|
||||
unlock_directory $dir
|
||||
done
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
|
||||
@@ -14,20 +14,23 @@ PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(RTEMS_ROOT)/make/rtems.cfg
|
||||
|
||||
DESTDIR=$(PROJECT_RELEASE)/bin
|
||||
|
||||
PGMS=size_rtems
|
||||
BUILD_PGMS=size_rtems
|
||||
PGMS=$(BUILD_PGMS)
|
||||
|
||||
INSTALLED=$(PGMS:%=$(DESTDIR)/%)
|
||||
CLEAN_ADDITIONS += $(BUILD_PGMS)
|
||||
|
||||
INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
|
||||
|
||||
all: $(DESTDIR) $(PGMS) install
|
||||
|
||||
$(DESTDIR):
|
||||
@INSTALL@ $(INSTDIRFLAGS) $@
|
||||
|
||||
install: $(INSTALLED)
|
||||
|
||||
# Install the program
|
||||
$(DESTDIR)/%: %
|
||||
$(INSTALLED_PGMS): $(PGMS)
|
||||
@INSTALL@ $(INSTBINFLAGS) $^ $@
|
||||
|
||||
install: $(DESTDIR) $(INSTALLED_PGMS)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# NOTE: of course we can't use any of these tools
|
||||
# in this Makefile. Most notably: install-if-change
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
@@ -13,26 +10,34 @@ PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
include $(RTEMS_ROOT)/make/rtems.cfg
|
||||
|
||||
DESTDIR=$(PROJECT_RELEASE)/update-tools
|
||||
|
||||
PGMS=update word-replace
|
||||
BUILD_PGMS = update
|
||||
ifneq (@PERL@,)
|
||||
BUILD_PGMS += word-replace
|
||||
endif
|
||||
|
||||
PGMS = $(BUILD_PGMS)
|
||||
|
||||
CLEAN_ADDITIONS += $(BUILD_PGMS)
|
||||
|
||||
MISC_SUPPORT=310_to_320_list
|
||||
|
||||
INSTALL_LIST= $(PGMS) $(MISC_SUPPORT)
|
||||
INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
|
||||
INSTALLED_DATA=$(MISC_SUPPORT:%=$(DESTDIR)/%)
|
||||
|
||||
INSTALLED=$(INSTALL_LIST:%=$(DESTDIR)/%)
|
||||
|
||||
all: $(DESTDIR)
|
||||
all: $(PGMS)
|
||||
|
||||
$(DESTDIR):
|
||||
@INSTALL@ $(INSTDIRFLAGS) $@
|
||||
|
||||
install: $(INSTALLED)
|
||||
$(INSTALLED_PGMS): $(PGMS)
|
||||
@INSTALL@ $(INSTBINFLAGS) $^ $(DESTDIR)
|
||||
|
||||
$(INSTALLED_DATA): $(MISC_SUPPORT)
|
||||
@INSTALL@ $(INSTDATAFLAGS) $^ $(DESTDIR)
|
||||
|
||||
install: $(DESTDIR) $(INSTALLED_PGMS) $(INSTALLED_DATA)
|
||||
|
||||
# Install the program
|
||||
# FIXME: This isn't correct
|
||||
$(DESTDIR)/%: %
|
||||
$(make-script)
|
||||
@INSTALL@ $(INSTBINFLAGS) $(PERL_PGMS) ${DESTDIR}
|
||||
@INSTALL@ $(INSTDATAFLAGS) $(MISC_SUPPORT) ${DESTDIR}
|
||||
|
||||
216
tools/update/update.in
Normal file
216
tools/update/update.in
Normal file
@@ -0,0 +1,216 @@
|
||||
#!@KSH@ -p
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Either bash or ksh will be ok for this; requires 'test -ot'
|
||||
# (-p above just says to not parse $ENV file; makes it faster for
|
||||
# those of us who set $ENV)
|
||||
#
|
||||
# Update RTEMS applications for the API changes from 3.1.0 to 3.2.0
|
||||
#
|
||||
# NOTE
|
||||
#
|
||||
# This is potentially a very dangerous program.
|
||||
|
||||
# progname=`basename $0`
|
||||
progname=${0##*/} # fast basename hack for ksh, bash
|
||||
|
||||
USAGE=\
|
||||
"
|
||||
usage: $progname [ -vs ] [ -b base_directory ] [-p file] [-f] [files...]
|
||||
-v -- verbose
|
||||
-p -- file with replacement instructions
|
||||
-s -- skip prompt for backup verification
|
||||
-f -- do files at end of line
|
||||
|
||||
base_directory is the root directory of the source code to update. It
|
||||
defaults to the current directory.
|
||||
|
||||
This program updates C, H, and .inl files.
|
||||
"
|
||||
|
||||
fatal() {
|
||||
if [ "$1" ]
|
||||
then
|
||||
echo >&2
|
||||
echo $* >&2
|
||||
echo >&2
|
||||
fi
|
||||
echo "$USAGE" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# KLUDGE to figure out at runtime how to echo a line without a
|
||||
# newline.
|
||||
#
|
||||
count=`echo "\\c" | wc -c`
|
||||
if [ ${count} -ne 0 ] ; then
|
||||
EARG="-n"
|
||||
EOL=""
|
||||
else
|
||||
EARG=""
|
||||
EOL="\\c"
|
||||
fi
|
||||
|
||||
#
|
||||
# Function to make sure they do a backup
|
||||
#
|
||||
|
||||
WARNING=\
|
||||
"
|
||||
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
**** ****
|
||||
**** WARNING!!! WARNING!!! WARNING!!! ****
|
||||
**** ****
|
||||
**** ALL SOURCE CODE SHOULD BE BACKED UP BEFORE RUNNING THIS PROGRAM!! ****
|
||||
**** ****
|
||||
**** WARNING!!! WARNING!!! WARNING!!! ****
|
||||
**** ****
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
*******************************************************************************
|
||||
|
||||
"
|
||||
|
||||
verify_backup()
|
||||
{
|
||||
echo "$WARNING"
|
||||
continue="yes"
|
||||
while [ $continue = "yes" ]
|
||||
do
|
||||
echo ${EARG} "Do you wish to update the source tree at this time [y|n]? " ${EOL}
|
||||
read answer
|
||||
case $answer in
|
||||
[yY]*)
|
||||
continue="no"
|
||||
;;
|
||||
[nN]*)
|
||||
echo
|
||||
echo "Exitting at user request"
|
||||
echo
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# Default tools to use...
|
||||
#
|
||||
# NOTE: The GNU versions of both of these are faster.
|
||||
#
|
||||
find_prog=find
|
||||
xargs_prog=xargs
|
||||
|
||||
#
|
||||
# process the options
|
||||
#
|
||||
|
||||
verbose=""
|
||||
suffix=""
|
||||
mode=""
|
||||
base_directory=.
|
||||
do_files="no"
|
||||
do_prompt="yes"
|
||||
replacement_file="${RTEMS_ROOT}/update-tools/310_to_320_list"
|
||||
|
||||
while getopts sfp:b:v OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v)
|
||||
verbose="yes";;
|
||||
s)
|
||||
do_prompt="no";;
|
||||
b)
|
||||
base_directory=${OPTARG};;
|
||||
p)
|
||||
replacement_file=${OPTARG};;
|
||||
f)
|
||||
do_files="yes";;
|
||||
*)
|
||||
fatal
|
||||
esac
|
||||
done
|
||||
|
||||
let $((shiftcount = $OPTIND - 1))
|
||||
shift $shiftcount
|
||||
|
||||
args=$*
|
||||
|
||||
#
|
||||
# Make sure they have done a backup
|
||||
#
|
||||
|
||||
if [ ${do_prompt} = "yes" ]
|
||||
then
|
||||
verify_backup
|
||||
fi
|
||||
|
||||
#
|
||||
# Validate the base directory
|
||||
#
|
||||
|
||||
if [ ! -d $base_directory ]
|
||||
then
|
||||
fatal "${base_directory} does not exist"
|
||||
fi
|
||||
|
||||
#
|
||||
# Validate the replacement file
|
||||
#
|
||||
|
||||
if [ ! -r $replacement_file ]
|
||||
then
|
||||
fatal "${replacement_file} does not exist or is not readable"
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Verify enough of the RTEMS environment variables are set
|
||||
#
|
||||
|
||||
if [ ! -d "${RTEMS_ROOT}" ]
|
||||
then
|
||||
fatal "RTEMS_ROOT environment variable is not initialized"
|
||||
fi
|
||||
|
||||
#
|
||||
# Update the files
|
||||
#
|
||||
|
||||
generate_list()
|
||||
{
|
||||
if [ ${do_files} = "yes" ]
|
||||
then
|
||||
for i in $args
|
||||
do
|
||||
echo $i
|
||||
done
|
||||
else
|
||||
${find_prog} ${base_directory} \( -name "*.[ch]" -o -name "*.inl" \) -print
|
||||
fi
|
||||
}
|
||||
|
||||
generate_list | ${xargs_prog} |
|
||||
while read line
|
||||
do
|
||||
${RTEMS_ROOT}/update-tools/word-replace -p ${replacement_file} ${line}
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
for file in ${line}
|
||||
do
|
||||
mv ${file}.fixed ${file}
|
||||
done
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables: ***
|
||||
# mode:ksh ***
|
||||
# End: ***
|
||||
89
tools/update/word-replace.in
Normal file
89
tools/update/word-replace.in
Normal file
@@ -0,0 +1,89 @@
|
||||
#!@PERL@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
eval "exec @PERL@ -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
require 'getopts.pl';
|
||||
&Getopts("p:vh"); # help, pattern file, verbose,
|
||||
|
||||
if ($opt_h || ! $opt_p) {
|
||||
print STDERR <<NO_MORE_HELP;
|
||||
word-replace
|
||||
|
||||
Replace *words* with patterns. Pattern file specifies which patterns
|
||||
to replace on each line. All patterns are wrapped with perl \\b regexp
|
||||
specifiers.
|
||||
|
||||
Usage: $0 [-v] -p pattern-file files to replace
|
||||
|
||||
-v -- possibly more verbose
|
||||
-p file -- pattern file
|
||||
-h -- help
|
||||
|
||||
anything else == this help message
|
||||
|
||||
Pattern file looks like this:
|
||||
|
||||
# Example:
|
||||
# ignores all lines with beginning with # or not exactly 2 fields
|
||||
_Dorky_Name rtems_dorky_name # comments, and blank lines are cool
|
||||
_Dorky_Name2 rtems_dorky_name2 # comments, and blank lines are cool
|
||||
NO_MORE_HELP
|
||||
exit 0;
|
||||
}
|
||||
|
||||
$verbose = $opt_v;
|
||||
$pattern_file = $opt_p;
|
||||
|
||||
# make standard outputs unbuffered (so the '.'s come out ok)
|
||||
$oldfh = select(STDERR); $| = 1; select($oldfh);
|
||||
$oldfh = select(STDOUT); $| = 1; select($oldfh);
|
||||
|
||||
# pull in the patterns
|
||||
open(PATTERNS, "<$pattern_file") ||
|
||||
die "could not open $pattern_file: $!, crapped out at";
|
||||
|
||||
foreach (<PATTERNS>)
|
||||
{
|
||||
chop;
|
||||
s/#.*//;
|
||||
next if /^$/;
|
||||
($orig, $new, $junk, @rest) = split;
|
||||
next if ( ! $orig || ! $new || $junk); # <2 or >2 patterns
|
||||
die "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig});
|
||||
$patterns{$orig} = $new;
|
||||
}
|
||||
close PATTERNS;
|
||||
|
||||
# walk thru each line in each file
|
||||
foreach $file (@ARGV)
|
||||
{
|
||||
print "$file\t";
|
||||
|
||||
open (INFILE, "<$file") ||
|
||||
die "could not open input file $file: $!";
|
||||
|
||||
$outfile = $file . ".fixed";;
|
||||
open (OUTFILE, ">$outfile") ||
|
||||
die "could not open output file $outfile: $!";
|
||||
|
||||
while (<INFILE>)
|
||||
{
|
||||
study; # maybe make s/// faster
|
||||
foreach $key (keys %patterns)
|
||||
{
|
||||
if ( s/\b$key\b/$patterns{$key}/ge )
|
||||
{
|
||||
print ".";
|
||||
}
|
||||
}
|
||||
print OUTFILE $_;
|
||||
}
|
||||
print "\n";
|
||||
close INFILE;
|
||||
close OUTFILE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user