tools: Remove install-if-change program

The last installed tool in RTEMS repository is the install-if-change
script.  It is not used to build/install BSPs.  This script does the
same as the standard "install" program with an additional feature to
install variants via the -V command line option.

This script is used by the standard Makefile support:

c/src/make/host.cfg.in:INSTALL_CHANGE=$(PROJECT_BIN)/install-if-change

The INSTALL_CHANGE is used by:

c/src/make/host.cfg.in:ifndef INSTALL_CHANGE
c/src/make/host.cfg.in:INSTALL_CHANGE=$(PROJECT_BIN)/install-if-change
c/src/make/host.cfg.in:INSTALL_VARIANT=$(INSTALL_CHANGE) -V
"$(LIB_VARIANT)"

Remove the support for variant installation and instead use the standard
"install" program.  This breaks application Makefiles using the standard
Makefile support of RTEMS.

Close #3455.
This commit is contained in:
Sebastian Huber
2018-06-15 08:18:26 +02:00
parent 1f283f17a8
commit bac8d93418
9 changed files with 7 additions and 270 deletions

View File

@@ -11,7 +11,7 @@ noinst_SCRIPTS = bootstrap
dist-hook:
@files=`(cd $(srcdir); find cpukit c testsuites tools \
@files=`(cd $(srcdir); find cpukit c testsuites \
-name configure.ac -print | sed 's,/configure.ac,,' | sort)`; \
for i in $$files; do \
if test -f $(distdir)/$$i/configure.ac; then : ; \

View File

@@ -426,24 +426,9 @@
the installation of libraries, executables, header files,
and other things that need to be installed:
INSTALL_CHANGE - install a file only if the source
file is actually different than
the installed copy or if there is
no installed copy. USAGE:
INSTALL_CHANGE - set to host "install" program by default
usage: install-if-change [ -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)
INSTALL_VARIANT - installs the built file using the
proper variant suffix (e.g. _g
for debug turns libmine.a into libmine_g.a)
This is implemented as a macro that
invokes install-if-change with the
appropriate -V argument setting.
INSTALL_VARIANT - set to host "install" program by default
Special Directory Makefile Targets
----------------------------------

View File

@@ -28,9 +28,11 @@ BIN2C=rtems-bin2c
endif
ifndef INSTALL_CHANGE
INSTALL_CHANGE=$(PROJECT_BIN)/install-if-change
INSTALL_CHANGE=install
endif
ifndef INSTALL_VARIANT
INSTALL_VARIANT=install
endif
INSTALL_VARIANT=$(INSTALL_CHANGE) -V "$(LIB_VARIANT)"
# ksh (or bash) is used by some shell scripts; ref build-tools/scripts/Makefile
#

View File

@@ -32,21 +32,6 @@ RTEMS_ENABLE_RTEMS_DEBUG
RTEMS_ENABLE_PARAVIRT
RTEMS_ENABLE_DRVMGR
## Check if there are valid tools install and in the path.
RTEMS_CHECK_TOOL(RTEMS_CC,gcc)
test -z "$RTEMS_CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
## NOTES:
## * tools/build are host-native tools to be installed on the host.
## * tools/cpu are host-native or host-cross-target-tools
RTEMS_BUILD_CONFIG_SUBDIRS([tools/build])
# Some BSPs carelessly apply these tools as build-tools
AS_IF([test $host != $build],[
RTEMS_HOST_CONFIG_SUBDIRS([tools/build])
])
RTEMS_TARGET_CONFIG_SUBDIRS([c])
AC_CONFIG_FILES([Makefile])

View File

@@ -1,5 +0,0 @@
ACLOCAL_AMFLAGS = -I ../../aclocal
bin_SCRIPTS = install-if-change
include $(top_srcdir)/../../automake/host.am

View File

@@ -1,6 +0,0 @@
Misc. support tools for RTEMS workspaces.
install-if-change
Smart install script that also can append suffixes as it
installs (suffixes used for debug and profile variants).
Requires bash or ksh.

View File

@@ -1,67 +0,0 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `basename' function. */
#undef HAVE_BASENAME
/* Define to 1 if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <libgen.h> header file. */
#undef HAVE_LIBGEN_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strnlen' function. */
#undef HAVE_STRNLEN
/* Define to 1 if you have the `strtol' function. */
#undef HAVE_STRTOL
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

View File

@@ -1,18 +0,0 @@
AC_PREREQ([2.69])
AC_INIT([rtems-tools-build],[_RTEMS_VERSION],[https://devel.rtems.org/newticket])
AC_CONFIG_SRCDIR([install-if-change.in])
RTEMS_TOP(../..)
RTEMS_SOURCE_TOP
RTEMS_BUILD_TOP
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([no-define foreign subdir-objects 1.12.2])
AM_MAINTAINER_MODE
RTEMS_PATH_KSH
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([install-if-change],[chmod +x install-if-change])
AC_OUTPUT

View File

@@ -1,139 +0,0 @@
#!@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.
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: ***