From 11cfb6f7f6326e79b4a930716c340b65d76d0683 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 14 Oct 1998 20:19:30 +0000 Subject: Patch from Ralf Corsepius : 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. --- c/build-tools/README | 8 - c/build-tools/install-if-change.in | 142 ++++++++++++ c/build-tools/lock-directory.in | 43 ++++ c/build-tools/rcs-clean.in | 73 ++++++ c/build-tools/scripts/Makefile.in | 16 +- c/build-tools/scripts/README | 8 - c/build-tools/scripts/install-if-change.in | 142 ++++++++++++ c/build-tools/scripts/lock-directory.in | 43 ++++ c/build-tools/scripts/rcs-clean.in | 73 ++++++ c/build-tools/scripts/unlock-directory.in | 41 ++++ c/build-tools/unlock-directory.in | 41 ++++ c/src/exec/score/tools/generic/Makefile.in | 15 +- c/src/lib/libbsp/sparc/erc32/tools/Makefile.in | 18 +- c/src/lib/libbsp/sparc/erc32/tools/runtest.in | 307 +++++++++++++++++++++++++ c/src/lib/libbsp/unix/posix/tools/Makefile.in | 26 ++- c/src/lib/libbsp/unix/posix/tools/looptest.in | 93 ++++++++ c/src/lib/libbsp/unix/posix/tools/runtest.in | 255 ++++++++++++++++++++ c/src/lib/libbsp/unix/posix/tools/semdump.in | 59 +++++ c/src/lib/libbsp/unix/posix/tools/shmdump.in | 134 +++++++++++ c/update-tools/Makefile.in | 35 +-- c/update-tools/update.in | 216 +++++++++++++++++ c/update-tools/word-replace.in | 89 +++++++ configure | 257 ++++++++++++--------- configure.in | 8 +- make/rtems.cfg | 10 + tools/build/README | 8 - tools/build/install-if-change.in | 142 ++++++++++++ tools/build/lock-directory.in | 43 ++++ tools/build/rcs-clean.in | 73 ++++++ tools/build/scripts/Makefile.in | 16 +- tools/build/scripts/README | 8 - tools/build/scripts/install-if-change.in | 142 ++++++++++++ tools/build/scripts/lock-directory.in | 43 ++++ tools/build/scripts/rcs-clean.in | 73 ++++++ tools/build/scripts/unlock-directory.in | 41 ++++ tools/build/unlock-directory.in | 41 ++++ tools/cpu/generic/Makefile.in | 15 +- tools/update/Makefile.in | 35 +-- tools/update/update.in | 216 +++++++++++++++++ tools/update/word-replace.in | 89 +++++++ 40 files changed, 2921 insertions(+), 216 deletions(-) create mode 100644 c/build-tools/install-if-change.in create mode 100644 c/build-tools/lock-directory.in create mode 100644 c/build-tools/rcs-clean.in create mode 100644 c/build-tools/scripts/install-if-change.in create mode 100644 c/build-tools/scripts/lock-directory.in create mode 100644 c/build-tools/scripts/rcs-clean.in create mode 100644 c/build-tools/scripts/unlock-directory.in create mode 100644 c/build-tools/unlock-directory.in create mode 100644 c/src/lib/libbsp/sparc/erc32/tools/runtest.in create mode 100644 c/src/lib/libbsp/unix/posix/tools/looptest.in create mode 100644 c/src/lib/libbsp/unix/posix/tools/runtest.in create mode 100644 c/src/lib/libbsp/unix/posix/tools/semdump.in create mode 100644 c/src/lib/libbsp/unix/posix/tools/shmdump.in create mode 100644 c/update-tools/update.in create mode 100644 c/update-tools/word-replace.in create mode 100644 make/rtems.cfg create mode 100644 tools/build/install-if-change.in create mode 100644 tools/build/lock-directory.in create mode 100644 tools/build/rcs-clean.in create mode 100644 tools/build/scripts/install-if-change.in create mode 100644 tools/build/scripts/lock-directory.in create mode 100644 tools/build/scripts/rcs-clean.in create mode 100644 tools/build/scripts/unlock-directory.in create mode 100644 tools/build/unlock-directory.in create mode 100644 tools/update/update.in create mode 100644 tools/update/word-replace.in 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 < $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 <) +{ + 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 () + { + 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 <&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 <&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 <&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 <&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 <&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 <&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 < @@ -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 < @@ -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 < @@ -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 <) +{ + 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 () + { + 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; +} + -- cgit v1.2.3