summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-10-14 20:19:30 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-10-14 20:19:30 +0000
commit11cfb6f7f6326e79b4a930716c340b65d76d0683 (patch)
tree407c08b76ce570ebc0c5b218aa914a1449808f20
parent946b3cb0cf91da6753b6a6e0f60b91d84fcdf097 (diff)
downloadrtems-11cfb6f7f6326e79b4a930716c340b65d76d0683.tar.bz2
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.
-rw-r--r--c/build-tools/README8
-rw-r--r--c/build-tools/install-if-change.in142
-rw-r--r--c/build-tools/lock-directory.in43
-rw-r--r--c/build-tools/rcs-clean.in73
-rw-r--r--c/build-tools/scripts/Makefile.in16
-rw-r--r--c/build-tools/scripts/README8
-rw-r--r--c/build-tools/scripts/install-if-change.in142
-rw-r--r--c/build-tools/scripts/lock-directory.in43
-rw-r--r--c/build-tools/scripts/rcs-clean.in73
-rw-r--r--c/build-tools/scripts/unlock-directory.in41
-rw-r--r--c/build-tools/unlock-directory.in41
-rw-r--r--c/src/exec/score/tools/generic/Makefile.in15
-rw-r--r--c/src/lib/libbsp/sparc/erc32/tools/Makefile.in18
-rw-r--r--c/src/lib/libbsp/sparc/erc32/tools/runtest.in307
-rw-r--r--c/src/lib/libbsp/unix/posix/tools/Makefile.in26
-rw-r--r--c/src/lib/libbsp/unix/posix/tools/looptest.in93
-rw-r--r--c/src/lib/libbsp/unix/posix/tools/runtest.in255
-rw-r--r--c/src/lib/libbsp/unix/posix/tools/semdump.in59
-rw-r--r--c/src/lib/libbsp/unix/posix/tools/shmdump.in134
-rw-r--r--c/update-tools/Makefile.in35
-rw-r--r--c/update-tools/update.in216
-rw-r--r--c/update-tools/word-replace.in89
-rw-r--r--configure257
-rw-r--r--configure.in8
-rw-r--r--make/rtems.cfg10
-rw-r--r--tools/build/README8
-rw-r--r--tools/build/install-if-change.in142
-rw-r--r--tools/build/lock-directory.in43
-rw-r--r--tools/build/rcs-clean.in73
-rw-r--r--tools/build/scripts/Makefile.in16
-rw-r--r--tools/build/scripts/README8
-rw-r--r--tools/build/scripts/install-if-change.in142
-rw-r--r--tools/build/scripts/lock-directory.in43
-rw-r--r--tools/build/scripts/rcs-clean.in73
-rw-r--r--tools/build/scripts/unlock-directory.in41
-rw-r--r--tools/build/unlock-directory.in41
-rw-r--r--tools/cpu/generic/Makefile.in15
-rw-r--r--tools/update/Makefile.in35
-rw-r--r--tools/update/update.in216
-rw-r--r--tools/update/word-replace.in89
40 files changed, 2921 insertions, 216 deletions
diff --git a/c/build-tools/README b/c/build-tools/README
index 0436fc958d..0738a5830e 100644
--- a/c/build-tools/README
+++ b/c/build-tools/README
@@ -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.
-
diff --git a/c/build-tools/install-if-change.in b/c/build-tools/install-if-change.in
new file mode 100644
index 0000000000..b2f3cb04bb
--- /dev/null
+++ b/c/build-tools/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: ***
diff --git a/c/build-tools/lock-directory.in b/c/build-tools/lock-directory.in
new file mode 100644
index 0000000000..1c205cdec0
--- /dev/null
+++ b/c/build-tools/lock-directory.in
@@ -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: ***
+
diff --git a/c/build-tools/rcs-clean.in b/c/build-tools/rcs-clean.in
new file mode 100644
index 0000000000..83fed05128
--- /dev/null
+++ b/c/build-tools/rcs-clean.in
@@ -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: ***
diff --git a/c/build-tools/scripts/Makefile.in b/c/build-tools/scripts/Makefile.in
index afcc980db8..753bfafaa5 100644
--- a/c/build-tools/scripts/Makefile.in
+++ b/c/build-tools/scripts/Makefile.in
@@ -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)
diff --git a/c/build-tools/scripts/README b/c/build-tools/scripts/README
index 0436fc958d..0738a5830e 100644
--- a/c/build-tools/scripts/README
+++ b/c/build-tools/scripts/README
@@ -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.
-
diff --git a/c/build-tools/scripts/install-if-change.in b/c/build-tools/scripts/install-if-change.in
new file mode 100644
index 0000000000..b2f3cb04bb
--- /dev/null
+++ b/c/build-tools/scripts/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: ***
diff --git a/c/build-tools/scripts/lock-directory.in b/c/build-tools/scripts/lock-directory.in
new file mode 100644
index 0000000000..1c205cdec0
--- /dev/null
+++ b/c/build-tools/scripts/lock-directory.in
@@ -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: ***
+
diff --git a/c/build-tools/scripts/rcs-clean.in b/c/build-tools/scripts/rcs-clean.in
new file mode 100644
index 0000000000..83fed05128
--- /dev/null
+++ b/c/build-tools/scripts/rcs-clean.in
@@ -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: ***
diff --git a/c/build-tools/scripts/unlock-directory.in b/c/build-tools/scripts/unlock-directory.in
new file mode 100644
index 0000000000..c63ceff881
--- /dev/null
+++ b/c/build-tools/scripts/unlock-directory.in
@@ -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: ***
+
diff --git a/c/build-tools/unlock-directory.in b/c/build-tools/unlock-directory.in
new file mode 100644
index 0000000000..c63ceff881
--- /dev/null
+++ b/c/build-tools/unlock-directory.in
@@ -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: ***
+
diff --git a/c/src/exec/score/tools/generic/Makefile.in b/c/src/exec/score/tools/generic/Makefile.in
index 4586a43b45..33c2fb81dd 100644
--- a/c/src/exec/score/tools/generic/Makefile.in
+++ b/c/src/exec/score/tools/generic/Makefile.in
@@ -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)
diff --git a/c/src/lib/libbsp/sparc/erc32/tools/Makefile.in b/c/src/lib/libbsp/sparc/erc32/tools/Makefile.in
index 97f24fac0a..d6126b1eb8 100644
--- a/c/src/lib/libbsp/sparc/erc32/tools/Makefile.in
+++ b/c/src/lib/libbsp/sparc/erc32/tools/Makefile.in
@@ -10,17 +10,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)/tests
-PGMS=runtest
+BUILD_PGMS = runtest
+PGMS = $(BUILD_PGMS)
-INSTALLED=$(PGMS:%=$(DESTDIR)/%)
+CLEAN_ADDITIONS += $(BUILD_PGMS)
+
+INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
all: $(DESTDIR) $(PGMS) install
-install: $(INSTALLED)
+$(DESTDIR):
+ @INSTALL@ $(INSTDIRFLAGS) $@
+
+$(INSTALLED_PGMS): $(PGMS)
+ @INSTALL@ $(INSTBINFLAGS) $^ $(DESTDIR)
-# Install the program
-$(DESTDIR)/%: %
- $(make-script)
+install: $(DESTDIR) $(INSTALLED_PGMS)
diff --git a/c/src/lib/libbsp/sparc/erc32/tools/runtest.in b/c/src/lib/libbsp/sparc/erc32/tools/runtest.in
new file mode 100644
index 0000000000..f45517e951
--- /dev/null
+++ b/c/src/lib/libbsp/sparc/erc32/tools/runtest.in
@@ -0,0 +1,307 @@
+#!@KSH@ -p
+#
+# $Id$
+#
+# Run rtems tests on the hppa simulator
+# This program generates a simulator script to run each test
+# Typically the test is then run, although it can be generated
+# and left as a file using -s
+#
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+USAGE=\
+"usage: $progname [ -opts ] test [ test ... ]
+ -o options -- specify options to be passed to simulator
+ -v -- verbose
+ -s -- generate script file (as 'test'.ss) and exit
+ -l logdir -- specify log directory (default is 'logdir')
+
+ Specify test as 'test' or 'test.exe'.
+ All multiprocessing tests *must* be specified simply as 'mp01', etc.
+"
+
+# export everything
+set -a
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+# print args, 1 per line
+ml_echo()
+{
+ for l
+ do
+ echo "$l"
+ done
+}
+
+# run at normal and signalled exit
+test_exit()
+{
+ exit_code=$1
+
+ rm -f ${statfile}* ${scriptfile}* ${logfile}.tmp*
+ [ "$sim_pid" ] && kill -9 $sim_pid
+
+ exit $exit_code
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+# max_run_time is defaulted to 5 minutes
+#
+
+verbose=""
+extra_options=""
+script_and_exit=""
+stdio_setup="yes"
+run_to_completion="yes"
+logdir=log
+update_on_tick="no"
+max_run_time=$((5 * 60))
+using_print_buffer="yes"
+
+while getopts vhr12o:c:sl:t OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ s)
+ script_and_exit="yes"
+ run_to_completion="no"
+ stdio_setup="no";;
+ l)
+ logdir="$OPTARG";;
+ o)
+ extra_options="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] ||
+ mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+cpus=1
+
+# where the tmp files go
+statfile=/tmp/stats$$
+scriptfile=/tmp/script$$
+
+trap "test_exit" 1 2 3 13 14 15
+
+for tfile in $tests
+do
+
+ tname=`basename $tfile .exe`
+ TEST_TYPE="single"
+
+ case $tname in
+ monitor)
+ if [ $run_to_completion = "yes" ]
+ then
+ warn "Skipping $tname; it is interactive"
+ continue
+ fi
+ ;;
+ *-node2*)
+ fatal "MP tests not supported"
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue;;
+ *-node1*)
+ fatal "MP tests not supported"
+ warn "Running both nodes associated with $tname"
+ tname=`echo $tname | sed 's/-node.*//'`
+ TEST_TYPE="mp"
+ ;;
+ stackchk*|spfatal*|malloctest*|termio*)
+ warn "Skipping $tname; it locks up or takes a VERY long time to run"
+ continue
+ ;;
+ esac
+
+ # Change the title bar to indicate which test we are running
+ # The simulator screen doesn't provide any indication
+
+ logfile=$logdir/$tname
+ infofile=$logfile.info
+
+ rm -f ${statfile}* ${scriptfile}* ${logfile}.tmp*
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ # Generate a script file to get the work done.
+ # The script file must do the following:
+ #
+ # load the program (programs if MP test)
+ # arrange for capture of output
+ # run the program
+ # produce statistics
+
+ {
+ case $TEST_TYPE in
+ "mp")
+ fatal "MP tests not supported"
+ ;;
+
+ # All other tests (single-processor)
+ *)
+ echo "load $tfile"
+ echo "go 0x02000000"
+ echo "perf"
+ echo "quit"
+ ;;
+ esac
+
+ } > ${scriptfile}
+
+ if [ "$script_and_exit" = "yes" ]
+ then
+ mv ${scriptfile} $tname.ss
+ warn "script left in $tname.ss"
+ test_exit 0
+ fi
+
+ # Spin off the simulator in the background
+ sparc-rtems-sis $extra_options -c ${scriptfile} >${logfile}.tmp &
+ sim_pid=$!
+
+ # Make sure it won't run forever...
+ {
+ time_run=0
+ while [ $time_run -lt $max_run_time ]
+ do
+ # sleep 10s at a time waiting for job to finish or timer to expire
+ # if job has exited, then we exit, too.
+ sleep 10
+ if kill -0 $sim_pid 2>/dev/null
+ then
+ time_run=$((time_run + 10))
+ else
+ exit 0
+ fi
+ done
+
+ kill -2 $sim_pid 2>/dev/null
+ { sleep 5; kill -9 $sim_pid 2>/dev/null; } &
+ } &
+
+ wait $sim_pid
+ status=$?
+ if [ $status -ne 0 ]
+ then
+ ran_too_long="yes"
+ else
+ ran_too_long="no"
+ fi
+
+ sim_pid=""
+
+ # fix up the printf output from the test
+ case $TEST_TYPE in
+ mp)
+ fatal "MP not supported"
+ ;;
+ *)
+ output_it=1
+ sed -e '1,12d' \
+ -e 's/ //' -e '/^$/d' < ${logfile}.tmp |
+ while read line
+ do
+ if [ $output_it -eq 1 ] ; then
+ if [ "$line" = "sis> perf" ] ; then
+ output_it=0
+ else
+ echo "$line"
+ fi
+ fi
+ done > ${logfile}_1
+ ;;
+ esac
+
+ # Create the info files
+ for cpu in $cpus
+ do
+ {
+ echo "$date"
+ echo "Test run on: `uname -n` ( `uname -a` )"
+
+ output_it=0
+ sed -e 's/ //' < ${logfile}.tmp |
+ while read line
+ do
+ if [ $output_it -eq 1 ] ; then
+ if [ "$line" = "sis> quit" ] ; then
+ output_it=0
+ else
+ echo "$line"
+ fi
+ else
+ if [ "$line" = "sis> perf" ] ; then
+ output_it=1
+ fi
+ fi
+ done
+
+
+ if [ "$ran_too_long" = "yes" ]
+ then
+ echo "Test did NOT finish normally; killed after $max_run_time seconds"
+ fi
+
+ echo
+ date;
+ } > ${infofile}_$cpu
+ done
+
+ rm -f ${logfile}.tmp*
+
+ if [ "$cpus" = "1" ]
+ then
+ mv ${infofile}_1 ${infofile}
+ mv ${logfile}_1 ${logfile}
+ fi
+
+done
+
+test_exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+
diff --git a/c/src/lib/libbsp/unix/posix/tools/Makefile.in b/c/src/lib/libbsp/unix/posix/tools/Makefile.in
index 0fd219ab05..f455ef46d4 100644
--- a/c/src/lib/libbsp/unix/posix/tools/Makefile.in
+++ b/c/src/lib/libbsp/unix/posix/tools/Makefile.in
@@ -10,22 +10,28 @@ 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)/tests
# We use the generic difftest
-PGMS=runtest looptest semdump shmdump
+BUILD_PGMS=runtest looptest
+ifneq (@PERL@,)
+BUILD_PGMS+=semdump shmdump
+endif
-INSTALLED=$(PGMS:%=$(DESTDIR)/%)
+PGMS = $(BUILD_PGMS)
+
+CLEAN_ADDITIONS += $(BUILD_PGMS)
+
+INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
all: $(DESTDIR) $(PGMS) install
-install: $(INSTALLED)
+$(DESTDIR):
+ @INSTALL@ $(INSTDIRFLAGS) $@
+
+$(INSTALLED_PGMS): $(PGMS)
+ @INSTALL@ $(INSTBINFLAGS) $^ $(DESTDIR)
-# Install the program, replacing #!KSHELL with $(KSH)
-# and first line #!SHELL with $(SHELL)
-$(DESTDIR)/%: %
- -$(RM) $@.old
- -$(MV) $@ $@.old >/dev/null 2>&1
- $(SED) -e '1,1s?^#!KSHELL?#!$(KSH)?' -e '1,1s?^#!SHELL?#!$(SHELL)?' < $< > $@
- $(CHMOD) 0555 $@
+install: $(DESTDIR) $(INSTALLED_PGMS)
diff --git a/c/src/lib/libbsp/unix/posix/tools/looptest.in b/c/src/lib/libbsp/unix/posix/tools/looptest.in
new file mode 100644
index 0000000000..0f6965fe2b
--- /dev/null
+++ b/c/src/lib/libbsp/unix/posix/tools/looptest.in
@@ -0,0 +1,93 @@
+#!@KSH@ -p
+#
+# $Id$
+#
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+# must be uppercase hex; dc is feeble minded
+clicks_per_tick="1"
+# default is 0x3
+hexbump=1
+iterations=10
+
+USAGE=\
+"usage: $progname [ -opts ] file [ file ... ]
+ -o options -- specify options to be passed to runtest
+ -c clicks -- specify (hex) value for clicks / tick (default $clicks_per_tick)
+ -n iterations -- num times to loop thru specified tests (default $iterations)
+ -b hexbump -- increment clicks-per-ticks this much each loop (default $hexbump)
+ -v -- verbose"
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+
+verbose=""
+extra_options=""
+
+while getopts vo:c:n:b: OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ o)
+ extra_options="$OPTARG";;
+ c)
+ clicks_per_ticks="$OPTARG";;
+ n)
+ iterations="$OPTARG";;
+ b)
+ hexbump="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Run the tests
+# After each run, rename 'log' to log.$clicks_per_tick
+#
+
+tests="$args"
+
+while [ $iterations -gt 0 ]
+do
+ ./runtest $extra_options -c $clicks_per_tick $tests
+ rm -rf log.$clicks_per_tick.OLD
+ [ -d log.$clicks_per_tick ] && mv log.$clicks_per_tick log.$clicks_per_tick.OLD
+ mv log log.$clicks_per_tick
+
+ ((iterations = $iterations - 1))
+ clicks_per_tick=`echo 16 o 16 i $clicks_per_tick $hexbump + p q | dc`
+done
+
+exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+
diff --git a/c/src/lib/libbsp/unix/posix/tools/runtest.in b/c/src/lib/libbsp/unix/posix/tools/runtest.in
new file mode 100644
index 0000000000..2d08f2f033
--- /dev/null
+++ b/c/src/lib/libbsp/unix/posix/tools/runtest.in
@@ -0,0 +1,255 @@
+#!@KSH@ -p
+#
+# Run rtems tests on a POSIX-ish UNIX
+#
+# $Id$
+#
+
+trap "test_exit 1" 1 2 3 13 14 15
+
+trap "test_exit 1" 1 2 3 13 14 15
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+USAGE=\
+"usage: $progname [ -opts ] test [ test ... ]
+ -c clicks -- specify (hex) value for clicks / tick
+ -v -- verbose
+ -l logdir -- specify log directory (default is 'logdir')
+
+ Specify test as 'test' or 'test.exe'.
+ All multiprocessing tests *must* be specified simply as 'mp01', etc.
+"
+
+# export everything
+set -a
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+# print args, 1 per line
+ml_echo()
+{
+ for l
+ do
+ echo "$l"
+ done
+}
+
+killem()
+{
+ kill -9 $pid $pid1 $pid2 2> /dev/null
+}
+
+
+killem()
+{
+ kill -9 $pid $pid1 $pid2 2> /dev/null
+}
+
+
+test_exit()
+{
+ exit_code=$1
+
+ killem
+
+ killem
+
+ rm -f ${logfile}.tmp*
+
+ exit $exit_code
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+
+verbose=""
+extra_options=""
+clicks_per_tick=""
+logdir=log
+# how long can we run; rtems tests might run 300 seconds
+max_run_time=400
+run_to_completion="yes"
+
+while getopts vo:c:l: OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ l)
+ logdir="$OPTARG";;
+ o)
+ extra_options="$OPTARG";;
+ c)
+ clicks_per_tick="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] || mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+for tfile in $tests
+do
+
+ tname=`echo $tfile | sed -e 's/\.exe$//'`
+ tname=`basename $tname`
+
+ TEST_TYPE="single"
+
+ case $tname in
+ monitor)
+ if [ $run_to_completion = "yes" ]
+ then
+ warn "Skipping $tname; it is interactive"
+ continue
+ fi
+ ;;
+ *-node2*)
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue;;
+ *-node1*)
+ tname=`echo $tname | sed 's/-node.*//'`
+ warn "Running both nodes associated with $tname"
+ TEST_TYPE="mp"
+ ;;
+ stackchk*|spfatal*|malloctest*|termio*)
+ warn "Skipping $tname; it locks up or takes a VERY long time to run"
+ continue
+ ;;
+ esac
+
+ if [ $TEST_TYPE = "mp" ]
+ then
+ logfile1=$logdir/${tname}_1
+ infofile1=$logfile1.info
+ logfile2=$logdir/${tname}_2
+ infofile2=$logfile2.info
+
+ rm -f ${logfile1}
+ rm -f ${logfile2}
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ ./${tname}-node1.exe > $logfile1 2>&1 &
+ pid1=$!
+ ./${tname}-node2.exe > $logfile2 2>&1 &
+ pid2=$!
+
+ # Wait for both cpu's to complete, ensuring they don't run forever...
+ time_run=0
+ while [ $time_run -lt $max_run_time ]
+ do
+ # sleep 5s at a time waiting for jobs to finish or timer to expire
+ # if job has exited, then we exit, too.
+ sleep 5
+ kill -0 $pid1 2> /dev/null
+ running1=$?
+ kill -0 $pid2 2> /dev/null
+ running2=$?
+ if [ $running1 -eq 0 ] && [ $running2 -eq 0 ] # both still running
+ then
+ time_run=$((time_run + 5))
+ if [ $time_run -ge $max_run_time ]
+ then
+ echo "$tname ran too long; killing it"
+ ran_too_long="yes"
+ fi
+ else
+ ran_too_long="no"
+ # if one is still running, have to kill them
+ if [ $running1 -ne $running2 ]
+ then
+ sleep 10 # give other node a chance to gracefully die
+ fi
+ break
+ fi
+ done
+
+ # make sure they are gone
+ kill -9 $pid1 2> /dev/null
+ kill -9 $pid2 2> /dev/null
+ fi
+
+ if [ $TEST_TYPE = "single" ]
+ then
+ logfile=$logdir/$tname
+ infofile=$logfile.info
+
+ rm -f ${logfile}
+
+ date=`date`
+ echo "Starting $tname.exe at $date"
+
+ ./$tname.exe > $logfile 2>&1 &
+ pid=$!
+
+ # Make sure it won't run forever...
+ time_run=0
+ while [ $time_run -lt $max_run_time ]
+ do
+ # sleep 5s at a time waiting for job to finish or timer to expire
+ # if job has exited, then we exit, too.
+ sleep 5
+ kill -0 $pid 2> /dev/null
+ running=$?
+ if [ $running -eq 0 ]
+ then
+ time_run=$((time_run + 5))
+ if [ $time_run -ge $max_run_time ]
+ then
+ kill -9 $pid 2> /dev/null
+ ran_too_long="yes"
+ fi
+ else
+ ran_too_long="no"
+ break
+ fi
+ done
+ fi
+
+ pid=""
+
+done
+
+test_exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+
diff --git a/c/src/lib/libbsp/unix/posix/tools/semdump.in b/c/src/lib/libbsp/unix/posix/tools/semdump.in
new file mode 100644
index 0000000000..53710a629e
--- /dev/null
+++ b/c/src/lib/libbsp/unix/posix/tools/semdump.in
@@ -0,0 +1,59 @@
+#!@PERL@
+#
+# $Id$
+#
+eval "exec @PERL@ -S $0 $*"
+ if $running_under_some_shell;
+
+# dump semaphore array values tony@divnc.com
+
+require 'sys/sem.ph';
+require 'getopts.pl';
+&Getopts("vhi:k:"); # verbose, help, id, key
+
+if ($opt_h || ($opt_i && $opt_k))
+{
+ print STDERR <<NO_MORE_HELP;
+semdump
+
+ Dump info about specified semaphore.
+
+Usage: $0 [-v] { -i semid | -k semkey }
+
+ -v -- possibly more verbose
+ -i semid -- semaphore id
+ -k semkey -- semaphore key
+ -h -- help
+
+ anything else == this help message
+NO_MORE_HELP
+ exit 1;
+}
+
+$verbose = $opt_v;
+$id = $opt_i;
+$key = $opt_k;
+
+if ($key)
+{
+ $key = oct($key) if $key =~ /^0/;
+ die "Could not convert key to id; $!" unless $id = semget($key, 1, 0);
+}
+
+# I don't know to find out how many sem's are attached to the id
+# so just keep reading them until we get an error.
+
+printf("KEY: 0x%X (%d) ", $key, $key) if $key;
+print "ID: $id\n";
+
+semlist:
+for ($semnum=0; $semnum < 10; $semnum++)
+{
+ $val = semctl($id, $semnum, &GETVAL, 0);
+ $val || ($val = -1);
+
+ last semlist if ($val == -1);
+
+ printf " %d: %d\n", $semnum, $val;
+}
+
diff --git a/c/src/lib/libbsp/unix/posix/tools/shmdump.in b/c/src/lib/libbsp/unix/posix/tools/shmdump.in
new file mode 100644
index 0000000000..fa965702ca
--- /dev/null
+++ b/c/src/lib/libbsp/unix/posix/tools/shmdump.in
@@ -0,0 +1,134 @@
+#!@PERL@
+#
+# $Id$
+#
+eval "exec @PERL@ -S $0 $*"
+ if $running_under_some_shell;
+
+# dump shared memory segment tony@divnc.com
+
+require 'sys/shm.ph';
+require 'getopts.pl';
+&Getopts("vhi:k:f:l:b:w"); # verbose, help, id, key, first, length, word, base
+
+if ($opt_h || ($opt_i && $opt_k))
+{
+ print STDERR <<NO_MORE_HELP;
+shmdump
+
+ Dump contents of specifed shared memory segment.
+
+Usage: $0 [options]
+
+ -h -- help
+ -v -- possibly more verbose
+ -i shmid -- shm id
+ -k shmkey -- shm key
+ -f first -- start of partial dump
+ -l length -- length of partial dump
+ -w -- dump as 4byte words instead of bytes
+ -b base -- use 'base' as base address for output
+
+ anything else == this help message
+NO_MORE_HELP
+ exit 1;
+}
+
+$verbose = $opt_v;
+$id = $opt_i;
+$key = $opt_k;
+$offset = $opt_f;
+$print_length = $opt_l;
+$base = $opt_b;
+$word_dump = $opt_w;
+
+if ($key)
+{
+ # ensure key is an integer
+ $key = oct($key) if $key =~ /^0/;
+ die "Could not convert key to id; $!" unless $id = shmget($key, 1, 0);
+}
+
+# ensure integerhood in case of leading '0x'
+$base = oct($base) if $base =~ /^0/;
+$offset = oct($offset) if $offset =~ /^0/;
+$print_length = oct($print_length) if $print_length =~ /^0/;
+
+if ( ! shmctl($id, &IPC_STAT, $shmid_ds))
+{
+ die "shmctl(2) for id $id failed -- (I was trying to get size): $!";
+}
+
+# Pick the length out.
+# It is at byte offset 0x30 on hpux9 and probably hpux10
+# Also get the key if we don't have it already. Don't need it tho...
+$length = unpack("I", substr($shmid_ds, 0x30, 4));
+$key = unpack("I", substr($shmid_ds, 0x14, 4)) if ! $key;
+
+# poke around looking for length and key
+# print "I guess: length: $length, key: $key\n";
+# print "****$shmid_ds****\n"; die "";
+
+# make sure offset and print length make sense
+$print_length = $length if ! $print_length;
+if (($offset + $print_length) > $length)
+{
+ die "offset ($offset) and length ($print_length) go beyond end of segment ($length bytes)";
+}
+
+printf("KEY: 0x%X (%d) ", $key, $key) if ($key);
+printf "ID: $id\n";
+printf " %d bytes (0x%X), %d words, logical base is 0x%X\n",
+ $length, $length, $length / 4, $base;
+if ($offset || ($print_length != $length))
+{
+ printf " printing %X (%d) bytes starting at offset 0x%X (%d)\n",
+ $print_length, $print_length, $offset, $offset;
+}
+printf "\n";
+
+if ( ! shmread($id, $shm_data, $offset, $print_length))
+{
+ die "could not attach and read from shmid $id: $!";
+}
+
+# the dump code below derived from "Real Perl Programs" example "xdump"
+# from Camel book
+
+$base += $offset;
+$offset = 0;
+for ($len = $print_length; $len >= 16; )
+{
+ $data = substr($shm_data, $offset, 16);
+
+ @array = unpack('N4', $data);
+ $data =~ tr/\0-\37\177-\377/./;
+ printf "%8.8lX %8.8lX %8.8lX %8.8lX %8.8lX |%s|\n",
+ $base, @array, $data;
+
+ $offset += 16;
+ $base += 16;
+ $len -= 16;
+}
+
+# Now finish up the end a byte at a time
+
+if ($len)
+{
+ $data = substr($shm_data, $offset, $len);
+ @array = unpack('C*', $data);
+ for (@array)
+ {
+ $_ = sprintf('%2.2X', $_);
+ }
+
+ push(@array, ' ') while $len++ < 16;
+
+ $data =~ tr/\0-\37\177-\377/./;
+ $data =~ s/[^ -~]/./g;
+
+ printf "%8.8lX ", $base;
+ printf "%s%s%s%s %s%s%s%s %s%s%s%s %s%s%s%s |%-16s|\n",
+ @array, $data;
+}
+
diff --git a/c/update-tools/Makefile.in b/c/update-tools/Makefile.in
index 142bece1f1..45e3e63515 100644
--- a/c/update-tools/Makefile.in
+++ b/c/update-tools/Makefile.in
@@ -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
-MISC_SUPPORT=310_to_320_list
+BUILD_PGMS = update
+ifneq (@PERL@,)
+BUILD_PGMS += word-replace
+endif
-INSTALL_LIST= $(PGMS) $(MISC_SUPPORT)
+PGMS = $(BUILD_PGMS)
-INSTALLED=$(INSTALL_LIST:%=$(DESTDIR)/%)
+CLEAN_ADDITIONS += $(BUILD_PGMS)
+
+MISC_SUPPORT=310_to_320_list
-all: $(DESTDIR)
+INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
+INSTALLED_DATA=$(MISC_SUPPORT:%=$(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}
diff --git a/c/update-tools/update.in b/c/update-tools/update.in
new file mode 100644
index 0000000000..cdcb07655e
--- /dev/null
+++ b/c/update-tools/update.in
@@ -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: ***
diff --git a/c/update-tools/word-replace.in b/c/update-tools/word-replace.in
new file mode 100644
index 0000000000..24c7c3a546
--- /dev/null
+++ b/c/update-tools/word-replace.in
@@ -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;
+}
+
diff --git a/configure b/configure
index 681c0cec7f..88c9463817 100644
--- a/configure
+++ b/configure
@@ -1152,11 +1152,47 @@ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1159: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$PERL" in
+ /*)
+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_PERL="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ ;;
+esac
+fi
+PERL="$ac_cv_path_PERL"
+if test -n "$PERL"; then
+ echo "$ac_t""$PERL" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$PERL" ; then
+echo "configure: warning: ***
+ perl was not found
+ Note: Some tools will not be built." 1>&2
+fi
# Extract the first word of "mkdir", so it can be a program name with args.
set dummy mkdir; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1160: checking for $ac_word" >&5
+echo "configure:1196: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1188,7 +1224,7 @@ fi
echo $ac_n "checking for working $MKDIR -m 0755""... $ac_c" 1>&6
-echo "configure:1192: checking for working $MKDIR -m 0755" >&5
+echo "configure:1228: checking for working $MKDIR -m 0755" >&5
if eval "test \"`echo '$''{'rtems_cv_prog_MKDIR_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1205,7 +1241,7 @@ echo "$ac_t""$rtems_cv_prog_MKDIR_M" 1>&6
echo $ac_n "checking for working $MKDIR -p""... $ac_c" 1>&6
-echo "configure:1209: checking for working $MKDIR -p" >&5
+echo "configure:1245: checking for working $MKDIR -p" >&5
if eval "test \"`echo '$''{'rtems_cv_prog_mkdir_p'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1225,7 +1261,7 @@ test "$rtems_cv_prog_MKDIR_P" = "yes" && MKDIR="$MKDIR -p"
# Extract the first word of "touch", so it can be a program name with args.
set dummy touch; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1229: checking for $ac_word" >&5
+echo "configure:1265: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_TOUCH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1256,7 +1292,7 @@ fi
# Extract the first word of "cmp", so it can be a program name with args.
set dummy cmp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1260: checking for $ac_word" >&5
+echo "configure:1296: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1288,7 +1324,7 @@ fi
# Extract the first word of "sed", so it can be a program name with args.
set dummy sed; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1292: checking for $ac_word" >&5
+echo "configure:1328: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SED'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1321,7 +1357,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1325: checking for $ac_word" >&5
+echo "configure:1361: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_M4'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1358,7 +1394,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1362: checking for $ac_word" >&5
+echo "configure:1398: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1436,7 +1472,7 @@ case "${target}" in
;;
*)
echo $ac_n "checking rtems target cpu""... $ac_c" 1>&6
-echo "configure:1440: checking rtems target cpu" >&5
+echo "configure:1476: checking rtems target cpu" >&5
target_cpu=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'`
echo "$ac_t""$target_cpu" 1>&6
@@ -1455,7 +1491,7 @@ fi
# Is this a supported CPU?
echo $ac_n "checking if cpu $target_cpu is supported""... $ac_c" 1>&6
-echo "configure:1459: checking if cpu $target_cpu is supported" >&5
+echo "configure:1495: checking if cpu $target_cpu is supported" >&5
if test -d "$srcdir/c/src/exec/score/cpu/$target_cpu"; then
echo "$ac_t""yes" 1>&6
makefiles="$makefiles c/src/exec/score/cpu/$target_cpu/Makefile"
@@ -1480,7 +1516,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1484: checking for $ac_word" >&5
+echo "configure:1520: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CC_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1520,7 +1556,7 @@ rtems_save_CFLAGS=$CFLAGS
CC=$CC_FOR_TARGET
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1524: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1560: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1530,11 +1566,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 1534 "configure"
+#line 1570 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1554,12 +1590,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1558: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1594: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1563: checking whether we are using GNU C" >&5
+echo "configure:1599: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1568,7 +1604,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1583,7 +1619,7 @@ if test $ac_cv_prog_gcc = yes; then
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1587: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1623: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1625,7 +1661,7 @@ unset ac_cv_prog_cc_cross
echo $ac_n "checking whether $CC_FOR_TARGET accepts -specs""... $ac_c" 1>&6
-echo "configure:1629: checking whether $CC_FOR_TARGET accepts -specs" >&5
+echo "configure:1665: checking whether $CC_FOR_TARGET accepts -specs" >&5
if eval "test \"`echo '$''{'rtems_cv_gcc_specs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1646,7 +1682,7 @@ echo "$ac_t""$rtems_cv_gcc_specs" 1>&6
echo $ac_n "checking whether $CC_FOR_TARGET accepts --pipe""... $ac_c" 1>&6
-echo "configure:1650: checking whether $CC_FOR_TARGET accepts --pipe" >&5
+echo "configure:1686: checking whether $CC_FOR_TARGET accepts --pipe" >&5
if eval "test \"`echo '$''{'rtems_cv_gcc_pipe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1687,7 +1723,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1691: checking for $ac_word" >&5
+echo "configure:1727: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CXX_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1727,7 +1763,7 @@ rtems_save_CXXFLAGS=$CXXFLAGS
CXX=$CXX_FOR_TARGET
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1731: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1767: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1737,11 +1773,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 1741 "configure"
+#line 1777 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1767,12 +1803,12 @@ if test $ac_cv_prog_cxx_works = no; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1771: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1807: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1776: checking whether we are using GNU C++" >&5
+echo "configure:1812: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1781,7 +1817,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
@@ -1796,7 +1832,7 @@ if test $ac_cv_prog_gxx = yes; then
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1800: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1836: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1850,7 +1886,7 @@ fi
echo $ac_n "checking target's ar""... $ac_c" 1>&6
-echo "configure:1854: checking target's ar" >&5
+echo "configure:1890: checking target's ar" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1883,7 +1919,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable AR_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:1887: checking whether environment variable AR_FOR_TARGET is an absolute path" >&5
+echo "configure:1923: checking whether environment variable AR_FOR_TARGET is an absolute path" >&5
case "$AR_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -1900,7 +1936,7 @@ echo "configure:1887: checking whether environment variable AR_FOR_TARGET is an
# Extract the first word of ""$program_prefix"ar", so it can be a program name with args.
set dummy "$program_prefix"ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1904: checking for $ac_word" >&5
+echo "configure:1940: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1933,7 +1969,7 @@ fi
echo $ac_n "checking target's as""... $ac_c" 1>&6
-echo "configure:1937: checking target's as" >&5
+echo "configure:1973: checking target's as" >&5
if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1966,7 +2002,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable AS_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:1970: checking whether environment variable AS_FOR_TARGET is an absolute path" >&5
+echo "configure:2006: checking whether environment variable AS_FOR_TARGET is an absolute path" >&5
case "$AS_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -1983,7 +2019,7 @@ echo "configure:1970: checking whether environment variable AS_FOR_TARGET is an
# Extract the first word of ""$program_prefix"as", so it can be a program name with args.
set dummy "$program_prefix"as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1987: checking for $ac_word" >&5
+echo "configure:2023: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2016,7 +2052,7 @@ fi
echo $ac_n "checking target's ld""... $ac_c" 1>&6
-echo "configure:2020: checking target's ld" >&5
+echo "configure:2056: checking target's ld" >&5
if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2049,7 +2085,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable LD_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2053: checking whether environment variable LD_FOR_TARGET is an absolute path" >&5
+echo "configure:2089: checking whether environment variable LD_FOR_TARGET is an absolute path" >&5
case "$LD_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2066,7 +2102,7 @@ echo "configure:2053: checking whether environment variable LD_FOR_TARGET is an
# Extract the first word of ""$program_prefix"ld", so it can be a program name with args.
set dummy "$program_prefix"ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2070: checking for $ac_word" >&5
+echo "configure:2106: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2099,7 +2135,7 @@ fi
echo $ac_n "checking target's nm""... $ac_c" 1>&6
-echo "configure:2103: checking target's nm" >&5
+echo "configure:2139: checking target's nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2132,7 +2168,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable NM_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2136: checking whether environment variable NM_FOR_TARGET is an absolute path" >&5
+echo "configure:2172: checking whether environment variable NM_FOR_TARGET is an absolute path" >&5
case "$NM_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2149,7 +2185,7 @@ echo "configure:2136: checking whether environment variable NM_FOR_TARGET is an
# Extract the first word of ""$program_prefix"nm", so it can be a program name with args.
set dummy "$program_prefix"nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2153: checking for $ac_word" >&5
+echo "configure:2189: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2183,7 +2219,7 @@ fi
echo $ac_n "checking target's ranlib""... $ac_c" 1>&6
-echo "configure:2187: checking target's ranlib" >&5
+echo "configure:2223: checking target's ranlib" >&5
if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2216,7 +2252,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable RANLIB_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2220: checking whether environment variable RANLIB_FOR_TARGET is an absolute path" >&5
+echo "configure:2256: checking whether environment variable RANLIB_FOR_TARGET is an absolute path" >&5
case "$RANLIB_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2233,7 +2269,7 @@ echo "configure:2220: checking whether environment variable RANLIB_FOR_TARGET is
# Extract the first word of ""$program_prefix"ranlib", so it can be a program name with args.
set dummy "$program_prefix"ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2237: checking for $ac_word" >&5
+echo "configure:2273: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2268,7 +2304,7 @@ fi
# ranlib wasn't found; check if ar -s is available
echo $ac_n "checking whether $AR_FOR_TARGET -s works""... $ac_c" 1>&6
-echo "configure:2272: checking whether $AR_FOR_TARGET -s works" >&5
+echo "configure:2308: checking whether $AR_FOR_TARGET -s works" >&5
if eval "test \"`echo '$''{'rtems_cv_AR_FOR_TARGET_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2277,8 +2313,8 @@ cat > conftest.$ac_ext <<EOF
int foo( int b )
{ return b; }
EOF
-if { ac_try='$CC_FOR_TARGET -o conftest.o -c conftest.$ac_ext'; { (eval echo configure:2281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
- && { ac_try='$AR_FOR_TARGET -sr conftest.a conftest.o'; { (eval echo configure:2282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+if { ac_try='$CC_FOR_TARGET -o conftest.o -c conftest.$ac_ext'; { (eval echo configure:2317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+ && { ac_try='$AR_FOR_TARGET -sr conftest.a conftest.o'; { (eval echo configure:2318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
&& test -s conftest.a ; \
then
rtems_cv_AR_FOR_TARGET_S="yes"
@@ -2303,7 +2339,7 @@ echo "$ac_t""$rtems_cv_AR_FOR_TARGET_S" 1>&6
echo $ac_n "checking target's objcopy""... $ac_c" 1>&6
-echo "configure:2307: checking target's objcopy" >&5
+echo "configure:2343: checking target's objcopy" >&5
if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2336,7 +2372,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2340: checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path" >&5
+echo "configure:2376: checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path" >&5
case "$OBJCOPY_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2353,7 +2389,7 @@ echo "configure:2340: checking whether environment variable OBJCOPY_FOR_TARGET i
# Extract the first word of ""$program_prefix"objcopy", so it can be a program name with args.
set dummy "$program_prefix"objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2357: checking for $ac_word" >&5
+echo "configure:2393: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2386,7 +2422,7 @@ fi
echo $ac_n "checking target's size""... $ac_c" 1>&6
-echo "configure:2390: checking target's size" >&5
+echo "configure:2426: checking target's size" >&5
if eval "test \"`echo '$''{'ac_cv_path_SIZE_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2419,7 +2455,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable SIZE_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2423: checking whether environment variable SIZE_FOR_TARGET is an absolute path" >&5
+echo "configure:2459: checking whether environment variable SIZE_FOR_TARGET is an absolute path" >&5
case "$SIZE_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2436,7 +2472,7 @@ echo "configure:2423: checking whether environment variable SIZE_FOR_TARGET is a
# Extract the first word of ""$program_prefix"size", so it can be a program name with args.
set dummy "$program_prefix"size; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2440: checking for $ac_word" >&5
+echo "configure:2476: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SIZE_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2471,7 +2507,7 @@ fi
if test "${target_cpu}" = "i386"; then
echo $ac_n "checking for 16 bit mode assembler support""... $ac_c" 1>&6
-echo "configure:2475: checking for 16 bit mode assembler support" >&5
+echo "configure:2511: checking for 16 bit mode assembler support" >&5
if eval "test \"`echo '$''{'rtems_cv_prog_gas_code16'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2481,7 +2517,7 @@ else
addr32
lgdt 0
EOF
- if { ac_try='$AS_FOR_TARGET -o conftest.o conftest.s'; { (eval echo configure:2485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='$AS_FOR_TARGET -o conftest.o conftest.s'; { (eval echo configure:2521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
rtems_cv_prog_gas_code16=yes
else
rtems_cv_prog_gas_code16=no
@@ -2496,7 +2532,7 @@ echo "$ac_t""$rtems_cv_prog_gas_code16" 1>&6
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2500: checking for $ac_word" >&5
+echo "configure:2536: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2525,7 +2561,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2529: checking for $ac_word" >&5
+echo "configure:2565: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2573,7 +2609,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2577: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2613: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -2583,11 +2619,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2587 "configure"
+#line 2623 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:2591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -2607,12 +2643,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2611: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2647: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2616: checking whether we are using GNU C" >&5
+echo "configure:2652: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2621,7 +2657,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2661: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -2636,7 +2672,7 @@ if test $ac_cv_prog_gcc = yes; then
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2640: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2676: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2665,19 +2701,19 @@ fi
echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6
-echo "configure:2669: checking for Cygwin32 environment" >&5
+echo "configure:2705: checking for Cygwin32 environment" >&5
if eval "test \"`echo '$''{'rtems_cv_cygwin32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2674 "configure"
+#line 2710 "configure"
#include "confdefs.h"
int main() {
return __CYGWIN32__;
; return 0; }
EOF
-if { (eval echo configure:2681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2717: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
rtems_cv_cygwin32=yes
else
@@ -2695,7 +2731,7 @@ CYGWIN32=
test "$rtems_cv_cygwin32" = yes && CYGWIN32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:2699: checking for executable suffix" >&5
+echo "configure:2735: checking for executable suffix" >&5
if eval "test \"`echo '$''{'rtems_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2736,12 +2772,12 @@ test "$ac_cv_prog_cc_g" = "yes" && CC_CFLAGS_DEBUG_V=${CC_CFLAGS_DEBUG_V-"-g"}
for ac_func in strerror
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2740: checking for $ac_func" >&5
+echo "configure:2776: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2745 "configure"
+#line 2781 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2764,7 +2800,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2793,7 +2829,7 @@ if test "$target_cpu" = "unix" ; then
echo $ac_n "checking whether $RTEMS_HOST supports System V semaphores""... $ac_c" 1>&6
-echo "configure:2797: checking whether $RTEMS_HOST supports System V semaphores" >&5
+echo "configure:2833: checking whether $RTEMS_HOST supports System V semaphores" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_sem'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2802,7 +2838,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2806 "configure"
+#line 2842 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2828,7 +2864,7 @@ int main () {
}
EOF
-if { (eval echo configure:2832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_sem="yes"
else
@@ -2851,7 +2887,7 @@ echo "$ac_t""$rtems_cv_sysv_sem" 1>&6
echo $ac_n "checking whether $RTEMS_HOST supports System V shared memory""... $ac_c" 1>&6
-echo "configure:2855: checking whether $RTEMS_HOST supports System V shared memory" >&5
+echo "configure:2891: checking whether $RTEMS_HOST supports System V shared memory" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_shm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2860,7 +2896,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2864 "configure"
+#line 2900 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2876,7 +2912,7 @@ int main () {
}
EOF
-if { (eval echo configure:2880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_shm="yes"
else
@@ -2899,7 +2935,7 @@ echo "$ac_t""$rtems_cv_sysv_shm" 1>&6
echo $ac_n "checking whether $RTEMS_HOST supports System V messages""... $ac_c" 1>&6
-echo "configure:2903: checking whether $RTEMS_HOST supports System V messages" >&5
+echo "configure:2939: checking whether $RTEMS_HOST supports System V messages" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_msg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2908,7 +2944,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2912 "configure"
+#line 2948 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2924,7 +2960,7 @@ int main () {
}
EOF
-if { (eval echo configure:2928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_msg="yes"
else
@@ -2949,7 +2985,7 @@ fi
# find all the Executive Makefiles
echo $ac_n "checking for Makefile.in in c/src/exec/score/tools/$target_cpu""... $ac_c" 1>&6
-echo "configure:2953: checking for Makefile.in in c/src/exec/score/tools/$target_cpu" >&5
+echo "configure:2989: checking for Makefile.in in c/src/exec/score/tools/$target_cpu" >&5
if test -d $srcdir/c/src/exec/score/tools/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2964,7 +3000,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/exec/rtems""... $ac_c" 1>&6
-echo "configure:2968: checking for Makefile.in in c/src/exec/rtems" >&5
+echo "configure:3004: checking for Makefile.in in c/src/exec/rtems" >&5
if test -d $srcdir/c/src/exec/rtems; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2979,7 +3015,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/exec/sapi""... $ac_c" 1>&6
-echo "configure:2983: checking for Makefile.in in c/src/exec/sapi" >&5
+echo "configure:3019: checking for Makefile.in in c/src/exec/sapi" >&5
if test -d $srcdir/c/src/exec/sapi; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2996,7 +3032,7 @@ fi
if test "$RTEMS_HAS_POSIX_API" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/exec/posix""... $ac_c" 1>&6
-echo "configure:3000: checking for Makefile.in in c/src/exec/posix" >&5
+echo "configure:3036: checking for Makefile.in in c/src/exec/posix" >&5
if test -d $srcdir/c/src/exec/posix; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3018,7 +3054,7 @@ if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
if test -z "$rtems_bsp"; then
echo $ac_n "checking for bsps""... $ac_c" 1>&6
-echo "configure:3022: checking for bsps" >&5
+echo "configure:3058: checking for bsps" >&5
files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
for file in $files; do
case $file in
@@ -3083,7 +3119,7 @@ echo "configure:3022: checking for bsps" >&5
bspdirs="$bspdirs $bspdir"
echo $ac_n "checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir""... $ac_c" 1>&6
-echo "configure:3087: checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir" >&5
+echo "configure:3123: checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir" >&5
if test -d $srcdir/c/src/lib/libbsp/$bspcpudir$bspdir; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3098,7 +3134,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared""... $ac_c" 1>&6
-echo "configure:3102: checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared" >&5
+echo "configure:3138: checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared" >&5
if test -d $srcdir/c/src/lib/libbsp/${bspcpudir}shared; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3121,7 +3157,7 @@ fi
# find all the CPU dependent library Makefiles
echo $ac_n "checking for Makefile.in in c/src/lib/libcpu/$target_cpu""... $ac_c" 1>&6
-echo "configure:3125: checking for Makefile.in in c/src/lib/libcpu/$target_cpu" >&5
+echo "configure:3161: checking for Makefile.in in c/src/lib/libcpu/$target_cpu" >&5
if test -d $srcdir/c/src/lib/libcpu/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3138,7 +3174,7 @@ fi
if test "$skip_startfiles" != "yes"; then
echo $ac_n "checking for Makefile.in in c/src/lib/start/$target_cpu""... $ac_c" 1>&6
-echo "configure:3142: checking for Makefile.in in c/src/lib/start/$target_cpu" >&5
+echo "configure:3178: checking for Makefile.in in c/src/lib/start/$target_cpu" >&5
if test -d $srcdir/c/src/lib/start/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3170,12 +3206,12 @@ fi
# If the TCP/IP stack is enabled, then find all TCP/IP Makefiles
echo $ac_n "checking if networking is enabled? ""... $ac_c" 1>&6
-echo "configure:3174: checking if networking is enabled? " >&5
+echo "configure:3210: checking if networking is enabled? " >&5
echo "$ac_t""$RTEMS_HAS_NETWORKING" 1>&6
if test "$RTEMS_HAS_NETWORKING" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/lib/libnetworking""... $ac_c" 1>&6
-echo "configure:3179: checking for Makefile.in in c/src/lib/libnetworking" >&5
+echo "configure:3215: checking for Makefile.in in c/src/lib/libnetworking" >&5
if test -d $srcdir/c/src/lib/libnetworking; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3197,7 +3233,7 @@ fi
# If the tests are enabled, then find all the test suite Makefiles
echo $ac_n "checking if the test suites are enabled? ""... $ac_c" 1>&6
-echo "configure:3201: checking if the test suites are enabled? " >&5
+echo "configure:3237: checking if the test suites are enabled? " >&5
tests_enabled=yes
# Check whether --enable-tests or --disable-tests was given.
if test "${enable_tests+set}" = set; then
@@ -3216,7 +3252,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/tools/$target_cpu""... $ac_c" 1>&6
-echo "configure:3220: checking for Makefile.in in c/src/tests/tools/$target_cpu" >&5
+echo "configure:3256: checking for Makefile.in in c/src/tests/tools/$target_cpu" >&5
if test -d $srcdir/c/src/tests/tools/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3233,7 +3269,7 @@ fi
if test "$tests_enabled" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/tests/libtests""... $ac_c" 1>&6
-echo "configure:3237: checking for Makefile.in in c/src/tests/libtests" >&5
+echo "configure:3273: checking for Makefile.in in c/src/tests/libtests" >&5
if test -d $srcdir/c/src/tests/libtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3248,7 +3284,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/sptests""... $ac_c" 1>&6
-echo "configure:3252: checking for Makefile.in in c/src/tests/sptests" >&5
+echo "configure:3288: checking for Makefile.in in c/src/tests/sptests" >&5
if test -d $srcdir/c/src/tests/sptests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3263,7 +3299,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/tmtests""... $ac_c" 1>&6
-echo "configure:3267: checking for Makefile.in in c/src/tests/tmtests" >&5
+echo "configure:3303: checking for Makefile.in in c/src/tests/tmtests" >&5
if test -d $srcdir/c/src/tests/tmtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3278,7 +3314,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/mptests""... $ac_c" 1>&6
-echo "configure:3282: checking for Makefile.in in c/src/tests/mptests" >&5
+echo "configure:3318: checking for Makefile.in in c/src/tests/mptests" >&5
if test -d $srcdir/c/src/tests/mptests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3294,7 +3330,7 @@ fi
if test "$RTEMS_HAS_POSIX_API" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/tests/psxtests""... $ac_c" 1>&6
-echo "configure:3298: checking for Makefile.in in c/src/tests/psxtests" >&5
+echo "configure:3334: checking for Makefile.in in c/src/tests/psxtests" >&5
if test -d $srcdir/c/src/tests/psxtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3312,7 +3348,7 @@ fi
# If the HWAPI is enabled, the find the HWAPI Makefiles
echo $ac_n "checking if the HWAPI is enabled? ""... $ac_c" 1>&6
-echo "configure:3316: checking if the HWAPI is enabled? " >&5
+echo "configure:3352: checking if the HWAPI is enabled? " >&5
# Check whether --enable-hwapi or --disable-hwapi was given.
if test "${enable_hwapi+set}" = set; then
enableval="$enable_hwapi"
@@ -3323,7 +3359,7 @@ if test "${enable_hwapi+set}" = set; then
makefiles="$makefiles c/src/lib/libhwapi/Makefile"
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/analog""... $ac_c" 1>&6
-echo "configure:3327: checking for Makefile.in in c/src/lib/libhwapi/analog" >&5
+echo "configure:3363: checking for Makefile.in in c/src/lib/libhwapi/analog" >&5
if test -d $srcdir/c/src/lib/libhwapi/analog; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3338,7 +3374,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/discrete""... $ac_c" 1>&6
-echo "configure:3342: checking for Makefile.in in c/src/lib/libhwapi/discrete" >&5
+echo "configure:3378: checking for Makefile.in in c/src/lib/libhwapi/discrete" >&5
if test -d $srcdir/c/src/lib/libhwapi/discrete; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3353,7 +3389,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/drivers""... $ac_c" 1>&6
-echo "configure:3357: checking for Makefile.in in c/src/lib/libhwapi/drivers" >&5
+echo "configure:3393: checking for Makefile.in in c/src/lib/libhwapi/drivers" >&5
if test -d $srcdir/c/src/lib/libhwapi/drivers; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3368,7 +3404,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory""... $ac_c" 1>&6
-echo "configure:3372: checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory" >&5
+echo "configure:3408: checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory" >&5
if test -d $srcdir/c/src/lib/libhwapi/non_volatile_memory; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3383,7 +3419,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/serial""... $ac_c" 1>&6
-echo "configure:3387: checking for Makefile.in in c/src/lib/libhwapi/serial" >&5
+echo "configure:3423: checking for Makefile.in in c/src/lib/libhwapi/serial" >&5
if test -d $srcdir/c/src/lib/libhwapi/serial; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3398,7 +3434,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/support""... $ac_c" 1>&6
-echo "configure:3402: checking for Makefile.in in c/src/lib/libhwapi/support" >&5
+echo "configure:3438: checking for Makefile.in in c/src/lib/libhwapi/support" >&5
if test -d $srcdir/c/src/lib/libhwapi/support; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3413,7 +3449,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/wrapup""... $ac_c" 1>&6
-echo "configure:3417: checking for Makefile.in in c/src/lib/libhwapi/wrapup" >&5
+echo "configure:3453: checking for Makefile.in in c/src/lib/libhwapi/wrapup" >&5
if test -d $srcdir/c/src/lib/libhwapi/wrapup; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3463,7 +3499,7 @@ fi
# pick up all the Makefiles in required parts of the tree
echo $ac_n "checking for Makefile.in in c/build-tools""... $ac_c" 1>&6
-echo "configure:3467: checking for Makefile.in in c/build-tools" >&5
+echo "configure:3503: checking for Makefile.in in c/build-tools" >&5
if test -d $srcdir/c/build-tools; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3478,7 +3514,7 @@ fi
echo $ac_n "checking for Makefile.in in make""... $ac_c" 1>&6
-echo "configure:3482: checking for Makefile.in in make" >&5
+echo "configure:3518: checking for Makefile.in in make" >&5
if test -d $srcdir/make; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3493,7 +3529,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libmisc""... $ac_c" 1>&6
-echo "configure:3497: checking for Makefile.in in c/src/lib/libmisc" >&5
+echo "configure:3533: checking for Makefile.in in c/src/lib/libmisc" >&5
if test -d $srcdir/c/src/lib/libmisc; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3508,7 +3544,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/samples""... $ac_c" 1>&6
-echo "configure:3512: checking for Makefile.in in c/src/tests/samples" >&5
+echo "configure:3548: checking for Makefile.in in c/src/tests/samples" >&5
if test -d $srcdir/c/src/tests/samples; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3641,7 +3677,6 @@ c/src/exec/score/${inline_dir}/Makefile
c/src/exec/score/src/Makefile
c/src/exec/score/tools/Makefile
c/src/exec/score/tools/generic/Makefile
-c/src/exec/score/tools/generic/size_rtems
c/src/exec/wrapup/Makefile
c/src/exec/wrapup/rtems/Makefile
c/src/lib/Makefile
@@ -3716,6 +3751,7 @@ s%@CHMOD@%$CHMOD%g
s%@SORT@%$SORT%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@PERL@%$PERL%g
s%@MKDIR@%$MKDIR%g
s%@TOUCH@%$TOUCH%g
s%@CMP@%$CMP%g
@@ -3809,7 +3845,6 @@ c/src/exec/score/${inline_dir}/Makefile
c/src/exec/score/src/Makefile
c/src/exec/score/tools/Makefile
c/src/exec/score/tools/generic/Makefile
-c/src/exec/score/tools/generic/size_rtems
c/src/exec/wrapup/Makefile
c/src/exec/wrapup/rtems/Makefile
c/src/lib/Makefile
diff --git a/configure.in b/configure.in
index 2de743f3aa..a2c367f0d6 100644
--- a/configure.in
+++ b/configure.in
@@ -95,6 +95,13 @@ AC_PROG_LN_S
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(SORT,sort)
AC_PROG_INSTALL
+AC_PATH_PROG(PERL,perl)
+if test -z "$PERL" ; then
+AC_MSG_WARN(
+[***]
+[ perl was not found]
+[ Note: Some tools will not be built.])
+fi
dnl check mkdir behaviour, try to get mkdir -p -m 0755
RTEMS_PATH_MKDIR
@@ -496,7 +503,6 @@ c/src/exec/score/${inline_dir}/Makefile
c/src/exec/score/src/Makefile
c/src/exec/score/tools/Makefile
c/src/exec/score/tools/generic/Makefile
-c/src/exec/score/tools/generic/size_rtems
c/src/exec/wrapup/Makefile
c/src/exec/wrapup/rtems/Makefile
c/src/lib/Makefile
diff --git a/make/rtems.cfg b/make/rtems.cfg
new file mode 100644
index 0000000000..9e46845142
--- /dev/null
+++ b/make/rtems.cfg
@@ -0,0 +1,10 @@
+# This file is only used inside the rtems source tree and should not get
+# installed.
+
+# autoconf support
+%: %.in
+ @subdir=`echo $(srcdir) | sed -e "s%$(RTEMS_ROOT)%%g"`; \
+ cd $(PROJECT_ROOT) && CONFIG_FILES=".$$subdir/$@" \
+ CONFIG_HEADERS= $(SHELL) ./config.status
+
+Makefile: $(PROJECT_ROOT)/config.status
diff --git a/tools/build/README b/tools/build/README
index 0436fc958d..0738a5830e 100644
--- a/tools/build/README
+++ b/tools/build/README
@@ -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.
-
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: ***
diff --git a/tools/build/lock-directory.in b/tools/build/lock-directory.in
new file mode 100644
index 0000000000..1c205cdec0
--- /dev/null
+++ b/tools/build/lock-directory.in
@@ -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: ***
+
diff --git a/tools/build/rcs-clean.in b/tools/build/rcs-clean.in
new file mode 100644
index 0000000000..83fed05128
--- /dev/null
+++ b/tools/build/rcs-clean.in
@@ -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: ***
diff --git a/tools/build/scripts/Makefile.in b/tools/build/scripts/Makefile.in
index afcc980db8..753bfafaa5 100644
--- a/tools/build/scripts/Makefile.in
+++ b/tools/build/scripts/Makefile.in
@@ -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)
diff --git a/tools/build/scripts/README b/tools/build/scripts/README
index 0436fc958d..0738a5830e 100644
--- a/tools/build/scripts/README
+++ b/tools/build/scripts/README
@@ -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.
-
diff --git a/tools/build/scripts/install-if-change.in b/tools/build/scripts/install-if-change.in
new file mode 100644
index 0000000000..b2f3cb04bb
--- /dev/null
+++ b/tools/build/scripts/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: ***
diff --git a/tools/build/scripts/lock-directory.in b/tools/build/scripts/lock-directory.in
new file mode 100644
index 0000000000..1c205cdec0
--- /dev/null
+++ b/tools/build/scripts/lock-directory.in
@@ -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: ***
+
diff --git a/tools/build/scripts/rcs-clean.in b/tools/build/scripts/rcs-clean.in
new file mode 100644
index 0000000000..83fed05128
--- /dev/null
+++ b/tools/build/scripts/rcs-clean.in
@@ -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: ***
diff --git a/tools/build/scripts/unlock-directory.in b/tools/build/scripts/unlock-directory.in
new file mode 100644
index 0000000000..c63ceff881
--- /dev/null
+++ b/tools/build/scripts/unlock-directory.in
@@ -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: ***
+
diff --git a/tools/build/unlock-directory.in b/tools/build/unlock-directory.in
new file mode 100644
index 0000000000..c63ceff881
--- /dev/null
+++ b/tools/build/unlock-directory.in
@@ -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: ***
+
diff --git a/tools/cpu/generic/Makefile.in b/tools/cpu/generic/Makefile.in
index 4586a43b45..33c2fb81dd 100644
--- a/tools/cpu/generic/Makefile.in
+++ b/tools/cpu/generic/Makefile.in
@@ -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)
diff --git a/tools/update/Makefile.in b/tools/update/Makefile.in
index 142bece1f1..45e3e63515 100644
--- a/tools/update/Makefile.in
+++ b/tools/update/Makefile.in
@@ -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
-MISC_SUPPORT=310_to_320_list
+BUILD_PGMS = update
+ifneq (@PERL@,)
+BUILD_PGMS += word-replace
+endif
-INSTALL_LIST= $(PGMS) $(MISC_SUPPORT)
+PGMS = $(BUILD_PGMS)
-INSTALLED=$(INSTALL_LIST:%=$(DESTDIR)/%)
+CLEAN_ADDITIONS += $(BUILD_PGMS)
+
+MISC_SUPPORT=310_to_320_list
-all: $(DESTDIR)
+INSTALLED_PGMS=$(PGMS:%=$(DESTDIR)/%)
+INSTALLED_DATA=$(MISC_SUPPORT:%=$(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}
diff --git a/tools/update/update.in b/tools/update/update.in
new file mode 100644
index 0000000000..cdcb07655e
--- /dev/null
+++ b/tools/update/update.in
@@ -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: ***
diff --git a/tools/update/word-replace.in b/tools/update/word-replace.in
new file mode 100644
index 0000000000..24c7c3a546
--- /dev/null
+++ b/tools/update/word-replace.in
@@ -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;
+}
+