@@ -0,0 +1,347 @@ | |||
#! /bin/sh | |||
# Wrapper for compilers which do not understand '-c -o'. | |||
scriptversion=2012-10-14.11; # UTC | |||
# Copyright (C) 1999-2013 Free Software Foundation, Inc. | |||
# Written by Tom Tromey <tromey@cygnus.com>. | |||
# | |||
# This program is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation; either version 2, or (at your option) | |||
# any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# As a special exception to the GNU General Public License, if you | |||
# distribute this file as part of a program that contains a | |||
# configuration script generated by Autoconf, you may include it under | |||
# the same distribution terms that you use for the rest of that program. | |||
# This file is maintained in Automake, please report | |||
# bugs to <bug-automake@gnu.org> or send patches to | |||
# <automake-patches@gnu.org>. | |||
nl=' | |||
' | |||
# We need space, tab and new line, in precisely that order. Quoting is | |||
# there to prevent tools from complaining about whitespace usage. | |||
IFS=" "" $nl" | |||
file_conv= | |||
# func_file_conv build_file lazy | |||
# Convert a $build file to $host form and store it in $file | |||
# Currently only supports Windows hosts. If the determined conversion | |||
# type is listed in (the comma separated) LAZY, no conversion will | |||
# take place. | |||
func_file_conv () | |||
{ | |||
file=$1 | |||
case $file in | |||
/ | /[!/]*) # absolute file, and not a UNC file | |||
if test -z "$file_conv"; then | |||
# lazily determine how to convert abs files | |||
case `uname -s` in | |||
MINGW*) | |||
file_conv=mingw | |||
;; | |||
CYGWIN*) | |||
file_conv=cygwin | |||
;; | |||
*) | |||
file_conv=wine | |||
;; | |||
esac | |||
fi | |||
case $file_conv/,$2, in | |||
*,$file_conv,*) | |||
;; | |||
mingw/*) | |||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` | |||
;; | |||
cygwin/*) | |||
file=`cygpath -m "$file" || echo "$file"` | |||
;; | |||
wine/*) | |||
file=`winepath -w "$file" || echo "$file"` | |||
;; | |||
esac | |||
;; | |||
esac | |||
} | |||
# func_cl_dashL linkdir | |||
# Make cl look for libraries in LINKDIR | |||
func_cl_dashL () | |||
{ | |||
func_file_conv "$1" | |||
if test -z "$lib_path"; then | |||
lib_path=$file | |||
else | |||
lib_path="$lib_path;$file" | |||
fi | |||
linker_opts="$linker_opts -LIBPATH:$file" | |||
} | |||
# func_cl_dashl library | |||
# Do a library search-path lookup for cl | |||
func_cl_dashl () | |||
{ | |||
lib=$1 | |||
found=no | |||
save_IFS=$IFS | |||
IFS=';' | |||
for dir in $lib_path $LIB | |||
do | |||
IFS=$save_IFS | |||
if $shared && test -f "$dir/$lib.dll.lib"; then | |||
found=yes | |||
lib=$dir/$lib.dll.lib | |||
break | |||
fi | |||
if test -f "$dir/$lib.lib"; then | |||
found=yes | |||
lib=$dir/$lib.lib | |||
break | |||
fi | |||
if test -f "$dir/lib$lib.a"; then | |||
found=yes | |||
lib=$dir/lib$lib.a | |||
break | |||
fi | |||
done | |||
IFS=$save_IFS | |||
if test "$found" != yes; then | |||
lib=$lib.lib | |||
fi | |||
} | |||
# func_cl_wrapper cl arg... | |||
# Adjust compile command to suit cl | |||
func_cl_wrapper () | |||
{ | |||
# Assume a capable shell | |||
lib_path= | |||
shared=: | |||
linker_opts= | |||
for arg | |||
do | |||
if test -n "$eat"; then | |||
eat= | |||
else | |||
case $1 in | |||
-o) | |||
# configure might choose to run compile as 'compile cc -o foo foo.c'. | |||
eat=1 | |||
case $2 in | |||
*.o | *.[oO][bB][jJ]) | |||
func_file_conv "$2" | |||
set x "$@" -Fo"$file" | |||
shift | |||
;; | |||
*) | |||
func_file_conv "$2" | |||
set x "$@" -Fe"$file" | |||
shift | |||
;; | |||
esac | |||
;; | |||
-I) | |||
eat=1 | |||
func_file_conv "$2" mingw | |||
set x "$@" -I"$file" | |||
shift | |||
;; | |||
-I*) | |||
func_file_conv "${1#-I}" mingw | |||
set x "$@" -I"$file" | |||
shift | |||
;; | |||
-l) | |||
eat=1 | |||
func_cl_dashl "$2" | |||
set x "$@" "$lib" | |||
shift | |||
;; | |||
-l*) | |||
func_cl_dashl "${1#-l}" | |||
set x "$@" "$lib" | |||
shift | |||
;; | |||
-L) | |||
eat=1 | |||
func_cl_dashL "$2" | |||
;; | |||
-L*) | |||
func_cl_dashL "${1#-L}" | |||
;; | |||
-static) | |||
shared=false | |||
;; | |||
-Wl,*) | |||
arg=${1#-Wl,} | |||
save_ifs="$IFS"; IFS=',' | |||
for flag in $arg; do | |||
IFS="$save_ifs" | |||
linker_opts="$linker_opts $flag" | |||
done | |||
IFS="$save_ifs" | |||
;; | |||
-Xlinker) | |||
eat=1 | |||
linker_opts="$linker_opts $2" | |||
;; | |||
-*) | |||
set x "$@" "$1" | |||
shift | |||
;; | |||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++) | |||
func_file_conv "$1" | |||
set x "$@" -Tp"$file" | |||
shift | |||
;; | |||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) | |||
func_file_conv "$1" mingw | |||
set x "$@" "$file" | |||
shift | |||
;; | |||
*) | |||
set x "$@" "$1" | |||
shift | |||
;; | |||
esac | |||
fi | |||
shift | |||
done | |||
if test -n "$linker_opts"; then | |||
linker_opts="-link$linker_opts" | |||
fi | |||
exec "$@" $linker_opts | |||
exit 1 | |||
} | |||
eat= | |||
case $1 in | |||
'') | |||
echo "$0: No command. Try '$0 --help' for more information." 1>&2 | |||
exit 1; | |||
;; | |||
-h | --h*) | |||
cat <<\EOF | |||
Usage: compile [--help] [--version] PROGRAM [ARGS] | |||
Wrapper for compilers which do not understand '-c -o'. | |||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining | |||
arguments, and rename the output as expected. | |||
If you are trying to build a whole package this is not the | |||
right script to run: please start by reading the file 'INSTALL'. | |||
Report bugs to <bug-automake@gnu.org>. | |||
EOF | |||
exit $? | |||
;; | |||
-v | --v*) | |||
echo "compile $scriptversion" | |||
exit $? | |||
;; | |||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) | |||
func_cl_wrapper "$@" # Doesn't return... | |||
;; | |||
esac | |||
ofile= | |||
cfile= | |||
for arg | |||
do | |||
if test -n "$eat"; then | |||
eat= | |||
else | |||
case $1 in | |||
-o) | |||
# configure might choose to run compile as 'compile cc -o foo foo.c'. | |||
# So we strip '-o arg' only if arg is an object. | |||
eat=1 | |||
case $2 in | |||
*.o | *.obj) | |||
ofile=$2 | |||
;; | |||
*) | |||
set x "$@" -o "$2" | |||
shift | |||
;; | |||
esac | |||
;; | |||
*.c) | |||
cfile=$1 | |||
set x "$@" "$1" | |||
shift | |||
;; | |||
*) | |||
set x "$@" "$1" | |||
shift | |||
;; | |||
esac | |||
fi | |||
shift | |||
done | |||
if test -z "$ofile" || test -z "$cfile"; then | |||
# If no '-o' option was seen then we might have been invoked from a | |||
# pattern rule where we don't need one. That is ok -- this is a | |||
# normal compilation that the losing compiler can handle. If no | |||
# '.c' file was seen then we are probably linking. That is also | |||
# ok. | |||
exec "$@" | |||
fi | |||
# Name of file we expect compiler to create. | |||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` | |||
# Create the lock directory. | |||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name | |||
# that we are using for the .o file. Also, base the name on the expected | |||
# object file name, since that is what matters with a parallel build. | |||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d | |||
while true; do | |||
if mkdir "$lockdir" >/dev/null 2>&1; then | |||
break | |||
fi | |||
sleep 1 | |||
done | |||
# FIXME: race condition here if user kills between mkdir and trap. | |||
trap "rmdir '$lockdir'; exit 1" 1 2 15 | |||
# Run the compile. | |||
"$@" | |||
ret=$? | |||
if test -f "$cofile"; then | |||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile" | |||
elif test -f "${cofile}bj"; then | |||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" | |||
fi | |||
rmdir "$lockdir" | |||
exit $ret | |||
# Local Variables: | |||
# mode: shell-script | |||
# sh-indentation: 2 | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-time-zone: "UTC" | |||
# time-stamp-end: "; # UTC" | |||
# End: |
@@ -0,0 +1,196 @@ | |||
/* config.h.in. Generated from configure.ac by autoheader. */ | |||
/* Enable RDRAND Hardware RNG Hash Seed */ | |||
#undef ENABLE_RDRAND | |||
/* Enable partial threading support */ | |||
#undef ENABLE_THREADING | |||
/* Define if .gnu.warning accepts long strings. */ | |||
#undef HAS_GNU_WARNING_LONG | |||
/* Has atomic builtins */ | |||
#undef HAVE_ATOMIC_BUILTINS | |||
/* Define to 1 if you have the declaration of `INFINITY', and to 0 if you | |||
don't. */ | |||
#undef HAVE_DECL_INFINITY | |||
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. | |||
*/ | |||
#undef HAVE_DECL_ISINF | |||
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. | |||
*/ | |||
#undef HAVE_DECL_ISNAN | |||
/* Define to 1 if you have the declaration of `nan', and to 0 if you don't. */ | |||
#undef HAVE_DECL_NAN | |||
/* Define to 1 if you have the declaration of `_finite', and to 0 if you | |||
don't. */ | |||
#undef HAVE_DECL__FINITE | |||
/* Define to 1 if you have the declaration of `_isnan', and to 0 if you don't. | |||
*/ | |||
#undef HAVE_DECL__ISNAN | |||
/* Define to 1 if you have the <dlfcn.h> header file. */ | |||
#undef HAVE_DLFCN_H | |||
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ | |||
#undef HAVE_DOPRNT | |||
/* Define to 1 if you have the <endian.h> header file. */ | |||
#undef HAVE_ENDIAN_H | |||
/* Define to 1 if you have the <fcntl.h> header file. */ | |||
#undef HAVE_FCNTL_H | |||
/* Define to 1 if you have the <inttypes.h> header file. */ | |||
#undef HAVE_INTTYPES_H | |||
/* Define to 1 if you have the <limits.h> header file. */ | |||
#undef HAVE_LIMITS_H | |||
/* Define to 1 if you have the <locale.h> header file. */ | |||
#undef HAVE_LOCALE_H | |||
/* Define to 1 if you have the <memory.h> header file. */ | |||
#undef HAVE_MEMORY_H | |||
/* Define to 1 if you have the `open' function. */ | |||
#undef HAVE_OPEN | |||
/* Define to 1 if you have the `realloc' function. */ | |||
#undef HAVE_REALLOC | |||
/* Define to 1 if you have the `setlocale' function. */ | |||
#undef HAVE_SETLOCALE | |||
/* Define to 1 if you have the `snprintf' function. */ | |||
#undef HAVE_SNPRINTF | |||
/* Define to 1 if you have the <stdarg.h> header file. */ | |||
#undef HAVE_STDARG_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 `strcasecmp' function. */ | |||
#undef HAVE_STRCASECMP | |||
/* Define to 1 if you have the `strdup' function. */ | |||
#undef HAVE_STRDUP | |||
/* 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 `strncasecmp' function. */ | |||
#undef HAVE_STRNCASECMP | |||
/* Define to 1 if you have the <syslog.h> header file. */ | |||
#undef HAVE_SYSLOG_H | |||
/* Define to 1 if you have the <sys/cdefs.h> header file. */ | |||
#undef HAVE_SYS_CDEFS_H | |||
/* Define to 1 if you have the <sys/param.h> header file. */ | |||
#undef HAVE_SYS_PARAM_H | |||
/* 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 1 if you have the `uselocale' function. */ | |||
#undef HAVE_USELOCALE | |||
/* Define to 1 if you have the `vasprintf' function. */ | |||
#undef HAVE_VASPRINTF | |||
/* Define to 1 if you have the `vprintf' function. */ | |||
#undef HAVE_VPRINTF | |||
/* Define to 1 if you have the `vsnprintf' function. */ | |||
#undef HAVE_VSNPRINTF | |||
/* Define to 1 if you have the `vsyslog' function. */ | |||
#undef HAVE_VSYSLOG | |||
/* Define to 1 if you have the <xlocale.h> header file. */ | |||
#undef HAVE_XLOCALE_H | |||
/* Have __thread */ | |||
#undef HAVE___THREAD | |||
/* Public define for json_inttypes.h */ | |||
#undef JSON_C_HAVE_INTTYPES_H | |||
/* Define to the sub-directory in which libtool stores uninstalled libraries. | |||
*/ | |||
#undef LT_OBJDIR | |||
/* Name of package */ | |||
#undef PACKAGE | |||
/* 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 | |||
/* The number of bytes in type int */ | |||
#undef SIZEOF_INT | |||
/* The number of bytes in type int64_t */ | |||
#undef SIZEOF_INT64_T | |||
/* The number of bytes in type long */ | |||
#undef SIZEOF_LONG | |||
/* The number of bytes in type long long */ | |||
#undef SIZEOF_LONG_LONG | |||
/* The number of bytes in type size_t */ | |||
#undef SIZEOF_SIZE_T | |||
/* Specifier for __thread */ | |||
#undef SPEC___THREAD | |||
/* Define to 1 if you have the ANSI C header files. */ | |||
#undef STDC_HEADERS | |||
/* Version number of package */ | |||
#undef VERSION | |||
/* Define to empty if `const' does not conform to ANSI C. */ | |||
#undef const | |||
/* Define to `unsigned int' if <sys/types.h> does not define. */ | |||
#undef size_t |
@@ -0,0 +1,791 @@ | |||
#! /bin/sh | |||
# depcomp - compile a program generating dependencies as side-effects | |||
scriptversion=2013-05-30.07; # UTC | |||
# Copyright (C) 1999-2013 Free Software Foundation, Inc. | |||
# This program is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation; either version 2, or (at your option) | |||
# any later version. | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# As a special exception to the GNU General Public License, if you | |||
# distribute this file as part of a program that contains a | |||
# configuration script generated by Autoconf, you may include it under | |||
# the same distribution terms that you use for the rest of that program. | |||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. | |||
case $1 in | |||
'') | |||
echo "$0: No command. Try '$0 --help' for more information." 1>&2 | |||
exit 1; | |||
;; | |||
-h | --h*) | |||
cat <<\EOF | |||
Usage: depcomp [--help] [--version] PROGRAM [ARGS] | |||
Run PROGRAMS ARGS to compile a file, generating dependencies | |||
as side-effects. | |||
Environment variables: | |||
depmode Dependency tracking mode. | |||
source Source file read by 'PROGRAMS ARGS'. | |||
object Object file output by 'PROGRAMS ARGS'. | |||
DEPDIR directory where to store dependencies. | |||
depfile Dependency file to output. | |||
tmpdepfile Temporary file to use when outputting dependencies. | |||
libtool Whether libtool is used (yes/no). | |||
Report bugs to <bug-automake@gnu.org>. | |||
EOF | |||
exit $? | |||
;; | |||
-v | --v*) | |||
echo "depcomp $scriptversion" | |||
exit $? | |||
;; | |||
esac | |||
# Get the directory component of the given path, and save it in the | |||
# global variables '$dir'. Note that this directory component will | |||
# be either empty or ending with a '/' character. This is deliberate. | |||
set_dir_from () | |||
{ | |||
case $1 in | |||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; | |||
*) dir=;; | |||
esac | |||
} | |||
# Get the suffix-stripped basename of the given path, and save it the | |||
# global variable '$base'. | |||
set_base_from () | |||
{ | |||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` | |||
} | |||
# If no dependency file was actually created by the compiler invocation, | |||
# we still have to create a dummy depfile, to avoid errors with the | |||
# Makefile "include basename.Plo" scheme. | |||
make_dummy_depfile () | |||
{ | |||
echo "#dummy" > "$depfile" | |||
} | |||
# Factor out some common post-processing of the generated depfile. | |||
# Requires the auxiliary global variable '$tmpdepfile' to be set. | |||
aix_post_process_depfile () | |||
{ | |||
# If the compiler actually managed to produce a dependency file, | |||
# post-process it. | |||
if test -f "$tmpdepfile"; then | |||
# Each line is of the form 'foo.o: dependency.h'. | |||
# Do two passes, one to just change these to | |||
# $object: dependency.h | |||
# and one to simply output | |||
# dependency.h: | |||
# which is needed to avoid the deleted-header problem. | |||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" | |||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" | |||
} > "$depfile" | |||
rm -f "$tmpdepfile" | |||
else | |||
make_dummy_depfile | |||
fi | |||
} | |||
# A tabulation character. | |||
tab=' ' | |||
# A newline character. | |||
nl=' | |||
' | |||
# Character ranges might be problematic outside the C locale. | |||
# These definitions help. | |||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ | |||
lower=abcdefghijklmnopqrstuvwxyz | |||
digits=0123456789 | |||
alpha=${upper}${lower} | |||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then | |||
echo "depcomp: Variables source, object and depmode must be set" 1>&2 | |||
exit 1 | |||
fi | |||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. | |||
depfile=${depfile-`echo "$object" | | |||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} | |||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} | |||
rm -f "$tmpdepfile" | |||
# Avoid interferences from the environment. | |||
gccflag= dashmflag= | |||
# Some modes work just like other modes, but use different flags. We | |||
# parameterize here, but still list the modes in the big case below, | |||
# to make depend.m4 easier to write. Note that we *cannot* use a case | |||
# here, because this file can only contain one case statement. | |||
if test "$depmode" = hp; then | |||
# HP compiler uses -M and no extra arg. | |||
gccflag=-M | |||
depmode=gcc | |||
fi | |||
if test "$depmode" = dashXmstdout; then | |||
# This is just like dashmstdout with a different argument. | |||
dashmflag=-xM | |||
depmode=dashmstdout | |||
fi | |||
cygpath_u="cygpath -u -f -" | |||
if test "$depmode" = msvcmsys; then | |||
# This is just like msvisualcpp but w/o cygpath translation. | |||
# Just convert the backslash-escaped backslashes to single forward | |||
# slashes to satisfy depend.m4 | |||
cygpath_u='sed s,\\\\,/,g' | |||
depmode=msvisualcpp | |||
fi | |||
if test "$depmode" = msvc7msys; then | |||
# This is just like msvc7 but w/o cygpath translation. | |||
# Just convert the backslash-escaped backslashes to single forward | |||
# slashes to satisfy depend.m4 | |||
cygpath_u='sed s,\\\\,/,g' | |||
depmode=msvc7 | |||
fi | |||
if test "$depmode" = xlc; then | |||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. | |||
gccflag=-qmakedep=gcc,-MF | |||
depmode=gcc | |||
fi | |||
case "$depmode" in | |||
gcc3) | |||
## gcc 3 implements dependency tracking that does exactly what | |||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like | |||
## it if -MD -MP comes after the -MF stuff. Hmm. | |||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon | |||
## the command line argument order; so add the flags where they | |||
## appear in depend2.am. Note that the slowdown incurred here | |||
## affects only configure: in makefiles, %FASTDEP% shortcuts this. | |||
for arg | |||
do | |||
case $arg in | |||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; | |||
*) set fnord "$@" "$arg" ;; | |||
esac | |||
shift # fnord | |||
shift # $arg | |||
done | |||
"$@" | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
mv "$tmpdepfile" "$depfile" | |||
;; | |||
gcc) | |||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. | |||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. | |||
## (see the conditional assignment to $gccflag above). | |||
## There are various ways to get dependency output from gcc. Here's | |||
## why we pick this rather obscure method: | |||
## - Don't want to use -MD because we'd like the dependencies to end | |||
## up in a subdir. Having to rename by hand is ugly. | |||
## (We might end up doing this anyway to support other compilers.) | |||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like | |||
## -MM, not -M (despite what the docs say). Also, it might not be | |||
## supported by the other compilers which use the 'gcc' depmode. | |||
## - Using -M directly means running the compiler twice (even worse | |||
## than renaming). | |||
if test -z "$gccflag"; then | |||
gccflag=-MD, | |||
fi | |||
"$@" -Wp,"$gccflag$tmpdepfile" | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
rm -f "$depfile" | |||
echo "$object : \\" > "$depfile" | |||
# The second -e expression handles DOS-style file names with drive | |||
# letters. | |||
sed -e 's/^[^:]*: / /' \ | |||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" | |||
## This next piece of magic avoids the "deleted header file" problem. | |||
## The problem is that when a header file which appears in a .P file | |||
## is deleted, the dependency causes make to die (because there is | |||
## typically no way to rebuild the header). We avoid this by adding | |||
## dummy dependencies for each header file. Too bad gcc doesn't do | |||
## this for us directly. | |||
## Some versions of gcc put a space before the ':'. On the theory | |||
## that the space means something, we add a space to the output as | |||
## well. hp depmode also adds that space, but also prefixes the VPATH | |||
## to the object. Take care to not repeat it in the output. | |||
## Some versions of the HPUX 10.20 sed can't process this invocation | |||
## correctly. Breaking it into two sed invocations is a workaround. | |||
tr ' ' "$nl" < "$tmpdepfile" \ | |||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | |||
| sed -e 's/$/ :/' >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
hp) | |||
# This case exists only to let depend.m4 do its work. It works by | |||
# looking at the text of this script. This case will never be run, | |||
# since it is checked for above. | |||
exit 1 | |||
;; | |||
sgi) | |||
if test "$libtool" = yes; then | |||
"$@" "-Wp,-MDupdate,$tmpdepfile" | |||
else | |||
"$@" -MDupdate "$tmpdepfile" | |||
fi | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
rm -f "$depfile" | |||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files | |||
echo "$object : \\" > "$depfile" | |||
# Clip off the initial element (the dependent). Don't try to be | |||
# clever and replace this with sed code, as IRIX sed won't handle | |||
# lines with more than a fixed number of characters (4096 in | |||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; | |||
# the IRIX cc adds comments like '#:fec' to the end of the | |||
# dependency line. | |||
tr ' ' "$nl" < "$tmpdepfile" \ | |||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | |||
| tr "$nl" ' ' >> "$depfile" | |||
echo >> "$depfile" | |||
# The second pass generates a dummy entry for each header file. | |||
tr ' ' "$nl" < "$tmpdepfile" \ | |||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ | |||
>> "$depfile" | |||
else | |||
make_dummy_depfile | |||
fi | |||
rm -f "$tmpdepfile" | |||
;; | |||
xlc) | |||
# This case exists only to let depend.m4 do its work. It works by | |||
# looking at the text of this script. This case will never be run, | |||
# since it is checked for above. | |||
exit 1 | |||
;; | |||
aix) | |||
# The C for AIX Compiler uses -M and outputs the dependencies | |||
# in a .u file. In older versions, this file always lives in the | |||
# current directory. Also, the AIX compiler puts '$object:' at the | |||
# start of each line; $object doesn't have directory information. | |||
# Version 6 uses the directory in both cases. | |||
set_dir_from "$object" | |||
set_base_from "$object" | |||
if test "$libtool" = yes; then | |||
tmpdepfile1=$dir$base.u | |||
tmpdepfile2=$base.u | |||
tmpdepfile3=$dir.libs/$base.u | |||
"$@" -Wc,-M | |||
else | |||
tmpdepfile1=$dir$base.u | |||
tmpdepfile2=$dir$base.u | |||
tmpdepfile3=$dir$base.u | |||
"$@" -M | |||
fi | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||
exit $stat | |||
fi | |||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||
do | |||
test -f "$tmpdepfile" && break | |||
done | |||
aix_post_process_depfile | |||
;; | |||
tcc) | |||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 | |||
# FIXME: That version still under development at the moment of writing. | |||
# Make that this statement remains true also for stable, released | |||
# versions. | |||
# It will wrap lines (doesn't matter whether long or short) with a | |||
# trailing '\', as in: | |||
# | |||
# foo.o : \ | |||
# foo.c \ | |||
# foo.h \ | |||
# | |||
# It will put a trailing '\' even on the last line, and will use leading | |||
# spaces rather than leading tabs (at least since its commit 0394caf7 | |||
# "Emit spaces for -MD"). | |||
"$@" -MD -MF "$tmpdepfile" | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
rm -f "$depfile" | |||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. | |||
# We have to change lines of the first kind to '$object: \'. | |||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" | |||
# And for each line of the second kind, we have to emit a 'dep.h:' | |||
# dummy dependency, to avoid the deleted-header problem. | |||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
## The order of this option in the case statement is important, since the | |||
## shell code in configure will try each of these formats in the order | |||
## listed in this file. A plain '-MD' option would be understood by many | |||
## compilers, so we must ensure this comes after the gcc and icc options. | |||
pgcc) | |||
# Portland's C compiler understands '-MD'. | |||
# Will always output deps to 'file.d' where file is the root name of the | |||
# source file under compilation, even if file resides in a subdirectory. | |||
# The object file name does not affect the name of the '.d' file. | |||
# pgcc 10.2 will output | |||
# foo.o: sub/foo.c sub/foo.h | |||
# and will wrap long lines using '\' : | |||
# foo.o: sub/foo.c ... \ | |||
# sub/foo.h ... \ | |||
# ... | |||
set_dir_from "$object" | |||
# Use the source, not the object, to determine the base name, since | |||
# that's sadly what pgcc will do too. | |||
set_base_from "$source" | |||
tmpdepfile=$base.d | |||
# For projects that build the same source file twice into different object | |||
# files, the pgcc approach of using the *source* file root name can cause | |||
# problems in parallel builds. Use a locking strategy to avoid stomping on | |||
# the same $tmpdepfile. | |||
lockdir=$base.d-lock | |||
trap " | |||
echo '$0: caught signal, cleaning up...' >&2 | |||
rmdir '$lockdir' | |||
exit 1 | |||
" 1 2 13 15 | |||
numtries=100 | |||
i=$numtries | |||
while test $i -gt 0; do | |||
# mkdir is a portable test-and-set. | |||
if mkdir "$lockdir" 2>/dev/null; then | |||
# This process acquired the lock. | |||
"$@" -MD | |||
stat=$? | |||
# Release the lock. | |||
rmdir "$lockdir" | |||
break | |||
else | |||
# If the lock is being held by a different process, wait | |||
# until the winning process is done or we timeout. | |||
while test -d "$lockdir" && test $i -gt 0; do | |||
sleep 1 | |||
i=`expr $i - 1` | |||
done | |||
fi | |||
i=`expr $i - 1` | |||
done | |||
trap - 1 2 13 15 | |||
if test $i -le 0; then | |||
echo "$0: failed to acquire lock after $numtries attempts" >&2 | |||
echo "$0: check lockdir '$lockdir'" >&2 | |||
exit 1 | |||
fi | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
rm -f "$depfile" | |||
# Each line is of the form `foo.o: dependent.h', | |||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. | |||
# Do two passes, one to just change these to | |||
# `$object: dependent.h' and one to simply `dependent.h:'. | |||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" | |||
# Some versions of the HPUX 10.20 sed can't process this invocation | |||
# correctly. Breaking it into two sed invocations is a workaround. | |||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | |||
| sed -e 's/$/ :/' >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
hp2) | |||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64 | |||
# compilers, which have integrated preprocessors. The correct option | |||
# to use with these is +Maked; it writes dependencies to a file named | |||
# 'foo.d', which lands next to the object file, wherever that | |||
# happens to be. | |||
# Much of this is similar to the tru64 case; see comments there. | |||
set_dir_from "$object" | |||
set_base_from "$object" | |||
if test "$libtool" = yes; then | |||
tmpdepfile1=$dir$base.d | |||
tmpdepfile2=$dir.libs/$base.d | |||
"$@" -Wc,+Maked | |||
else | |||
tmpdepfile1=$dir$base.d | |||
tmpdepfile2=$dir$base.d | |||
"$@" +Maked | |||
fi | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile1" "$tmpdepfile2" | |||
exit $stat | |||
fi | |||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" | |||
do | |||
test -f "$tmpdepfile" && break | |||
done | |||
if test -f "$tmpdepfile"; then | |||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" | |||
# Add 'dependent.h:' lines. | |||
sed -ne '2,${ | |||
s/^ *// | |||
s/ \\*$// | |||
s/$/:/ | |||
p | |||
}' "$tmpdepfile" >> "$depfile" | |||
else | |||
make_dummy_depfile | |||
fi | |||
rm -f "$tmpdepfile" "$tmpdepfile2" | |||
;; | |||
tru64) | |||
# The Tru64 compiler uses -MD to generate dependencies as a side | |||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. | |||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put | |||
# dependencies in 'foo.d' instead, so we check for that too. | |||
# Subdirectories are respected. | |||
set_dir_from "$object" | |||
set_base_from "$object" | |||
if test "$libtool" = yes; then | |||
# Libtool generates 2 separate objects for the 2 libraries. These | |||
# two compilations output dependencies in $dir.libs/$base.o.d and | |||
# in $dir$base.o.d. We have to check for both files, because | |||
# one of the two compilations can be disabled. We should prefer | |||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is | |||
# automatically cleaned when .libs/ is deleted, while ignoring | |||
# the former would cause a distcleancheck panic. | |||
tmpdepfile1=$dir$base.o.d # libtool 1.5 | |||
tmpdepfile2=$dir.libs/$base.o.d # Likewise. | |||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 | |||
"$@" -Wc,-MD | |||
else | |||
tmpdepfile1=$dir$base.d | |||
tmpdepfile2=$dir$base.d | |||
tmpdepfile3=$dir$base.d | |||
"$@" -MD | |||
fi | |||
stat=$? | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||
exit $stat | |||
fi | |||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||
do | |||
test -f "$tmpdepfile" && break | |||
done | |||
# Same post-processing that is required for AIX mode. | |||
aix_post_process_depfile | |||
;; | |||
msvc7) | |||
if test "$libtool" = yes; then | |||
showIncludes=-Wc,-showIncludes | |||
else | |||
showIncludes=-showIncludes | |||
fi | |||
"$@" $showIncludes > "$tmpdepfile" | |||
stat=$? | |||
grep -v '^Note: including file: ' "$tmpdepfile" | |||
if test $stat -ne 0; then | |||
rm -f "$tmpdepfile" | |||
exit $stat | |||
fi | |||
rm -f "$depfile" | |||
echo "$object : \\" > "$depfile" | |||
# The first sed program below extracts the file names and escapes | |||
# backslashes for cygpath. The second sed program outputs the file | |||
# name when reading, but also accumulates all include files in the | |||
# hold buffer in order to output them again at the end. This only | |||
# works with sed implementations that can handle large buffers. | |||
sed < "$tmpdepfile" -n ' | |||
/^Note: including file: *\(.*\)/ { | |||
s//\1/ | |||
s/\\/\\\\/g | |||
p | |||
}' | $cygpath_u | sort -u | sed -n ' | |||
s/ /\\ /g | |||
s/\(.*\)/'"$tab"'\1 \\/p | |||
s/.\(.*\) \\/\1:/ | |||
H | |||
$ { | |||
s/.*/'"$tab"'/ | |||
G | |||
p | |||
}' >> "$depfile" | |||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash | |||
rm -f "$tmpdepfile" | |||
;; | |||
msvc7msys) | |||
# This case exists only to let depend.m4 do its work. It works by | |||
# looking at the text of this script. This case will never be run, | |||
# since it is checked for above. | |||
exit 1 | |||
;; | |||
#nosideeffect) | |||
# This comment above is used by automake to tell side-effect | |||
# dependency tracking mechanisms from slower ones. | |||
dashmstdout) | |||
# Important note: in order to support this mode, a compiler *must* | |||
# always write the preprocessed file to stdout, regardless of -o. | |||
"$@" || exit $? | |||
# Remove the call to Libtool. | |||
if test "$libtool" = yes; then | |||
while test "X$1" != 'X--mode=compile'; do | |||
shift | |||
done | |||
shift | |||
fi | |||
# Remove '-o $object'. | |||
IFS=" " | |||
for arg | |||
do | |||
case $arg in | |||
-o) | |||
shift | |||
;; | |||
$object) | |||
shift | |||
;; | |||
*) | |||
set fnord "$@" "$arg" | |||
shift # fnord | |||
shift # $arg | |||
;; | |||
esac | |||
done | |||
test -z "$dashmflag" && dashmflag=-M | |||
# Require at least two characters before searching for ':' | |||
# in the target name. This is to cope with DOS-style filenames: | |||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. | |||
"$@" $dashmflag | | |||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" | |||
rm -f "$depfile" | |||
cat < "$tmpdepfile" > "$depfile" | |||
# Some versions of the HPUX 10.20 sed can't process this sed invocation | |||
# correctly. Breaking it into two sed invocations is a workaround. | |||
tr ' ' "$nl" < "$tmpdepfile" \ | |||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | |||
| sed -e 's/$/ :/' >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
dashXmstdout) | |||
# This case only exists to satisfy depend.m4. It is never actually | |||
# run, as this mode is specially recognized in the preamble. | |||
exit 1 | |||
;; | |||
makedepend) | |||
"$@" || exit $? | |||
# Remove any Libtool call | |||
if test "$libtool" = yes; then | |||
while test "X$1" != 'X--mode=compile'; do | |||
shift | |||
done | |||
shift | |||
fi | |||
# X makedepend | |||
shift | |||
cleared=no eat=no | |||
for arg | |||
do | |||
case $cleared in | |||
no) | |||
set ""; shift | |||
cleared=yes ;; | |||
esac | |||
if test $eat = yes; then | |||
eat=no | |||
continue | |||
fi | |||
case "$arg" in | |||
-D*|-I*) | |||
set fnord "$@" "$arg"; shift ;; | |||
# Strip any option that makedepend may not understand. Remove | |||
# the object too, otherwise makedepend will parse it as a source file. | |||
-arch) | |||
eat=yes ;; | |||
-*|$object) | |||
;; | |||
*) | |||
set fnord "$@" "$arg"; shift ;; | |||
esac | |||
done | |||
obj_suffix=`echo "$object" | sed 's/^.*\././'` | |||
touch "$tmpdepfile" | |||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" | |||
rm -f "$depfile" | |||
# makedepend may prepend the VPATH from the source file name to the object. | |||
# No need to regex-escape $object, excess matching of '.' is harmless. | |||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" | |||
# Some versions of the HPUX 10.20 sed can't process the last invocation | |||
# correctly. Breaking it into two sed invocations is a workaround. | |||
sed '1,2d' "$tmpdepfile" \ | |||
| tr ' ' "$nl" \ | |||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | |||
| sed -e 's/$/ :/' >> "$depfile" | |||
rm -f "$tmpdepfile" "$tmpdepfile".bak | |||
;; | |||
cpp) | |||
# Important note: in order to support this mode, a compiler *must* | |||
# always write the preprocessed file to stdout. | |||
"$@" || exit $? | |||
# Remove the call to Libtool. | |||
if test "$libtool" = yes; then | |||
while test "X$1" != 'X--mode=compile'; do | |||
shift | |||
done | |||
shift | |||
fi | |||
# Remove '-o $object'. | |||
IFS=" " | |||
for arg | |||
do | |||
case $arg in | |||
-o) | |||
shift | |||
;; | |||
$object) | |||
shift | |||
;; | |||
*) | |||
set fnord "$@" "$arg" | |||
shift # fnord | |||
shift # $arg | |||
;; | |||
esac | |||
done | |||
"$@" -E \ | |||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | |||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | |||
| sed '$ s: \\$::' > "$tmpdepfile" | |||
rm -f "$depfile" | |||
echo "$object : \\" > "$depfile" | |||
cat < "$tmpdepfile" >> "$depfile" | |||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
msvisualcpp) | |||
# Important note: in order to support this mode, a compiler *must* | |||
# always write the preprocessed file to stdout. | |||
"$@" || exit $? | |||
# Remove the call to Libtool. | |||
if test "$libtool" = yes; then | |||
while test "X$1" != 'X--mode=compile'; do | |||
shift | |||
done | |||
shift | |||
fi | |||
IFS=" " | |||
for arg | |||
do | |||
case "$arg" in | |||
-o) | |||
shift | |||
;; | |||
$object) | |||
shift | |||
;; | |||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") | |||
set fnord "$@" | |||
shift | |||
shift | |||
;; | |||
*) | |||
set fnord "$@" "$arg" | |||
shift | |||
shift | |||
;; | |||
esac | |||
done | |||
"$@" -E 2>/dev/null | | |||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" | |||
rm -f "$depfile" | |||
echo "$object : \\" > "$depfile" | |||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" | |||
echo "$tab" >> "$depfile" | |||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" | |||
rm -f "$tmpdepfile" | |||
;; | |||
msvcmsys) | |||
# This case exists only to let depend.m4 do its work. It works by | |||
# looking at the text of this script. This case will never be run, | |||
# since it is checked for above. | |||
exit 1 | |||
;; | |||
none) | |||
exec "$@" | |||
;; | |||
*) | |||
echo "Unknown depmode $depmode" 1>&2 | |||
exit 1 | |||
;; | |||
esac | |||
exit 0 | |||
# Local Variables: | |||
# mode: shell-script | |||
# sh-indentation: 2 | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-time-zone: "UTC" | |||
# time-stamp-end: "; # UTC" | |||
# End: |
@@ -0,0 +1,534 @@ | |||
#!/bin/sh | |||
# install - install a program, script, or datafile | |||
scriptversion=2011-11-20.07; # UTC | |||
# This originates from X11R5 (mit/util/scripts/install.sh), which was | |||
# later released in X11R6 (xc/config/util/install.sh) with the | |||
# following copyright and license. | |||
# | |||
# Copyright (C) 1994 X Consortium | |||
# | |||
# Permission is hereby granted, free of charge, to any person obtaining a copy | |||
# of this software and associated documentation files (the "Software"), to | |||
# deal in the Software without restriction, including without limitation the | |||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |||
# sell copies of the Software, and to permit persons to whom the Software is | |||
# furnished to do so, subject to the following conditions: | |||
# | |||
# The above copyright notice and this permission notice shall be included in | |||
# all copies or substantial portions of the Software. | |||
# | |||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- | |||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
# | |||
# Except as contained in this notice, the name of the X Consortium shall not | |||
# be used in advertising or otherwise to promote the sale, use or other deal- | |||
# ings in this Software without prior written authorization from the X Consor- | |||
# tium. | |||
# | |||
# | |||
# FSF changes to this file are in the public domain. | |||
# | |||
# Calling this script install-sh is preferred over install.sh, to prevent | |||
# 'make' implicit rules from creating a file called install from it | |||
# when there is no Makefile. | |||
# | |||
# This script is compatible with the BSD install script, but was written | |||
# from scratch. | |||
nl=' | |||
' | |||
IFS=" "" $nl" | |||
# set DOITPROG to echo to test this script | |||
# Don't use :- since 4.3BSD and earlier shells don't like it. | |||
doit=${DOITPROG-} | |||
if test -z "$doit"; then | |||
doit_exec=exec | |||
else | |||
doit_exec=$doit | |||
fi | |||
# Put in absolute file names if you don't have them in your path; | |||
# or use environment vars. | |||
chgrpprog=${CHGRPPROG-chgrp} | |||
chmodprog=${CHMODPROG-chmod} | |||
chownprog=${CHOWNPROG-chown} | |||
cmpprog=${CMPPROG-cmp} | |||
cpprog=${CPPROG-cp} | |||
mkdirprog=${MKDIRPROG-mkdir} | |||
mvprog=${MVPROG-mv} | |||
rmprog=${RMPROG-rm} | |||
stripprog=${STRIPPROG-strip} | |||
posix_glob='?' | |||
initialize_posix_glob=' | |||
test "$posix_glob" != "?" || { | |||
if (set -f) 2>/dev/null; then | |||
posix_glob= | |||
else | |||
posix_glob=: | |||
fi | |||
} | |||
' | |||
posix_mkdir= | |||
# Desired mode of installed file. | |||
mode=0755 | |||
chgrpcmd= | |||
chmodcmd=$chmodprog | |||
chowncmd= | |||
mvcmd=$mvprog | |||
rmcmd="$rmprog -f" | |||
stripcmd= | |||
src= | |||
dst= | |||
dir_arg= | |||
dst_arg= | |||
copy_on_change=false | |||
no_target_directory= | |||
usage="\ | |||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | |||
or: $0 [OPTION]... SRCFILES... DIRECTORY | |||
or: $0 [OPTION]... -t DIRECTORY SRCFILES... | |||
or: $0 [OPTION]... -d DIRECTORIES... | |||
In the 1st form, copy SRCFILE to DSTFILE. | |||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. | |||
In the 4th, create DIRECTORIES. | |||
Options: | |||
--help display this help and exit. | |||
--version display version info and exit. | |||
-c (ignored) | |||
-C install only if different (preserve the last data modification time) | |||
-d create directories instead of installing files. | |||
-g GROUP $chgrpprog installed files to GROUP. | |||
-m MODE $chmodprog installed files to MODE. | |||
-o USER $chownprog installed files to USER. | |||
-s $stripprog installed files. | |||
-t DIRECTORY install into DIRECTORY. | |||
-T report an error if DSTFILE is a directory. | |||
Environment variables override the default commands: | |||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG | |||
RMPROG STRIPPROG | |||
" | |||
while test $# -ne 0; do | |||
case $1 in | |||
-c) ;; | |||
-C) copy_on_change=true;; | |||
-d) dir_arg=true;; | |||
-g) chgrpcmd="$chgrpprog $2" | |||
shift;; | |||
--help) echo "$usage"; exit $?;; | |||
-m) mode=$2 | |||
case $mode in | |||
*' '* | *' '* | *' | |||
'* | *'*'* | *'?'* | *'['*) | |||
echo "$0: invalid mode: $mode" >&2 | |||
exit 1;; | |||
esac | |||
shift;; | |||
-o) chowncmd="$chownprog $2" | |||
shift;; | |||
-s) stripcmd=$stripprog;; | |||
-t) dst_arg=$2 | |||
# Protect names problematic for 'test' and other utilities. | |||
case $dst_arg in | |||
-* | [=\(\)!]) dst_arg=./$dst_arg;; | |||
esac | |||
shift;; | |||
-T) no_target_directory=true;; | |||
--version) echo "$0 $scriptversion"; exit $?;; | |||
--) shift | |||
break;; | |||
-*) echo "$0: invalid option: $1" >&2 | |||
exit 1;; | |||
*) break;; | |||
esac | |||
shift | |||
done | |||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then | |||
# When -d is used, all remaining arguments are directories to create. | |||
# When -t is used, the destination is already specified. | |||
# Otherwise, the last argument is the destination. Remove it from $@. | |||
for arg | |||
do | |||
if test -n "$dst_arg"; then | |||
# $@ is not empty: it contains at least $arg. | |||
set fnord "$@" "$dst_arg" | |||
shift # fnord | |||
fi | |||
shift # arg | |||
dst_arg=$arg | |||
# Protect names problematic for 'test' and other utilities. | |||
case $dst_arg in | |||
-* | [=\(\)!]) dst_arg=./$dst_arg;; | |||
esac | |||
done | |||
fi | |||
if test $# -eq 0; then | |||
if test -z "$dir_arg"; then | |||
echo "$0: no input file specified." >&2 | |||
exit 1 | |||
fi | |||
# It's OK to call 'install-sh -d' without argument. | |||
# This can happen when creating conditional directories. | |||
exit 0 | |||
fi | |||
if test -z "$dir_arg"; then | |||
do_exit='(exit $ret); exit $ret' | |||
trap "ret=129; $do_exit" 1 | |||
trap "ret=130; $do_exit" 2 | |||
trap "ret=141; $do_exit" 13 | |||
trap "ret=143; $do_exit" 15 | |||
# Set umask so as not to create temps with too-generous modes. | |||
# However, 'strip' requires both read and write access to temps. | |||
case $mode in | |||
# Optimize common cases. | |||
*644) cp_umask=133;; | |||
*755) cp_umask=22;; | |||
*[0-7]) | |||
if test -z "$stripcmd"; then | |||
u_plus_rw= | |||
else | |||
u_plus_rw='% 200' | |||
fi | |||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; | |||
*) | |||
if test -z "$stripcmd"; then | |||
u_plus_rw= | |||
else | |||
u_plus_rw=,u+rw | |||
fi | |||
cp_umask=$mode$u_plus_rw;; | |||
esac | |||
fi | |||
for src | |||
do | |||
# Protect names problematic for 'test' and other utilities. | |||
case $src in | |||
-* | [=\(\)!]) src=./$src;; | |||
esac | |||
if test -n "$dir_arg"; then | |||
dst=$src | |||
dstdir=$dst | |||
test -d "$dstdir" | |||
dstdir_status=$? | |||
else | |||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command | |||
# might cause directories to be created, which would be especially bad | |||
# if $src (and thus $dsttmp) contains '*'. | |||
if test ! -f "$src" && test ! -d "$src"; then | |||
echo "$0: $src does not exist." >&2 | |||
exit 1 | |||
fi | |||
if test -z "$dst_arg"; then | |||
echo "$0: no destination specified." >&2 | |||
exit 1 | |||
fi | |||
dst=$dst_arg | |||
# If destination is a directory, append the input filename; won't work | |||
# if double slashes aren't ignored. | |||
if test -d "$dst"; then | |||
if test -n "$no_target_directory"; then | |||
echo "$0: $dst_arg: Is a directory" >&2 | |||
exit 1 | |||
fi | |||
dstdir=$dst | |||
dst=$dstdir/`basename "$src"` | |||
dstdir_status=0 | |||
else | |||
# Prefer dirname, but fall back on a substitute if dirname fails. | |||
dstdir=` | |||
(dirname "$dst") 2>/dev/null || | |||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ | |||
X"$dst" : 'X\(//\)[^/]' \| \ | |||
X"$dst" : 'X\(//\)$' \| \ | |||
X"$dst" : 'X\(/\)' \| . 2>/dev/null || | |||
echo X"$dst" | | |||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ | |||
s//\1/ | |||
q | |||
} | |||
/^X\(\/\/\)[^/].*/{ | |||
s//\1/ | |||
q | |||
} | |||
/^X\(\/\/\)$/{ | |||
s//\1/ | |||
q | |||
} | |||
/^X\(\/\).*/{ | |||
s//\1/ | |||
q | |||
} | |||
s/.*/./; q' | |||
` | |||
test -d "$dstdir" | |||
dstdir_status=$? | |||
fi | |||
fi | |||
obsolete_mkdir_used=false | |||
if test $dstdir_status != 0; then | |||
case $posix_mkdir in | |||
'') | |||
# Create intermediate dirs using mode 755 as modified by the umask. | |||
# This is like FreeBSD 'install' as of 1997-10-28. | |||
umask=`umask` | |||
case $stripcmd.$umask in | |||
# Optimize common cases. | |||
*[2367][2367]) mkdir_umask=$umask;; | |||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; | |||
*[0-7]) | |||
mkdir_umask=`expr $umask + 22 \ | |||
- $umask % 100 % 40 + $umask % 20 \ | |||
- $umask % 10 % 4 + $umask % 2 | |||
`;; | |||
*) mkdir_umask=$umask,go-w;; | |||
esac | |||
# With -d, create the new directory with the user-specified mode. | |||
# Otherwise, rely on $mkdir_umask. | |||
if test -n "$dir_arg"; then | |||
mkdir_mode=-m$mode | |||
else | |||
mkdir_mode= | |||
fi | |||
posix_mkdir=false | |||
case $umask in | |||
*[123567][0-7][0-7]) | |||
# POSIX mkdir -p sets u+wx bits regardless of umask, which | |||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0. | |||
;; | |||
*) | |||
# $RANDOM is not portable (e.g. dash); use it when possible to | |||
# lower collision chance | |||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ | |||
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 | |||
# As "mkdir -p" follows symlinks and we work in /tmp possibly; so | |||
# create the $tmpdir first (and fail if unsuccessful) to make sure | |||
# that nobody tries to guess the $tmpdir name. | |||
if (umask $mkdir_umask && | |||
$mkdirprog $mkdir_mode "$tmpdir" && | |||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 | |||
then | |||
if test -z "$dir_arg" || { | |||
# Check for POSIX incompatibilities with -m. | |||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or | |||
# other-writable bit of parent directory when it shouldn't. | |||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory. | |||
test_tmpdir="$tmpdir/a" | |||
ls_ld_tmpdir=`ls -ld "$test_tmpdir"` | |||
case $ls_ld_tmpdir in | |||
d????-?r-*) different_mode=700;; | |||
d????-?--*) different_mode=755;; | |||
*) false;; | |||
esac && | |||
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && { | |||
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` | |||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" | |||
} | |||
} | |||
then posix_mkdir=: | |||
fi | |||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" | |||
else | |||
# Remove any dirs left behind by ancient mkdir implementations. | |||
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null | |||
fi | |||
trap '' 0;; | |||
esac;; | |||
esac | |||
if | |||
$posix_mkdir && ( | |||
umask $mkdir_umask && | |||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | |||
) | |||
then : | |||
else | |||
# The umask is ridiculous, or mkdir does not conform to POSIX, | |||
# or it failed possibly due to a race condition. Create the | |||
# directory the slow way, step by step, checking for races as we go. | |||
case $dstdir in | |||
/*) prefix='/';; | |||
[-=\(\)!]*) prefix='./';; | |||
*) prefix='';; | |||
esac | |||
eval "$initialize_posix_glob" | |||
oIFS=$IFS | |||
IFS=/ | |||
$posix_glob set -f | |||
set fnord $dstdir | |||
shift | |||
$posix_glob set +f | |||
IFS=$oIFS | |||
prefixes= | |||
for d | |||
do | |||
test X"$d" = X && continue | |||
prefix=$prefix$d | |||
if test -d "$prefix"; then | |||
prefixes= | |||
else | |||
if $posix_mkdir; then | |||
(umask=$mkdir_umask && | |||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break | |||
# Don't fail if two instances are running concurrently. | |||
test -d "$prefix" || exit 1 | |||
else | |||
case $prefix in | |||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; | |||
*) qprefix=$prefix;; | |||
esac | |||
prefixes="$prefixes '$qprefix'" | |||
fi | |||
fi | |||
prefix=$prefix/ | |||
done | |||
if test -n "$prefixes"; then | |||
# Don't fail if two instances are running concurrently. | |||
(umask $mkdir_umask && | |||
eval "\$doit_exec \$mkdirprog $prefixes") || | |||
test -d "$dstdir" || exit 1 | |||
obsolete_mkdir_used=true | |||
fi | |||
fi | |||
fi | |||
if test -n "$dir_arg"; then | |||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } && | |||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && | |||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || | |||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 | |||
else | |||
# Make a couple of temp file names in the proper directory. | |||
dsttmp=$dstdir/_inst.$$_ | |||
rmtmp=$dstdir/_rm.$$_ | |||
# Trap to clean up those temp files at exit. | |||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 | |||
# Copy the file name to the temp name. | |||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && | |||
# and set any options; do chmod last to preserve setuid bits. | |||
# | |||
# If any of these fail, we abort the whole thing. If we want to | |||
# ignore errors from any of these, just make sure not to ignore | |||
# errors from the above "$doit $cpprog $src $dsttmp" command. | |||
# | |||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && | |||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && | |||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && | |||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && | |||
# If -C, don't bother to copy if it wouldn't change the file. | |||
if $copy_on_change && | |||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && | |||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && | |||
eval "$initialize_posix_glob" && | |||
$posix_glob set -f && | |||
set X $old && old=:$2:$4:$5:$6 && | |||
set X $new && new=:$2:$4:$5:$6 && | |||
$posix_glob set +f && | |||
test "$old" = "$new" && | |||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 | |||
then | |||
rm -f "$dsttmp" | |||
else | |||
# Rename the file to the real destination. | |||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || | |||
# The rename failed, perhaps because mv can't rename something else | |||
# to itself, or perhaps because mv is so ancient that it does not | |||
# support -f. | |||
{ | |||
# Now remove or move aside any old file at destination location. | |||
# We try this two ways since rm can't unlink itself on some | |||
# systems and the destination file might be busy for other | |||
# reasons. In this case, the final cleanup might fail but the new | |||
# file should still install successfully. | |||
{ | |||
test ! -f "$dst" || | |||
$doit $rmcmd -f "$dst" 2>/dev/null || | |||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | |||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } | |||
} || | |||
{ echo "$0: cannot unlink or rename $dst" >&2 | |||
(exit 1); exit 1 | |||
} | |||
} && | |||
# Now rename the file to the real destination. | |||
$doit $mvcmd "$dsttmp" "$dst" | |||
} | |||
fi || exit 1 | |||
trap '' 0 | |||
fi | |||
done | |||
# Local variables: | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-time-zone: "UTC" | |||
# time-stamp-end: "; # UTC" | |||
# End: |
@@ -0,0 +1,215 @@ | |||
#! /bin/sh | |||
# Common wrapper for a few potentially missing GNU programs. | |||
scriptversion=2013-10-28.13; # UTC | |||
# Copyright (C) 1996-2013 Free Software Foundation, Inc. | |||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. | |||
# This program is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation; either version 2, or (at your option) | |||
# any later version. | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# As a special exception to the GNU General Public License, if you | |||
# distribute this file as part of a program that contains a | |||
# configuration script generated by Autoconf, you may include it under | |||
# the same distribution terms that you use for the rest of that program. | |||
if test $# -eq 0; then | |||
echo 1>&2 "Try '$0 --help' for more information" | |||
exit 1 | |||
fi | |||
case $1 in | |||
--is-lightweight) | |||
# Used by our autoconf macros to check whether the available missing | |||
# script is modern enough. | |||
exit 0 | |||
;; | |||
--run) | |||
# Back-compat with the calling convention used by older automake. | |||
shift | |||
;; | |||
-h|--h|--he|--hel|--help) | |||
echo "\ | |||
$0 [OPTION]... PROGRAM [ARGUMENT]... | |||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due | |||
to PROGRAM being missing or too old. | |||
Options: | |||
-h, --help display this help and exit | |||
-v, --version output version information and exit | |||
Supported PROGRAM values: | |||
aclocal autoconf autoheader autom4te automake makeinfo | |||
bison yacc flex lex help2man | |||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and | |||
'g' are ignored when checking the name. | |||
Send bug reports to <bug-automake@gnu.org>." | |||
exit $? | |||
;; | |||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version) | |||
echo "missing $scriptversion (GNU Automake)" | |||
exit $? | |||
;; | |||
-*) | |||
echo 1>&2 "$0: unknown '$1' option" | |||
echo 1>&2 "Try '$0 --help' for more information" | |||
exit 1 | |||
;; | |||
esac | |||
# Run the given program, remember its exit status. | |||
"$@"; st=$? | |||
# If it succeeded, we are done. | |||
test $st -eq 0 && exit 0 | |||
# Also exit now if we it failed (or wasn't found), and '--version' was | |||
# passed; such an option is passed most likely to detect whether the | |||
# program is present and works. | |||
case $2 in --version|--help) exit $st;; esac | |||
# Exit code 63 means version mismatch. This often happens when the user | |||
# tries to use an ancient version of a tool on a file that requires a | |||
# minimum version. | |||
if test $st -eq 63; then | |||
msg="probably too old" | |||
elif test $st -eq 127; then | |||
# Program was missing. | |||
msg="missing on your system" | |||
else | |||
# Program was found and executed, but failed. Give up. | |||
exit $st | |||
fi | |||
perl_URL=http://www.perl.org/ | |||
flex_URL=http://flex.sourceforge.net/ | |||
gnu_software_URL=http://www.gnu.org/software | |||
program_details () | |||
{ | |||
case $1 in | |||
aclocal|automake) | |||
echo "The '$1' program is part of the GNU Automake package:" | |||
echo "<$gnu_software_URL/automake>" | |||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" | |||
echo "<$gnu_software_URL/autoconf>" | |||
echo "<$gnu_software_URL/m4/>" | |||
echo "<$perl_URL>" | |||
;; | |||
autoconf|autom4te|autoheader) | |||
echo "The '$1' program is part of the GNU Autoconf package:" | |||
echo "<$gnu_software_URL/autoconf/>" | |||
echo "It also requires GNU m4 and Perl in order to run:" | |||
echo "<$gnu_software_URL/m4/>" | |||
echo "<$perl_URL>" | |||
;; | |||
esac | |||
} | |||
give_advice () | |||
{ | |||
# Normalize program name to check for. | |||
normalized_program=`echo "$1" | sed ' | |||
s/^gnu-//; t | |||
s/^gnu//; t | |||
s/^g//; t'` | |||
printf '%s\n' "'$1' is $msg." | |||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'" | |||
case $normalized_program in | |||
autoconf*) | |||
echo "You should only need it if you modified 'configure.ac'," | |||
echo "or m4 files included by it." | |||
program_details 'autoconf' | |||
;; | |||
autoheader*) | |||
echo "You should only need it if you modified 'acconfig.h' or" | |||
echo "$configure_deps." | |||
program_details 'autoheader' | |||
;; | |||
automake*) | |||
echo "You should only need it if you modified 'Makefile.am' or" | |||
echo "$configure_deps." | |||
program_details 'automake' | |||
;; | |||
aclocal*) | |||
echo "You should only need it if you modified 'acinclude.m4' or" | |||
echo "$configure_deps." | |||
program_details 'aclocal' | |||
;; | |||
autom4te*) | |||
echo "You might have modified some maintainer files that require" | |||
echo "the 'autom4te' program to be rebuilt." | |||
program_details 'autom4te' | |||
;; | |||
bison*|yacc*) | |||
echo "You should only need it if you modified a '.y' file." | |||
echo "You may want to install the GNU Bison package:" | |||
echo "<$gnu_software_URL/bison/>" | |||
;; | |||
lex*|flex*) | |||
echo "You should only need it if you modified a '.l' file." | |||
echo "You may want to install the Fast Lexical Analyzer package:" | |||
echo "<$flex_URL>" | |||
;; | |||
help2man*) | |||
echo "You should only need it if you modified a dependency" \ | |||
"of a man page." | |||
echo "You may want to install the GNU Help2man package:" | |||
echo "<$gnu_software_URL/help2man/>" | |||
;; | |||
makeinfo*) | |||
echo "You should only need it if you modified a '.texi' file, or" | |||
echo "any other file indirectly affecting the aspect of the manual." | |||
echo "You might want to install the Texinfo package:" | |||
echo "<$gnu_software_URL/texinfo/>" | |||
echo "The spurious makeinfo call might also be the consequence of" | |||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" | |||
echo "want to install GNU make:" | |||
echo "<$gnu_software_URL/make/>" | |||
;; | |||
*) | |||
echo "You might have modified some files without having the proper" | |||
echo "tools for further handling them. Check the 'README' file, it" | |||
echo "often tells you about the needed prerequisites for installing" | |||
echo "this package. You may also peek at any GNU archive site, in" | |||
echo "case some other package contains this missing '$1' program." | |||
;; | |||
esac | |||
} | |||
give_advice "$1" | sed -e '1s/^/WARNING: /' \ | |||
-e '2,$s/^/ /' >&2 | |||
# Propagate the correct exit status (expected to be 127 for a program | |||
# not found, 63 for a program that failed due to version mismatch). | |||
exit $st | |||
# Local variables: | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-time-zone: "UTC" | |||
# time-stamp-end: "; # UTC" | |||
# End: |
@@ -0,0 +1,139 @@ | |||
#! /bin/sh | |||
# test-driver - basic testsuite driver script. | |||
scriptversion=2013-07-13.22; # UTC | |||
# Copyright (C) 2011-2013 Free Software Foundation, Inc. | |||
# | |||
# This program is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation; either version 2, or (at your option) | |||
# any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# As a special exception to the GNU General Public License, if you | |||
# distribute this file as part of a program that contains a | |||
# configuration script generated by Autoconf, you may include it under | |||
# the same distribution terms that you use for the rest of that program. | |||
# This file is maintained in Automake, please report | |||
# bugs to <bug-automake@gnu.org> or send patches to | |||
# <automake-patches@gnu.org>. | |||
# Make unconditional expansion of undefined variables an error. This | |||
# helps a lot in preventing typo-related bugs. | |||
set -u | |||
usage_error () | |||
{ | |||
echo "$0: $*" >&2 | |||
print_usage >&2 | |||
exit 2 | |||
} | |||
print_usage () | |||
{ | |||
cat <<END | |||
Usage: | |||
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH | |||
[--expect-failure={yes|no}] [--color-tests={yes|no}] | |||
[--enable-hard-errors={yes|no}] [--] | |||
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] | |||
The '--test-name', '--log-file' and '--trs-file' options are mandatory. | |||
END | |||
} | |||
test_name= # Used for reporting. | |||
log_file= # Where to save the output of the test script. | |||
trs_file= # Where to save the metadata of the test run. | |||
expect_failure=no | |||
color_tests=no | |||
enable_hard_errors=yes | |||
while test $# -gt 0; do | |||
case $1 in | |||
--help) print_usage; exit $?;; | |||
--version) echo "test-driver $scriptversion"; exit $?;; | |||
--test-name) test_name=$2; shift;; | |||
--log-file) log_file=$2; shift;; | |||
--trs-file) trs_file=$2; shift;; | |||
--color-tests) color_tests=$2; shift;; | |||
--expect-failure) expect_failure=$2; shift;; | |||
--enable-hard-errors) enable_hard_errors=$2; shift;; | |||
--) shift; break;; | |||
-*) usage_error "invalid option: '$1'";; | |||
*) break;; | |||
esac | |||
shift | |||
done | |||
missing_opts= | |||
test x"$test_name" = x && missing_opts="$missing_opts --test-name" | |||
test x"$log_file" = x && missing_opts="$missing_opts --log-file" | |||
test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" | |||
if test x"$missing_opts" != x; then | |||
usage_error "the following mandatory options are missing:$missing_opts" | |||
fi | |||
if test $# -eq 0; then | |||
usage_error "missing argument" | |||
fi | |||
if test $color_tests = yes; then | |||
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. | |||
red='[0;31m' # Red. | |||
grn='[0;32m' # Green. | |||
lgn='[1;32m' # Light green. | |||
blu='[1;34m' # Blue. | |||
mgn='[0;35m' # Magenta. | |||
std='[m' # No color. | |||
else | |||
red= grn= lgn= blu= mgn= std= | |||
fi | |||
do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' | |||
trap "st=129; $do_exit" 1 | |||
trap "st=130; $do_exit" 2 | |||
trap "st=141; $do_exit" 13 | |||
trap "st=143; $do_exit" 15 | |||
# Test script is run here. | |||
"$@" >$log_file 2>&1 | |||
estatus=$? | |||
if test $enable_hard_errors = no && test $estatus -eq 99; then | |||
estatus=1 | |||
fi | |||
case $estatus:$expect_failure in | |||
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; | |||
0:*) col=$grn res=PASS recheck=no gcopy=no;; | |||
77:*) col=$blu res=SKIP recheck=no gcopy=yes;; | |||
99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; | |||
*:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; | |||
*:*) col=$red res=FAIL recheck=yes gcopy=yes;; | |||
esac | |||
# Report outcome to console. | |||
echo "${col}${res}${std}: $test_name" | |||
# Register the test result, and other relevant metadata. | |||
echo ":test-result: $res" > $trs_file | |||
echo ":global-test-result: $res" >> $trs_file | |||
echo ":recheck: $recheck" >> $trs_file | |||
echo ":copy-in-global-log: $gcopy" >> $trs_file | |||
# Local Variables: | |||
# mode: shell-script | |||
# sh-indentation: 2 | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-time-zone: "UTC" | |||
# time-stamp-end: "; # UTC" | |||
# End: |