Commit b072ff96bf689617045dc5785d910a2c3240283d

Authored by Julien LANGLOIS
1 parent baba3f1e

build-aux

build-aux/compile 0 → 100755
  1 +#! /bin/sh
  2 +# Wrapper for compilers which do not understand '-c -o'.
  3 +
  4 +scriptversion=2012-10-14.11; # UTC
  5 +
  6 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
  7 +# Written by Tom Tromey <tromey@cygnus.com>.
  8 +#
  9 +# This program is free software; you can redistribute it and/or modify
  10 +# it under the terms of the GNU General Public License as published by
  11 +# the Free Software Foundation; either version 2, or (at your option)
  12 +# any later version.
  13 +#
  14 +# This program is distributed in the hope that it will be useful,
  15 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17 +# GNU General Public License for more details.
  18 +#
  19 +# You should have received a copy of the GNU General Public License
  20 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
  21 +
  22 +# As a special exception to the GNU General Public License, if you
  23 +# distribute this file as part of a program that contains a
  24 +# configuration script generated by Autoconf, you may include it under
  25 +# the same distribution terms that you use for the rest of that program.
  26 +
  27 +# This file is maintained in Automake, please report
  28 +# bugs to <bug-automake@gnu.org> or send patches to
  29 +# <automake-patches@gnu.org>.
  30 +
  31 +nl='
  32 +'
  33 +
  34 +# We need space, tab and new line, in precisely that order. Quoting is
  35 +# there to prevent tools from complaining about whitespace usage.
  36 +IFS=" "" $nl"
  37 +
  38 +file_conv=
  39 +
  40 +# func_file_conv build_file lazy
  41 +# Convert a $build file to $host form and store it in $file
  42 +# Currently only supports Windows hosts. If the determined conversion
  43 +# type is listed in (the comma separated) LAZY, no conversion will
  44 +# take place.
  45 +func_file_conv ()
  46 +{
  47 + file=$1
  48 + case $file in
  49 + / | /[!/]*) # absolute file, and not a UNC file
  50 + if test -z "$file_conv"; then
  51 + # lazily determine how to convert abs files
  52 + case `uname -s` in
  53 + MINGW*)
  54 + file_conv=mingw
  55 + ;;
  56 + CYGWIN*)
  57 + file_conv=cygwin
  58 + ;;
  59 + *)
  60 + file_conv=wine
  61 + ;;
  62 + esac
  63 + fi
  64 + case $file_conv/,$2, in
  65 + *,$file_conv,*)
  66 + ;;
  67 + mingw/*)
  68 + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
  69 + ;;
  70 + cygwin/*)
  71 + file=`cygpath -m "$file" || echo "$file"`
  72 + ;;
  73 + wine/*)
  74 + file=`winepath -w "$file" || echo "$file"`
  75 + ;;
  76 + esac
  77 + ;;
  78 + esac
  79 +}
  80 +
  81 +# func_cl_dashL linkdir
  82 +# Make cl look for libraries in LINKDIR
  83 +func_cl_dashL ()
  84 +{
  85 + func_file_conv "$1"
  86 + if test -z "$lib_path"; then
  87 + lib_path=$file
  88 + else
  89 + lib_path="$lib_path;$file"
  90 + fi
  91 + linker_opts="$linker_opts -LIBPATH:$file"
  92 +}
  93 +
  94 +# func_cl_dashl library
  95 +# Do a library search-path lookup for cl
  96 +func_cl_dashl ()
  97 +{
  98 + lib=$1
  99 + found=no
  100 + save_IFS=$IFS
  101 + IFS=';'
  102 + for dir in $lib_path $LIB
  103 + do
  104 + IFS=$save_IFS
  105 + if $shared && test -f "$dir/$lib.dll.lib"; then
  106 + found=yes
  107 + lib=$dir/$lib.dll.lib
  108 + break
  109 + fi
  110 + if test -f "$dir/$lib.lib"; then
  111 + found=yes
  112 + lib=$dir/$lib.lib
  113 + break
  114 + fi
  115 + if test -f "$dir/lib$lib.a"; then
  116 + found=yes
  117 + lib=$dir/lib$lib.a
  118 + break
  119 + fi
  120 + done
  121 + IFS=$save_IFS
  122 +
  123 + if test "$found" != yes; then
  124 + lib=$lib.lib
  125 + fi
  126 +}
  127 +
  128 +# func_cl_wrapper cl arg...
  129 +# Adjust compile command to suit cl
  130 +func_cl_wrapper ()
  131 +{
  132 + # Assume a capable shell
  133 + lib_path=
  134 + shared=:
  135 + linker_opts=
  136 + for arg
  137 + do
  138 + if test -n "$eat"; then
  139 + eat=
  140 + else
  141 + case $1 in
  142 + -o)
  143 + # configure might choose to run compile as 'compile cc -o foo foo.c'.
  144 + eat=1
  145 + case $2 in
  146 + *.o | *.[oO][bB][jJ])
  147 + func_file_conv "$2"
  148 + set x "$@" -Fo"$file"
  149 + shift
  150 + ;;
  151 + *)
  152 + func_file_conv "$2"
  153 + set x "$@" -Fe"$file"
  154 + shift
  155 + ;;
  156 + esac
  157 + ;;
  158 + -I)
  159 + eat=1
  160 + func_file_conv "$2" mingw
  161 + set x "$@" -I"$file"
  162 + shift
  163 + ;;
  164 + -I*)
  165 + func_file_conv "${1#-I}" mingw
  166 + set x "$@" -I"$file"
  167 + shift
  168 + ;;
  169 + -l)
  170 + eat=1
  171 + func_cl_dashl "$2"
  172 + set x "$@" "$lib"
  173 + shift
  174 + ;;
  175 + -l*)
  176 + func_cl_dashl "${1#-l}"
  177 + set x "$@" "$lib"
  178 + shift
  179 + ;;
  180 + -L)
  181 + eat=1
  182 + func_cl_dashL "$2"
  183 + ;;
  184 + -L*)
  185 + func_cl_dashL "${1#-L}"
  186 + ;;
  187 + -static)
  188 + shared=false
  189 + ;;
  190 + -Wl,*)
  191 + arg=${1#-Wl,}
  192 + save_ifs="$IFS"; IFS=','
  193 + for flag in $arg; do
  194 + IFS="$save_ifs"
  195 + linker_opts="$linker_opts $flag"
  196 + done
  197 + IFS="$save_ifs"
  198 + ;;
  199 + -Xlinker)
  200 + eat=1
  201 + linker_opts="$linker_opts $2"
  202 + ;;
  203 + -*)
  204 + set x "$@" "$1"
  205 + shift
  206 + ;;
  207 + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
  208 + func_file_conv "$1"
  209 + set x "$@" -Tp"$file"
  210 + shift
  211 + ;;
  212 + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
  213 + func_file_conv "$1" mingw
  214 + set x "$@" "$file"
  215 + shift
  216 + ;;
  217 + *)
  218 + set x "$@" "$1"
  219 + shift
  220 + ;;
  221 + esac
  222 + fi
  223 + shift
  224 + done
  225 + if test -n "$linker_opts"; then
  226 + linker_opts="-link$linker_opts"
  227 + fi
  228 + exec "$@" $linker_opts
  229 + exit 1
  230 +}
  231 +
  232 +eat=
  233 +
  234 +case $1 in
  235 + '')
  236 + echo "$0: No command. Try '$0 --help' for more information." 1>&2
  237 + exit 1;
  238 + ;;
  239 + -h | --h*)
  240 + cat <<\EOF
  241 +Usage: compile [--help] [--version] PROGRAM [ARGS]
  242 +
  243 +Wrapper for compilers which do not understand '-c -o'.
  244 +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
  245 +arguments, and rename the output as expected.
  246 +
  247 +If you are trying to build a whole package this is not the
  248 +right script to run: please start by reading the file 'INSTALL'.
  249 +
  250 +Report bugs to <bug-automake@gnu.org>.
  251 +EOF
  252 + exit $?
  253 + ;;
  254 + -v | --v*)
  255 + echo "compile $scriptversion"
  256 + exit $?
  257 + ;;
  258 + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
  259 + func_cl_wrapper "$@" # Doesn't return...
  260 + ;;
  261 +esac
  262 +
  263 +ofile=
  264 +cfile=
  265 +
  266 +for arg
  267 +do
  268 + if test -n "$eat"; then
  269 + eat=
  270 + else
  271 + case $1 in
  272 + -o)
  273 + # configure might choose to run compile as 'compile cc -o foo foo.c'.
  274 + # So we strip '-o arg' only if arg is an object.
  275 + eat=1
  276 + case $2 in
  277 + *.o | *.obj)
  278 + ofile=$2
  279 + ;;
  280 + *)
  281 + set x "$@" -o "$2"
  282 + shift
  283 + ;;
  284 + esac
  285 + ;;
  286 + *.c)
  287 + cfile=$1
  288 + set x "$@" "$1"
  289 + shift
  290 + ;;
  291 + *)
  292 + set x "$@" "$1"
  293 + shift
  294 + ;;
  295 + esac
  296 + fi
  297 + shift
  298 +done
  299 +
  300 +if test -z "$ofile" || test -z "$cfile"; then
  301 + # If no '-o' option was seen then we might have been invoked from a
  302 + # pattern rule where we don't need one. That is ok -- this is a
  303 + # normal compilation that the losing compiler can handle. If no
  304 + # '.c' file was seen then we are probably linking. That is also
  305 + # ok.
  306 + exec "$@"
  307 +fi
  308 +
  309 +# Name of file we expect compiler to create.
  310 +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
  311 +
  312 +# Create the lock directory.
  313 +# Note: use '[/\\:.-]' here to ensure that we don't use the same name
  314 +# that we are using for the .o file. Also, base the name on the expected
  315 +# object file name, since that is what matters with a parallel build.
  316 +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
  317 +while true; do
  318 + if mkdir "$lockdir" >/dev/null 2>&1; then
  319 + break
  320 + fi
  321 + sleep 1
  322 +done
  323 +# FIXME: race condition here if user kills between mkdir and trap.
  324 +trap "rmdir '$lockdir'; exit 1" 1 2 15
  325 +
  326 +# Run the compile.
  327 +"$@"
  328 +ret=$?
  329 +
  330 +if test -f "$cofile"; then
  331 + test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
  332 +elif test -f "${cofile}bj"; then
  333 + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
  334 +fi
  335 +
  336 +rmdir "$lockdir"
  337 +exit $ret
  338 +
  339 +# Local Variables:
  340 +# mode: shell-script
  341 +# sh-indentation: 2
  342 +# eval: (add-hook 'write-file-hooks 'time-stamp)
  343 +# time-stamp-start: "scriptversion="
  344 +# time-stamp-format: "%:y-%02m-%02d.%02H"
  345 +# time-stamp-time-zone: "UTC"
  346 +# time-stamp-end: "; # UTC"
  347 +# End:
... ...
build-aux/depcomp 0 → 100755
  1 +#! /bin/sh
  2 +# depcomp - compile a program generating dependencies as side-effects
  3 +
  4 +scriptversion=2013-05-30.07; # UTC
  5 +
  6 +# Copyright (C) 1999-2013 Free Software Foundation, Inc.
  7 +
  8 +# This program is free software; you can redistribute it and/or modify
  9 +# it under the terms of the GNU General Public License as published by
  10 +# the Free Software Foundation; either version 2, or (at your option)
  11 +# any later version.
  12 +
  13 +# This program is distributed in the hope that it will be useful,
  14 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 +# GNU General Public License for more details.
  17 +
  18 +# You should have received a copy of the GNU General Public License
  19 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
  20 +
  21 +# As a special exception to the GNU General Public License, if you
  22 +# distribute this file as part of a program that contains a
  23 +# configuration script generated by Autoconf, you may include it under
  24 +# the same distribution terms that you use for the rest of that program.
  25 +
  26 +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
  27 +
  28 +case $1 in
  29 + '')
  30 + echo "$0: No command. Try '$0 --help' for more information." 1>&2
  31 + exit 1;
  32 + ;;
  33 + -h | --h*)
  34 + cat <<\EOF
  35 +Usage: depcomp [--help] [--version] PROGRAM [ARGS]
  36 +
  37 +Run PROGRAMS ARGS to compile a file, generating dependencies
  38 +as side-effects.
  39 +
  40 +Environment variables:
  41 + depmode Dependency tracking mode.
  42 + source Source file read by 'PROGRAMS ARGS'.
  43 + object Object file output by 'PROGRAMS ARGS'.
  44 + DEPDIR directory where to store dependencies.
  45 + depfile Dependency file to output.
  46 + tmpdepfile Temporary file to use when outputting dependencies.
  47 + libtool Whether libtool is used (yes/no).
  48 +
  49 +Report bugs to <bug-automake@gnu.org>.
  50 +EOF
  51 + exit $?
  52 + ;;
  53 + -v | --v*)
  54 + echo "depcomp $scriptversion"
  55 + exit $?
  56 + ;;
  57 +esac
  58 +
  59 +# Get the directory component of the given path, and save it in the
  60 +# global variables '$dir'. Note that this directory component will
  61 +# be either empty or ending with a '/' character. This is deliberate.
  62 +set_dir_from ()
  63 +{
  64 + case $1 in
  65 + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
  66 + *) dir=;;
  67 + esac
  68 +}
  69 +
  70 +# Get the suffix-stripped basename of the given path, and save it the
  71 +# global variable '$base'.
  72 +set_base_from ()
  73 +{
  74 + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
  75 +}
  76 +
  77 +# If no dependency file was actually created by the compiler invocation,
  78 +# we still have to create a dummy depfile, to avoid errors with the
  79 +# Makefile "include basename.Plo" scheme.
  80 +make_dummy_depfile ()
  81 +{
  82 + echo "#dummy" > "$depfile"
  83 +}
  84 +
  85 +# Factor out some common post-processing of the generated depfile.
  86 +# Requires the auxiliary global variable '$tmpdepfile' to be set.
  87 +aix_post_process_depfile ()
  88 +{
  89 + # If the compiler actually managed to produce a dependency file,
  90 + # post-process it.
  91 + if test -f "$tmpdepfile"; then
  92 + # Each line is of the form 'foo.o: dependency.h'.
  93 + # Do two passes, one to just change these to
  94 + # $object: dependency.h
  95 + # and one to simply output
  96 + # dependency.h:
  97 + # which is needed to avoid the deleted-header problem.
  98 + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
  99 + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
  100 + } > "$depfile"
  101 + rm -f "$tmpdepfile"
  102 + else
  103 + make_dummy_depfile
  104 + fi
  105 +}
  106 +
  107 +# A tabulation character.
  108 +tab=' '
  109 +# A newline character.
  110 +nl='
  111 +'
  112 +# Character ranges might be problematic outside the C locale.
  113 +# These definitions help.
  114 +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  115 +lower=abcdefghijklmnopqrstuvwxyz
  116 +digits=0123456789
  117 +alpha=${upper}${lower}
  118 +
  119 +if test -z "$depmode" || test -z "$source" || test -z "$object"; then
  120 + echo "depcomp: Variables source, object and depmode must be set" 1>&2
  121 + exit 1
  122 +fi
  123 +
  124 +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
  125 +depfile=${depfile-`echo "$object" |
  126 + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
  127 +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
  128 +
  129 +rm -f "$tmpdepfile"
  130 +
  131 +# Avoid interferences from the environment.
  132 +gccflag= dashmflag=
  133 +
  134 +# Some modes work just like other modes, but use different flags. We
  135 +# parameterize here, but still list the modes in the big case below,
  136 +# to make depend.m4 easier to write. Note that we *cannot* use a case
  137 +# here, because this file can only contain one case statement.
  138 +if test "$depmode" = hp; then
  139 + # HP compiler uses -M and no extra arg.
  140 + gccflag=-M
  141 + depmode=gcc
  142 +fi
  143 +
  144 +if test "$depmode" = dashXmstdout; then
  145 + # This is just like dashmstdout with a different argument.
  146 + dashmflag=-xM
  147 + depmode=dashmstdout
  148 +fi
  149 +
  150 +cygpath_u="cygpath -u -f -"
  151 +if test "$depmode" = msvcmsys; then
  152 + # This is just like msvisualcpp but w/o cygpath translation.
  153 + # Just convert the backslash-escaped backslashes to single forward
  154 + # slashes to satisfy depend.m4
  155 + cygpath_u='sed s,\\\\,/,g'
  156 + depmode=msvisualcpp
  157 +fi
  158 +
  159 +if test "$depmode" = msvc7msys; then
  160 + # This is just like msvc7 but w/o cygpath translation.
  161 + # Just convert the backslash-escaped backslashes to single forward
  162 + # slashes to satisfy depend.m4
  163 + cygpath_u='sed s,\\\\,/,g'
  164 + depmode=msvc7
  165 +fi
  166 +
  167 +if test "$depmode" = xlc; then
  168 + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
  169 + gccflag=-qmakedep=gcc,-MF
  170 + depmode=gcc
  171 +fi
  172 +
  173 +case "$depmode" in
  174 +gcc3)
  175 +## gcc 3 implements dependency tracking that does exactly what
  176 +## we want. Yay! Note: for some reason libtool 1.4 doesn't like
  177 +## it if -MD -MP comes after the -MF stuff. Hmm.
  178 +## Unfortunately, FreeBSD c89 acceptance of flags depends upon
  179 +## the command line argument order; so add the flags where they
  180 +## appear in depend2.am. Note that the slowdown incurred here
  181 +## affects only configure: in makefiles, %FASTDEP% shortcuts this.
  182 + for arg
  183 + do
  184 + case $arg in
  185 + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
  186 + *) set fnord "$@" "$arg" ;;
  187 + esac
  188 + shift # fnord
  189 + shift # $arg
  190 + done
  191 + "$@"
  192 + stat=$?
  193 + if test $stat -ne 0; then
  194 + rm -f "$tmpdepfile"
  195 + exit $stat
  196 + fi
  197 + mv "$tmpdepfile" "$depfile"
  198 + ;;
  199 +
  200 +gcc)
  201 +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
  202 +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
  203 +## (see the conditional assignment to $gccflag above).
  204 +## There are various ways to get dependency output from gcc. Here's
  205 +## why we pick this rather obscure method:
  206 +## - Don't want to use -MD because we'd like the dependencies to end
  207 +## up in a subdir. Having to rename by hand is ugly.
  208 +## (We might end up doing this anyway to support other compilers.)
  209 +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
  210 +## -MM, not -M (despite what the docs say). Also, it might not be
  211 +## supported by the other compilers which use the 'gcc' depmode.
  212 +## - Using -M directly means running the compiler twice (even worse
  213 +## than renaming).
  214 + if test -z "$gccflag"; then
  215 + gccflag=-MD,
  216 + fi
  217 + "$@" -Wp,"$gccflag$tmpdepfile"
  218 + stat=$?
  219 + if test $stat -ne 0; then
  220 + rm -f "$tmpdepfile"
  221 + exit $stat
  222 + fi
  223 + rm -f "$depfile"
  224 + echo "$object : \\" > "$depfile"
  225 + # The second -e expression handles DOS-style file names with drive
  226 + # letters.
  227 + sed -e 's/^[^:]*: / /' \
  228 + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
  229 +## This next piece of magic avoids the "deleted header file" problem.
  230 +## The problem is that when a header file which appears in a .P file
  231 +## is deleted, the dependency causes make to die (because there is
  232 +## typically no way to rebuild the header). We avoid this by adding
  233 +## dummy dependencies for each header file. Too bad gcc doesn't do
  234 +## this for us directly.
  235 +## Some versions of gcc put a space before the ':'. On the theory
  236 +## that the space means something, we add a space to the output as
  237 +## well. hp depmode also adds that space, but also prefixes the VPATH
  238 +## to the object. Take care to not repeat it in the output.
  239 +## Some versions of the HPUX 10.20 sed can't process this invocation
  240 +## correctly. Breaking it into two sed invocations is a workaround.
  241 + tr ' ' "$nl" < "$tmpdepfile" \
  242 + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
  243 + | sed -e 's/$/ :/' >> "$depfile"
  244 + rm -f "$tmpdepfile"
  245 + ;;
  246 +
  247 +hp)
  248 + # This case exists only to let depend.m4 do its work. It works by
  249 + # looking at the text of this script. This case will never be run,
  250 + # since it is checked for above.
  251 + exit 1
  252 + ;;
  253 +
  254 +sgi)
  255 + if test "$libtool" = yes; then
  256 + "$@" "-Wp,-MDupdate,$tmpdepfile"
  257 + else
  258 + "$@" -MDupdate "$tmpdepfile"
  259 + fi
  260 + stat=$?
  261 + if test $stat -ne 0; then
  262 + rm -f "$tmpdepfile"
  263 + exit $stat
  264 + fi
  265 + rm -f "$depfile"
  266 +
  267 + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
  268 + echo "$object : \\" > "$depfile"
  269 + # Clip off the initial element (the dependent). Don't try to be
  270 + # clever and replace this with sed code, as IRIX sed won't handle
  271 + # lines with more than a fixed number of characters (4096 in
  272 + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
  273 + # the IRIX cc adds comments like '#:fec' to the end of the
  274 + # dependency line.
  275 + tr ' ' "$nl" < "$tmpdepfile" \
  276 + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
  277 + | tr "$nl" ' ' >> "$depfile"
  278 + echo >> "$depfile"
  279 + # The second pass generates a dummy entry for each header file.
  280 + tr ' ' "$nl" < "$tmpdepfile" \
  281 + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
  282 + >> "$depfile"
  283 + else
  284 + make_dummy_depfile
  285 + fi
  286 + rm -f "$tmpdepfile"
  287 + ;;
  288 +
  289 +xlc)
  290 + # This case exists only to let depend.m4 do its work. It works by
  291 + # looking at the text of this script. This case will never be run,
  292 + # since it is checked for above.
  293 + exit 1
  294 + ;;
  295 +
  296 +aix)
  297 + # The C for AIX Compiler uses -M and outputs the dependencies
  298 + # in a .u file. In older versions, this file always lives in the
  299 + # current directory. Also, the AIX compiler puts '$object:' at the
  300 + # start of each line; $object doesn't have directory information.
  301 + # Version 6 uses the directory in both cases.
  302 + set_dir_from "$object"
  303 + set_base_from "$object"
  304 + if test "$libtool" = yes; then
  305 + tmpdepfile1=$dir$base.u
  306 + tmpdepfile2=$base.u
  307 + tmpdepfile3=$dir.libs/$base.u
  308 + "$@" -Wc,-M
  309 + else
  310 + tmpdepfile1=$dir$base.u
  311 + tmpdepfile2=$dir$base.u
  312 + tmpdepfile3=$dir$base.u
  313 + "$@" -M
  314 + fi
  315 + stat=$?
  316 + if test $stat -ne 0; then
  317 + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
  318 + exit $stat
  319 + fi
  320 +
  321 + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
  322 + do
  323 + test -f "$tmpdepfile" && break
  324 + done
  325 + aix_post_process_depfile
  326 + ;;
  327 +
  328 +tcc)
  329 + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
  330 + # FIXME: That version still under development at the moment of writing.
  331 + # Make that this statement remains true also for stable, released
  332 + # versions.
  333 + # It will wrap lines (doesn't matter whether long or short) with a
  334 + # trailing '\', as in:
  335 + #
  336 + # foo.o : \
  337 + # foo.c \
  338 + # foo.h \
  339 + #
  340 + # It will put a trailing '\' even on the last line, and will use leading
  341 + # spaces rather than leading tabs (at least since its commit 0394caf7
  342 + # "Emit spaces for -MD").
  343 + "$@" -MD -MF "$tmpdepfile"
  344 + stat=$?
  345 + if test $stat -ne 0; then
  346 + rm -f "$tmpdepfile"
  347 + exit $stat
  348 + fi
  349 + rm -f "$depfile"
  350 + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
  351 + # We have to change lines of the first kind to '$object: \'.
  352 + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
  353 + # And for each line of the second kind, we have to emit a 'dep.h:'
  354 + # dummy dependency, to avoid the deleted-header problem.
  355 + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
  356 + rm -f "$tmpdepfile"
  357 + ;;
  358 +
  359 +## The order of this option in the case statement is important, since the
  360 +## shell code in configure will try each of these formats in the order
  361 +## listed in this file. A plain '-MD' option would be understood by many
  362 +## compilers, so we must ensure this comes after the gcc and icc options.
  363 +pgcc)
  364 + # Portland's C compiler understands '-MD'.
  365 + # Will always output deps to 'file.d' where file is the root name of the
  366 + # source file under compilation, even if file resides in a subdirectory.
  367 + # The object file name does not affect the name of the '.d' file.
  368 + # pgcc 10.2 will output
  369 + # foo.o: sub/foo.c sub/foo.h
  370 + # and will wrap long lines using '\' :
  371 + # foo.o: sub/foo.c ... \
  372 + # sub/foo.h ... \
  373 + # ...
  374 + set_dir_from "$object"
  375 + # Use the source, not the object, to determine the base name, since
  376 + # that's sadly what pgcc will do too.
  377 + set_base_from "$source"
  378 + tmpdepfile=$base.d
  379 +
  380 + # For projects that build the same source file twice into different object
  381 + # files, the pgcc approach of using the *source* file root name can cause
  382 + # problems in parallel builds. Use a locking strategy to avoid stomping on
  383 + # the same $tmpdepfile.
  384 + lockdir=$base.d-lock
  385 + trap "
  386 + echo '$0: caught signal, cleaning up...' >&2
  387 + rmdir '$lockdir'
  388 + exit 1
  389 + " 1 2 13 15
  390 + numtries=100
  391 + i=$numtries
  392 + while test $i -gt 0; do
  393 + # mkdir is a portable test-and-set.
  394 + if mkdir "$lockdir" 2>/dev/null; then
  395 + # This process acquired the lock.
  396 + "$@" -MD
  397 + stat=$?
  398 + # Release the lock.
  399 + rmdir "$lockdir"
  400 + break
  401 + else
  402 + # If the lock is being held by a different process, wait
  403 + # until the winning process is done or we timeout.
  404 + while test -d "$lockdir" && test $i -gt 0; do
  405 + sleep 1
  406 + i=`expr $i - 1`
  407 + done
  408 + fi
  409 + i=`expr $i - 1`
  410 + done
  411 + trap - 1 2 13 15
  412 + if test $i -le 0; then
  413 + echo "$0: failed to acquire lock after $numtries attempts" >&2
  414 + echo "$0: check lockdir '$lockdir'" >&2
  415 + exit 1
  416 + fi
  417 +
  418 + if test $stat -ne 0; then
  419 + rm -f "$tmpdepfile"
  420 + exit $stat
  421 + fi
  422 + rm -f "$depfile"
  423 + # Each line is of the form `foo.o: dependent.h',
  424 + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
  425 + # Do two passes, one to just change these to
  426 + # `$object: dependent.h' and one to simply `dependent.h:'.
  427 + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
  428 + # Some versions of the HPUX 10.20 sed can't process this invocation
  429 + # correctly. Breaking it into two sed invocations is a workaround.
  430 + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
  431 + | sed -e 's/$/ :/' >> "$depfile"
  432 + rm -f "$tmpdepfile"
  433 + ;;
  434 +
  435 +hp2)
  436 + # The "hp" stanza above does not work with aCC (C++) and HP's ia64
  437 + # compilers, which have integrated preprocessors. The correct option
  438 + # to use with these is +Maked; it writes dependencies to a file named
  439 + # 'foo.d', which lands next to the object file, wherever that
  440 + # happens to be.
  441 + # Much of this is similar to the tru64 case; see comments there.
  442 + set_dir_from "$object"
  443 + set_base_from "$object"
  444 + if test "$libtool" = yes; then
  445 + tmpdepfile1=$dir$base.d
  446 + tmpdepfile2=$dir.libs/$base.d
  447 + "$@" -Wc,+Maked
  448 + else
  449 + tmpdepfile1=$dir$base.d
  450 + tmpdepfile2=$dir$base.d
  451 + "$@" +Maked
  452 + fi
  453 + stat=$?
  454 + if test $stat -ne 0; then
  455 + rm -f "$tmpdepfile1" "$tmpdepfile2"
  456 + exit $stat
  457 + fi
  458 +
  459 + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
  460 + do
  461 + test -f "$tmpdepfile" && break
  462 + done
  463 + if test -f "$tmpdepfile"; then
  464 + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
  465 + # Add 'dependent.h:' lines.
  466 + sed -ne '2,${
  467 + s/^ *//
  468 + s/ \\*$//
  469 + s/$/:/
  470 + p
  471 + }' "$tmpdepfile" >> "$depfile"
  472 + else
  473 + make_dummy_depfile
  474 + fi
  475 + rm -f "$tmpdepfile" "$tmpdepfile2"
  476 + ;;
  477 +
  478 +tru64)
  479 + # The Tru64 compiler uses -MD to generate dependencies as a side
  480 + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
  481 + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
  482 + # dependencies in 'foo.d' instead, so we check for that too.
  483 + # Subdirectories are respected.
  484 + set_dir_from "$object"
  485 + set_base_from "$object"
  486 +
  487 + if test "$libtool" = yes; then
  488 + # Libtool generates 2 separate objects for the 2 libraries. These
  489 + # two compilations output dependencies in $dir.libs/$base.o.d and
  490 + # in $dir$base.o.d. We have to check for both files, because
  491 + # one of the two compilations can be disabled. We should prefer
  492 + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
  493 + # automatically cleaned when .libs/ is deleted, while ignoring
  494 + # the former would cause a distcleancheck panic.
  495 + tmpdepfile1=$dir$base.o.d # libtool 1.5
  496 + tmpdepfile2=$dir.libs/$base.o.d # Likewise.
  497 + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
  498 + "$@" -Wc,-MD
  499 + else
  500 + tmpdepfile1=$dir$base.d
  501 + tmpdepfile2=$dir$base.d
  502 + tmpdepfile3=$dir$base.d
  503 + "$@" -MD
  504 + fi
  505 +
  506 + stat=$?
  507 + if test $stat -ne 0; then
  508 + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
  509 + exit $stat
  510 + fi
  511 +
  512 + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
  513 + do
  514 + test -f "$tmpdepfile" && break
  515 + done
  516 + # Same post-processing that is required for AIX mode.
  517 + aix_post_process_depfile
  518 + ;;
  519 +
  520 +msvc7)
  521 + if test "$libtool" = yes; then
  522 + showIncludes=-Wc,-showIncludes
  523 + else
  524 + showIncludes=-showIncludes
  525 + fi
  526 + "$@" $showIncludes > "$tmpdepfile"
  527 + stat=$?
  528 + grep -v '^Note: including file: ' "$tmpdepfile"
  529 + if test $stat -ne 0; then
  530 + rm -f "$tmpdepfile"
  531 + exit $stat
  532 + fi
  533 + rm -f "$depfile"
  534 + echo "$object : \\" > "$depfile"
  535 + # The first sed program below extracts the file names and escapes
  536 + # backslashes for cygpath. The second sed program outputs the file
  537 + # name when reading, but also accumulates all include files in the
  538 + # hold buffer in order to output them again at the end. This only
  539 + # works with sed implementations that can handle large buffers.
  540 + sed < "$tmpdepfile" -n '
  541 +/^Note: including file: *\(.*\)/ {
  542 + s//\1/
  543 + s/\\/\\\\/g
  544 + p
  545 +}' | $cygpath_u | sort -u | sed -n '
  546 +s/ /\\ /g
  547 +s/\(.*\)/'"$tab"'\1 \\/p
  548 +s/.\(.*\) \\/\1:/
  549 +H
  550 +$ {
  551 + s/.*/'"$tab"'/
  552 + G
  553 + p
  554 +}' >> "$depfile"
  555 + echo >> "$depfile" # make sure the fragment doesn't end with a backslash
  556 + rm -f "$tmpdepfile"
  557 + ;;
  558 +
  559 +msvc7msys)
  560 + # This case exists only to let depend.m4 do its work. It works by
  561 + # looking at the text of this script. This case will never be run,
  562 + # since it is checked for above.
  563 + exit 1
  564 + ;;
  565 +
  566 +#nosideeffect)
  567 + # This comment above is used by automake to tell side-effect
  568 + # dependency tracking mechanisms from slower ones.
  569 +
  570 +dashmstdout)
  571 + # Important note: in order to support this mode, a compiler *must*
  572 + # always write the preprocessed file to stdout, regardless of -o.
  573 + "$@" || exit $?
  574 +
  575 + # Remove the call to Libtool.
  576 + if test "$libtool" = yes; then
  577 + while test "X$1" != 'X--mode=compile'; do
  578 + shift
  579 + done
  580 + shift
  581 + fi
  582 +
  583 + # Remove '-o $object'.
  584 + IFS=" "
  585 + for arg
  586 + do
  587 + case $arg in
  588 + -o)
  589 + shift
  590 + ;;
  591 + $object)
  592 + shift
  593 + ;;
  594 + *)
  595 + set fnord "$@" "$arg"
  596 + shift # fnord
  597 + shift # $arg
  598 + ;;
  599 + esac
  600 + done
  601 +
  602 + test -z "$dashmflag" && dashmflag=-M
  603 + # Require at least two characters before searching for ':'
  604 + # in the target name. This is to cope with DOS-style filenames:
  605 + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
  606 + "$@" $dashmflag |
  607 + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
  608 + rm -f "$depfile"
  609 + cat < "$tmpdepfile" > "$depfile"
  610 + # Some versions of the HPUX 10.20 sed can't process this sed invocation
  611 + # correctly. Breaking it into two sed invocations is a workaround.
  612 + tr ' ' "$nl" < "$tmpdepfile" \
  613 + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
  614 + | sed -e 's/$/ :/' >> "$depfile"
  615 + rm -f "$tmpdepfile"
  616 + ;;
  617 +
  618 +dashXmstdout)
  619 + # This case only exists to satisfy depend.m4. It is never actually
  620 + # run, as this mode is specially recognized in the preamble.
  621 + exit 1
  622 + ;;
  623 +
  624 +makedepend)
  625 + "$@" || exit $?
  626 + # Remove any Libtool call
  627 + if test "$libtool" = yes; then
  628 + while test "X$1" != 'X--mode=compile'; do
  629 + shift
  630 + done
  631 + shift
  632 + fi
  633 + # X makedepend
  634 + shift
  635 + cleared=no eat=no
  636 + for arg
  637 + do
  638 + case $cleared in
  639 + no)
  640 + set ""; shift
  641 + cleared=yes ;;
  642 + esac
  643 + if test $eat = yes; then
  644 + eat=no
  645 + continue
  646 + fi
  647 + case "$arg" in
  648 + -D*|-I*)
  649 + set fnord "$@" "$arg"; shift ;;
  650 + # Strip any option that makedepend may not understand. Remove
  651 + # the object too, otherwise makedepend will parse it as a source file.
  652 + -arch)
  653 + eat=yes ;;
  654 + -*|$object)
  655 + ;;
  656 + *)
  657 + set fnord "$@" "$arg"; shift ;;
  658 + esac
  659 + done
  660 + obj_suffix=`echo "$object" | sed 's/^.*\././'`
  661 + touch "$tmpdepfile"
  662 + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
  663 + rm -f "$depfile"
  664 + # makedepend may prepend the VPATH from the source file name to the object.
  665 + # No need to regex-escape $object, excess matching of '.' is harmless.
  666 + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
  667 + # Some versions of the HPUX 10.20 sed can't process the last invocation
  668 + # correctly. Breaking it into two sed invocations is a workaround.
  669 + sed '1,2d' "$tmpdepfile" \
  670 + | tr ' ' "$nl" \
  671 + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
  672 + | sed -e 's/$/ :/' >> "$depfile"
  673 + rm -f "$tmpdepfile" "$tmpdepfile".bak
  674 + ;;
  675 +
  676 +cpp)
  677 + # Important note: in order to support this mode, a compiler *must*
  678 + # always write the preprocessed file to stdout.
  679 + "$@" || exit $?
  680 +
  681 + # Remove the call to Libtool.
  682 + if test "$libtool" = yes; then
  683 + while test "X$1" != 'X--mode=compile'; do
  684 + shift
  685 + done
  686 + shift
  687 + fi
  688 +
  689 + # Remove '-o $object'.
  690 + IFS=" "
  691 + for arg
  692 + do
  693 + case $arg in
  694 + -o)
  695 + shift
  696 + ;;
  697 + $object)
  698 + shift
  699 + ;;
  700 + *)
  701 + set fnord "$@" "$arg"
  702 + shift # fnord
  703 + shift # $arg
  704 + ;;
  705 + esac
  706 + done
  707 +
  708 + "$@" -E \
  709 + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
  710 + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
  711 + | sed '$ s: \\$::' > "$tmpdepfile"
  712 + rm -f "$depfile"
  713 + echo "$object : \\" > "$depfile"
  714 + cat < "$tmpdepfile" >> "$depfile"
  715 + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
  716 + rm -f "$tmpdepfile"
  717 + ;;
  718 +
  719 +msvisualcpp)
  720 + # Important note: in order to support this mode, a compiler *must*
  721 + # always write the preprocessed file to stdout.
  722 + "$@" || exit $?
  723 +
  724 + # Remove the call to Libtool.
  725 + if test "$libtool" = yes; then
  726 + while test "X$1" != 'X--mode=compile'; do
  727 + shift
  728 + done
  729 + shift
  730 + fi
  731 +
  732 + IFS=" "
  733 + for arg
  734 + do
  735 + case "$arg" in
  736 + -o)
  737 + shift
  738 + ;;
  739 + $object)
  740 + shift
  741 + ;;
  742 + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
  743 + set fnord "$@"
  744 + shift
  745 + shift
  746 + ;;
  747 + *)
  748 + set fnord "$@" "$arg"
  749 + shift
  750 + shift
  751 + ;;
  752 + esac
  753 + done
  754 + "$@" -E 2>/dev/null |
  755 + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
  756 + rm -f "$depfile"
  757 + echo "$object : \\" > "$depfile"
  758 + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
  759 + echo "$tab" >> "$depfile"
  760 + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
  761 + rm -f "$tmpdepfile"
  762 + ;;
  763 +
  764 +msvcmsys)
  765 + # This case exists only to let depend.m4 do its work. It works by
  766 + # looking at the text of this script. This case will never be run,
  767 + # since it is checked for above.
  768 + exit 1
  769 + ;;
  770 +
  771 +none)
  772 + exec "$@"
  773 + ;;
  774 +
  775 +*)
  776 + echo "Unknown depmode $depmode" 1>&2
  777 + exit 1
  778 + ;;
  779 +esac
  780 +
  781 +exit 0
  782 +
  783 +# Local Variables:
  784 +# mode: shell-script
  785 +# sh-indentation: 2
  786 +# eval: (add-hook 'write-file-hooks 'time-stamp)
  787 +# time-stamp-start: "scriptversion="
  788 +# time-stamp-format: "%:y-%02m-%02d.%02H"
  789 +# time-stamp-time-zone: "UTC"
  790 +# time-stamp-end: "; # UTC"
  791 +# End:
... ...
build-aux/install-sh 0 → 100755
  1 +#!/bin/sh
  2 +# install - install a program, script, or datafile
  3 +
  4 +scriptversion=2011-11-20.07; # UTC
  5 +
  6 +# This originates from X11R5 (mit/util/scripts/install.sh), which was
  7 +# later released in X11R6 (xc/config/util/install.sh) with the
  8 +# following copyright and license.
  9 +#
  10 +# Copyright (C) 1994 X Consortium
  11 +#
  12 +# Permission is hereby granted, free of charge, to any person obtaining a copy
  13 +# of this software and associated documentation files (the "Software"), to
  14 +# deal in the Software without restriction, including without limitation the
  15 +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  16 +# sell copies of the Software, and to permit persons to whom the Software is
  17 +# furnished to do so, subject to the following conditions:
  18 +#
  19 +# The above copyright notice and this permission notice shall be included in
  20 +# all copies or substantial portions of the Software.
  21 +#
  22 +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  23 +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  24 +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  25 +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  26 +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
  27 +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28 +#
  29 +# Except as contained in this notice, the name of the X Consortium shall not
  30 +# be used in advertising or otherwise to promote the sale, use or other deal-
  31 +# ings in this Software without prior written authorization from the X Consor-
  32 +# tium.
  33 +#
  34 +#
  35 +# FSF changes to this file are in the public domain.
  36 +#
  37 +# Calling this script install-sh is preferred over install.sh, to prevent
  38 +# 'make' implicit rules from creating a file called install from it
  39 +# when there is no Makefile.
  40 +#
  41 +# This script is compatible with the BSD install script, but was written
  42 +# from scratch.
  43 +
  44 +nl='
  45 +'
  46 +IFS=" "" $nl"
  47 +
  48 +# set DOITPROG to echo to test this script
  49 +
  50 +# Don't use :- since 4.3BSD and earlier shells don't like it.
  51 +doit=${DOITPROG-}
  52 +if test -z "$doit"; then
  53 + doit_exec=exec
  54 +else
  55 + doit_exec=$doit
  56 +fi
  57 +
  58 +# Put in absolute file names if you don't have them in your path;
  59 +# or use environment vars.
  60 +
  61 +chgrpprog=${CHGRPPROG-chgrp}
  62 +chmodprog=${CHMODPROG-chmod}
  63 +chownprog=${CHOWNPROG-chown}
  64 +cmpprog=${CMPPROG-cmp}
  65 +cpprog=${CPPROG-cp}
  66 +mkdirprog=${MKDIRPROG-mkdir}
  67 +mvprog=${MVPROG-mv}
  68 +rmprog=${RMPROG-rm}
  69 +stripprog=${STRIPPROG-strip}
  70 +
  71 +posix_glob='?'
  72 +initialize_posix_glob='
  73 + test "$posix_glob" != "?" || {
  74 + if (set -f) 2>/dev/null; then
  75 + posix_glob=
  76 + else
  77 + posix_glob=:
  78 + fi
  79 + }
  80 +'
  81 +
  82 +posix_mkdir=
  83 +
  84 +# Desired mode of installed file.
  85 +mode=0755
  86 +
  87 +chgrpcmd=
  88 +chmodcmd=$chmodprog
  89 +chowncmd=
  90 +mvcmd=$mvprog
  91 +rmcmd="$rmprog -f"
  92 +stripcmd=
  93 +
  94 +src=
  95 +dst=
  96 +dir_arg=
  97 +dst_arg=
  98 +
  99 +copy_on_change=false
  100 +no_target_directory=
  101 +
  102 +usage="\
  103 +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
  104 + or: $0 [OPTION]... SRCFILES... DIRECTORY
  105 + or: $0 [OPTION]... -t DIRECTORY SRCFILES...
  106 + or: $0 [OPTION]... -d DIRECTORIES...
  107 +
  108 +In the 1st form, copy SRCFILE to DSTFILE.
  109 +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
  110 +In the 4th, create DIRECTORIES.
  111 +
  112 +Options:
  113 + --help display this help and exit.
  114 + --version display version info and exit.
  115 +
  116 + -c (ignored)
  117 + -C install only if different (preserve the last data modification time)
  118 + -d create directories instead of installing files.
  119 + -g GROUP $chgrpprog installed files to GROUP.
  120 + -m MODE $chmodprog installed files to MODE.
  121 + -o USER $chownprog installed files to USER.
  122 + -s $stripprog installed files.
  123 + -t DIRECTORY install into DIRECTORY.
  124 + -T report an error if DSTFILE is a directory.
  125 +
  126 +Environment variables override the default commands:
  127 + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
  128 + RMPROG STRIPPROG
  129 +"
  130 +
  131 +while test $# -ne 0; do
  132 + case $1 in
  133 + -c) ;;
  134 +
  135 + -C) copy_on_change=true;;
  136 +
  137 + -d) dir_arg=true;;
  138 +
  139 + -g) chgrpcmd="$chgrpprog $2"
  140 + shift;;
  141 +
  142 + --help) echo "$usage"; exit $?;;
  143 +
  144 + -m) mode=$2
  145 + case $mode in
  146 + *' '* | *' '* | *'
  147 +'* | *'*'* | *'?'* | *'['*)
  148 + echo "$0: invalid mode: $mode" >&2
  149 + exit 1;;
  150 + esac
  151 + shift;;
  152 +
  153 + -o) chowncmd="$chownprog $2"
  154 + shift;;
  155 +
  156 + -s) stripcmd=$stripprog;;
  157 +
  158 + -t) dst_arg=$2
  159 + # Protect names problematic for 'test' and other utilities.
  160 + case $dst_arg in
  161 + -* | [=\(\)!]) dst_arg=./$dst_arg;;
  162 + esac
  163 + shift;;
  164 +
  165 + -T) no_target_directory=true;;
  166 +
  167 + --version) echo "$0 $scriptversion"; exit $?;;
  168 +
  169 + --) shift
  170 + break;;
  171 +
  172 + -*) echo "$0: invalid option: $1" >&2
  173 + exit 1;;
  174 +
  175 + *) break;;
  176 + esac
  177 + shift
  178 +done
  179 +
  180 +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
  181 + # When -d is used, all remaining arguments are directories to create.
  182 + # When -t is used, the destination is already specified.
  183 + # Otherwise, the last argument is the destination. Remove it from $@.
  184 + for arg
  185 + do
  186 + if test -n "$dst_arg"; then
  187 + # $@ is not empty: it contains at least $arg.
  188 + set fnord "$@" "$dst_arg"
  189 + shift # fnord
  190 + fi
  191 + shift # arg
  192 + dst_arg=$arg
  193 + # Protect names problematic for 'test' and other utilities.
  194 + case $dst_arg in
  195 + -* | [=\(\)!]) dst_arg=./$dst_arg;;
  196 + esac
  197 + done
  198 +fi
  199 +
  200 +if test $# -eq 0; then
  201 + if test -z "$dir_arg"; then
  202 + echo "$0: no input file specified." >&2
  203 + exit 1
  204 + fi
  205 + # It's OK to call 'install-sh -d' without argument.
  206 + # This can happen when creating conditional directories.
  207 + exit 0
  208 +fi
  209 +
  210 +if test -z "$dir_arg"; then
  211 + do_exit='(exit $ret); exit $ret'
  212 + trap "ret=129; $do_exit" 1
  213 + trap "ret=130; $do_exit" 2
  214 + trap "ret=141; $do_exit" 13
  215 + trap "ret=143; $do_exit" 15
  216 +
  217 + # Set umask so as not to create temps with too-generous modes.
  218 + # However, 'strip' requires both read and write access to temps.
  219 + case $mode in
  220 + # Optimize common cases.
  221 + *644) cp_umask=133;;
  222 + *755) cp_umask=22;;
  223 +
  224 + *[0-7])
  225 + if test -z "$stripcmd"; then
  226 + u_plus_rw=
  227 + else
  228 + u_plus_rw='% 200'
  229 + fi
  230 + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
  231 + *)
  232 + if test -z "$stripcmd"; then
  233 + u_plus_rw=
  234 + else
  235 + u_plus_rw=,u+rw
  236 + fi
  237 + cp_umask=$mode$u_plus_rw;;
  238 + esac
  239 +fi
  240 +
  241 +for src
  242 +do
  243 + # Protect names problematic for 'test' and other utilities.
  244 + case $src in
  245 + -* | [=\(\)!]) src=./$src;;
  246 + esac
  247 +
  248 + if test -n "$dir_arg"; then
  249 + dst=$src
  250 + dstdir=$dst
  251 + test -d "$dstdir"
  252 + dstdir_status=$?
  253 + else
  254 +
  255 + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
  256 + # might cause directories to be created, which would be especially bad
  257 + # if $src (and thus $dsttmp) contains '*'.
  258 + if test ! -f "$src" && test ! -d "$src"; then
  259 + echo "$0: $src does not exist." >&2
  260 + exit 1
  261 + fi
  262 +
  263 + if test -z "$dst_arg"; then
  264 + echo "$0: no destination specified." >&2
  265 + exit 1
  266 + fi
  267 + dst=$dst_arg
  268 +
  269 + # If destination is a directory, append the input filename; won't work
  270 + # if double slashes aren't ignored.
  271 + if test -d "$dst"; then
  272 + if test -n "$no_target_directory"; then
  273 + echo "$0: $dst_arg: Is a directory" >&2
  274 + exit 1
  275 + fi
  276 + dstdir=$dst
  277 + dst=$dstdir/`basename "$src"`
  278 + dstdir_status=0
  279 + else
  280 + # Prefer dirname, but fall back on a substitute if dirname fails.
  281 + dstdir=`
  282 + (dirname "$dst") 2>/dev/null ||
  283 + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
  284 + X"$dst" : 'X\(//\)[^/]' \| \
  285 + X"$dst" : 'X\(//\)$' \| \
  286 + X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
  287 + echo X"$dst" |
  288 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
  289 + s//\1/
  290 + q
  291 + }
  292 + /^X\(\/\/\)[^/].*/{
  293 + s//\1/
  294 + q
  295 + }
  296 + /^X\(\/\/\)$/{
  297 + s//\1/
  298 + q
  299 + }
  300 + /^X\(\/\).*/{
  301 + s//\1/
  302 + q
  303 + }
  304 + s/.*/./; q'
  305 + `
  306 +
  307 + test -d "$dstdir"
  308 + dstdir_status=$?
  309 + fi
  310 + fi
  311 +
  312 + obsolete_mkdir_used=false
  313 +
  314 + if test $dstdir_status != 0; then
  315 + case $posix_mkdir in
  316 + '')
  317 + # Create intermediate dirs using mode 755 as modified by the umask.
  318 + # This is like FreeBSD 'install' as of 1997-10-28.
  319 + umask=`umask`
  320 + case $stripcmd.$umask in
  321 + # Optimize common cases.
  322 + *[2367][2367]) mkdir_umask=$umask;;
  323 + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
  324 +
  325 + *[0-7])
  326 + mkdir_umask=`expr $umask + 22 \
  327 + - $umask % 100 % 40 + $umask % 20 \
  328 + - $umask % 10 % 4 + $umask % 2
  329 + `;;
  330 + *) mkdir_umask=$umask,go-w;;
  331 + esac
  332 +
  333 + # With -d, create the new directory with the user-specified mode.
  334 + # Otherwise, rely on $mkdir_umask.
  335 + if test -n "$dir_arg"; then
  336 + mkdir_mode=-m$mode
  337 + else
  338 + mkdir_mode=
  339 + fi
  340 +
  341 + posix_mkdir=false
  342 + case $umask in
  343 + *[123567][0-7][0-7])
  344 + # POSIX mkdir -p sets u+wx bits regardless of umask, which
  345 + # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
  346 + ;;
  347 + *)
  348 + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
  349 + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
  350 +
  351 + if (umask $mkdir_umask &&
  352 + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
  353 + then
  354 + if test -z "$dir_arg" || {
  355 + # Check for POSIX incompatibilities with -m.
  356 + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
  357 + # other-writable bit of parent directory when it shouldn't.
  358 + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
  359 + ls_ld_tmpdir=`ls -ld "$tmpdir"`
  360 + case $ls_ld_tmpdir in
  361 + d????-?r-*) different_mode=700;;
  362 + d????-?--*) different_mode=755;;
  363 + *) false;;
  364 + esac &&
  365 + $mkdirprog -m$different_mode -p -- "$tmpdir" && {
  366 + ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
  367 + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
  368 + }
  369 + }
  370 + then posix_mkdir=:
  371 + fi
  372 + rmdir "$tmpdir/d" "$tmpdir"
  373 + else
  374 + # Remove any dirs left behind by ancient mkdir implementations.
  375 + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
  376 + fi
  377 + trap '' 0;;
  378 + esac;;
  379 + esac
  380 +
  381 + if
  382 + $posix_mkdir && (
  383 + umask $mkdir_umask &&
  384 + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
  385 + )
  386 + then :
  387 + else
  388 +
  389 + # The umask is ridiculous, or mkdir does not conform to POSIX,
  390 + # or it failed possibly due to a race condition. Create the
  391 + # directory the slow way, step by step, checking for races as we go.
  392 +
  393 + case $dstdir in
  394 + /*) prefix='/';;
  395 + [-=\(\)!]*) prefix='./';;
  396 + *) prefix='';;
  397 + esac
  398 +
  399 + eval "$initialize_posix_glob"
  400 +
  401 + oIFS=$IFS
  402 + IFS=/
  403 + $posix_glob set -f
  404 + set fnord $dstdir
  405 + shift
  406 + $posix_glob set +f
  407 + IFS=$oIFS
  408 +
  409 + prefixes=
  410 +
  411 + for d
  412 + do
  413 + test X"$d" = X && continue
  414 +
  415 + prefix=$prefix$d
  416 + if test -d "$prefix"; then
  417 + prefixes=
  418 + else
  419 + if $posix_mkdir; then
  420 + (umask=$mkdir_umask &&
  421 + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
  422 + # Don't fail if two instances are running concurrently.
  423 + test -d "$prefix" || exit 1
  424 + else
  425 + case $prefix in
  426 + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
  427 + *) qprefix=$prefix;;
  428 + esac
  429 + prefixes="$prefixes '$qprefix'"
  430 + fi
  431 + fi
  432 + prefix=$prefix/
  433 + done
  434 +
  435 + if test -n "$prefixes"; then
  436 + # Don't fail if two instances are running concurrently.
  437 + (umask $mkdir_umask &&
  438 + eval "\$doit_exec \$mkdirprog $prefixes") ||
  439 + test -d "$dstdir" || exit 1
  440 + obsolete_mkdir_used=true
  441 + fi
  442 + fi
  443 + fi
  444 +
  445 + if test -n "$dir_arg"; then
  446 + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
  447 + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
  448 + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
  449 + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
  450 + else
  451 +
  452 + # Make a couple of temp file names in the proper directory.
  453 + dsttmp=$dstdir/_inst.$$_
  454 + rmtmp=$dstdir/_rm.$$_
  455 +
  456 + # Trap to clean up those temp files at exit.
  457 + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
  458 +
  459 + # Copy the file name to the temp name.
  460 + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
  461 +
  462 + # and set any options; do chmod last to preserve setuid bits.
  463 + #
  464 + # If any of these fail, we abort the whole thing. If we want to
  465 + # ignore errors from any of these, just make sure not to ignore
  466 + # errors from the above "$doit $cpprog $src $dsttmp" command.
  467 + #
  468 + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
  469 + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
  470 + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
  471 + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
  472 +
  473 + # If -C, don't bother to copy if it wouldn't change the file.
  474 + if $copy_on_change &&
  475 + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
  476 + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
  477 +
  478 + eval "$initialize_posix_glob" &&
  479 + $posix_glob set -f &&
  480 + set X $old && old=:$2:$4:$5:$6 &&
  481 + set X $new && new=:$2:$4:$5:$6 &&
  482 + $posix_glob set +f &&
  483 +
  484 + test "$old" = "$new" &&
  485 + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
  486 + then
  487 + rm -f "$dsttmp"
  488 + else
  489 + # Rename the file to the real destination.
  490 + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
  491 +
  492 + # The rename failed, perhaps because mv can't rename something else
  493 + # to itself, or perhaps because mv is so ancient that it does not
  494 + # support -f.
  495 + {
  496 + # Now remove or move aside any old file at destination location.
  497 + # We try this two ways since rm can't unlink itself on some
  498 + # systems and the destination file might be busy for other
  499 + # reasons. In this case, the final cleanup might fail but the new
  500 + # file should still install successfully.
  501 + {
  502 + test ! -f "$dst" ||
  503 + $doit $rmcmd -f "$dst" 2>/dev/null ||
  504 + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
  505 + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
  506 + } ||
  507 + { echo "$0: cannot unlink or rename $dst" >&2
  508 + (exit 1); exit 1
  509 + }
  510 + } &&
  511 +
  512 + # Now rename the file to the real destination.
  513 + $doit $mvcmd "$dsttmp" "$dst"
  514 + }
  515 + fi || exit 1
  516 +
  517 + trap '' 0
  518 + fi
  519 +done
  520 +
  521 +# Local variables:
  522 +# eval: (add-hook 'write-file-hooks 'time-stamp)
  523 +# time-stamp-start: "scriptversion="
  524 +# time-stamp-format: "%:y-%02m-%02d.%02H"
  525 +# time-stamp-time-zone: "UTC"
  526 +# time-stamp-end: "; # UTC"
  527 +# End:
... ...
build-aux/missing 0 → 100755
  1 +#! /bin/sh
  2 +# Common wrapper for a few potentially missing GNU programs.
  3 +
  4 +scriptversion=2013-10-28.13; # UTC
  5 +
  6 +# Copyright (C) 1996-2013 Free Software Foundation, Inc.
  7 +# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
  8 +
  9 +# This program is free software; you can redistribute it and/or modify
  10 +# it under the terms of the GNU General Public License as published by
  11 +# the Free Software Foundation; either version 2, or (at your option)
  12 +# any later version.
  13 +
  14 +# This program is distributed in the hope that it will be useful,
  15 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17 +# GNU General Public License for more details.
  18 +
  19 +# You should have received a copy of the GNU General Public License
  20 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
  21 +
  22 +# As a special exception to the GNU General Public License, if you
  23 +# distribute this file as part of a program that contains a
  24 +# configuration script generated by Autoconf, you may include it under
  25 +# the same distribution terms that you use for the rest of that program.
  26 +
  27 +if test $# -eq 0; then
  28 + echo 1>&2 "Try '$0 --help' for more information"
  29 + exit 1
  30 +fi
  31 +
  32 +case $1 in
  33 +
  34 + --is-lightweight)
  35 + # Used by our autoconf macros to check whether the available missing
  36 + # script is modern enough.
  37 + exit 0
  38 + ;;
  39 +
  40 + --run)
  41 + # Back-compat with the calling convention used by older automake.
  42 + shift
  43 + ;;
  44 +
  45 + -h|--h|--he|--hel|--help)
  46 + echo "\
  47 +$0 [OPTION]... PROGRAM [ARGUMENT]...
  48 +
  49 +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
  50 +to PROGRAM being missing or too old.
  51 +
  52 +Options:
  53 + -h, --help display this help and exit
  54 + -v, --version output version information and exit
  55 +
  56 +Supported PROGRAM values:
  57 + aclocal autoconf autoheader autom4te automake makeinfo
  58 + bison yacc flex lex help2man
  59 +
  60 +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
  61 +'g' are ignored when checking the name.
  62 +
  63 +Send bug reports to <bug-automake@gnu.org>."
  64 + exit $?
  65 + ;;
  66 +
  67 + -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
  68 + echo "missing $scriptversion (GNU Automake)"
  69 + exit $?
  70 + ;;
  71 +
  72 + -*)
  73 + echo 1>&2 "$0: unknown '$1' option"
  74 + echo 1>&2 "Try '$0 --help' for more information"
  75 + exit 1
  76 + ;;
  77 +
  78 +esac
  79 +
  80 +# Run the given program, remember its exit status.
  81 +"$@"; st=$?
  82 +
  83 +# If it succeeded, we are done.
  84 +test $st -eq 0 && exit 0
  85 +
  86 +# Also exit now if we it failed (or wasn't found), and '--version' was
  87 +# passed; such an option is passed most likely to detect whether the
  88 +# program is present and works.
  89 +case $2 in --version|--help) exit $st;; esac
  90 +
  91 +# Exit code 63 means version mismatch. This often happens when the user
  92 +# tries to use an ancient version of a tool on a file that requires a
  93 +# minimum version.
  94 +if test $st -eq 63; then
  95 + msg="probably too old"
  96 +elif test $st -eq 127; then
  97 + # Program was missing.
  98 + msg="missing on your system"
  99 +else
  100 + # Program was found and executed, but failed. Give up.
  101 + exit $st
  102 +fi
  103 +
  104 +perl_URL=http://www.perl.org/
  105 +flex_URL=http://flex.sourceforge.net/
  106 +gnu_software_URL=http://www.gnu.org/software
  107 +
  108 +program_details ()
  109 +{
  110 + case $1 in
  111 + aclocal|automake)
  112 + echo "The '$1' program is part of the GNU Automake package:"
  113 + echo "<$gnu_software_URL/automake>"
  114 + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
  115 + echo "<$gnu_software_URL/autoconf>"
  116 + echo "<$gnu_software_URL/m4/>"
  117 + echo "<$perl_URL>"
  118 + ;;
  119 + autoconf|autom4te|autoheader)
  120 + echo "The '$1' program is part of the GNU Autoconf package:"
  121 + echo "<$gnu_software_URL/autoconf/>"
  122 + echo "It also requires GNU m4 and Perl in order to run:"
  123 + echo "<$gnu_software_URL/m4/>"
  124 + echo "<$perl_URL>"
  125 + ;;
  126 + esac
  127 +}
  128 +
  129 +give_advice ()
  130 +{
  131 + # Normalize program name to check for.
  132 + normalized_program=`echo "$1" | sed '
  133 + s/^gnu-//; t
  134 + s/^gnu//; t
  135 + s/^g//; t'`
  136 +
  137 + printf '%s\n' "'$1' is $msg."
  138 +
  139 + configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
  140 + case $normalized_program in
  141 + autoconf*)
  142 + echo "You should only need it if you modified 'configure.ac',"
  143 + echo "or m4 files included by it."
  144 + program_details 'autoconf'
  145 + ;;
  146 + autoheader*)
  147 + echo "You should only need it if you modified 'acconfig.h' or"
  148 + echo "$configure_deps."
  149 + program_details 'autoheader'
  150 + ;;
  151 + automake*)
  152 + echo "You should only need it if you modified 'Makefile.am' or"
  153 + echo "$configure_deps."
  154 + program_details 'automake'
  155 + ;;
  156 + aclocal*)
  157 + echo "You should only need it if you modified 'acinclude.m4' or"
  158 + echo "$configure_deps."
  159 + program_details 'aclocal'
  160 + ;;
  161 + autom4te*)
  162 + echo "You might have modified some maintainer files that require"
  163 + echo "the 'autom4te' program to be rebuilt."
  164 + program_details 'autom4te'
  165 + ;;
  166 + bison*|yacc*)
  167 + echo "You should only need it if you modified a '.y' file."
  168 + echo "You may want to install the GNU Bison package:"
  169 + echo "<$gnu_software_URL/bison/>"
  170 + ;;
  171 + lex*|flex*)
  172 + echo "You should only need it if you modified a '.l' file."
  173 + echo "You may want to install the Fast Lexical Analyzer package:"
  174 + echo "<$flex_URL>"
  175 + ;;
  176 + help2man*)
  177 + echo "You should only need it if you modified a dependency" \
  178 + "of a man page."
  179 + echo "You may want to install the GNU Help2man package:"
  180 + echo "<$gnu_software_URL/help2man/>"
  181 + ;;
  182 + makeinfo*)
  183 + echo "You should only need it if you modified a '.texi' file, or"
  184 + echo "any other file indirectly affecting the aspect of the manual."
  185 + echo "You might want to install the Texinfo package:"
  186 + echo "<$gnu_software_URL/texinfo/>"
  187 + echo "The spurious makeinfo call might also be the consequence of"
  188 + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
  189 + echo "want to install GNU make:"
  190 + echo "<$gnu_software_URL/make/>"
  191 + ;;
  192 + *)
  193 + echo "You might have modified some files without having the proper"
  194 + echo "tools for further handling them. Check the 'README' file, it"
  195 + echo "often tells you about the needed prerequisites for installing"
  196 + echo "this package. You may also peek at any GNU archive site, in"
  197 + echo "case some other package contains this missing '$1' program."
  198 + ;;
  199 + esac
  200 +}
  201 +
  202 +give_advice "$1" | sed -e '1s/^/WARNING: /' \
  203 + -e '2,$s/^/ /' >&2
  204 +
  205 +# Propagate the correct exit status (expected to be 127 for a program
  206 +# not found, 63 for a program that failed due to version mismatch).
  207 +exit $st
  208 +
  209 +# Local variables:
  210 +# eval: (add-hook 'write-file-hooks 'time-stamp)
  211 +# time-stamp-start: "scriptversion="
  212 +# time-stamp-format: "%:y-%02m-%02d.%02H"
  213 +# time-stamp-time-zone: "UTC"
  214 +# time-stamp-end: "; # UTC"
  215 +# End:
... ...
build-aux/test-driver 0 → 100755
  1 +#! /bin/sh
  2 +# test-driver - basic testsuite driver script.
  3 +
  4 +scriptversion=2013-07-13.22; # UTC
  5 +
  6 +# Copyright (C) 2011-2013 Free Software Foundation, Inc.
  7 +#
  8 +# This program is free software; you can redistribute it and/or modify
  9 +# it under the terms of the GNU General Public License as published by
  10 +# the Free Software Foundation; either version 2, or (at your option)
  11 +# any later version.
  12 +#
  13 +# This program is distributed in the hope that it will be useful,
  14 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 +# GNU General Public License for more details.
  17 +#
  18 +# You should have received a copy of the GNU General Public License
  19 +# along with this program. If not, see <http://www.gnu.org/licenses/>.
  20 +
  21 +# As a special exception to the GNU General Public License, if you
  22 +# distribute this file as part of a program that contains a
  23 +# configuration script generated by Autoconf, you may include it under
  24 +# the same distribution terms that you use for the rest of that program.
  25 +
  26 +# This file is maintained in Automake, please report
  27 +# bugs to <bug-automake@gnu.org> or send patches to
  28 +# <automake-patches@gnu.org>.
  29 +
  30 +# Make unconditional expansion of undefined variables an error. This
  31 +# helps a lot in preventing typo-related bugs.
  32 +set -u
  33 +
  34 +usage_error ()
  35 +{
  36 + echo "$0: $*" >&2
  37 + print_usage >&2
  38 + exit 2
  39 +}
  40 +
  41 +print_usage ()
  42 +{
  43 + cat <<END
  44 +Usage:
  45 + test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
  46 + [--expect-failure={yes|no}] [--color-tests={yes|no}]
  47 + [--enable-hard-errors={yes|no}] [--]
  48 + TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
  49 +The '--test-name', '--log-file' and '--trs-file' options are mandatory.
  50 +END
  51 +}
  52 +
  53 +test_name= # Used for reporting.
  54 +log_file= # Where to save the output of the test script.
  55 +trs_file= # Where to save the metadata of the test run.
  56 +expect_failure=no
  57 +color_tests=no
  58 +enable_hard_errors=yes
  59 +while test $# -gt 0; do
  60 + case $1 in
  61 + --help) print_usage; exit $?;;
  62 + --version) echo "test-driver $scriptversion"; exit $?;;
  63 + --test-name) test_name=$2; shift;;
  64 + --log-file) log_file=$2; shift;;
  65 + --trs-file) trs_file=$2; shift;;
  66 + --color-tests) color_tests=$2; shift;;
  67 + --expect-failure) expect_failure=$2; shift;;
  68 + --enable-hard-errors) enable_hard_errors=$2; shift;;
  69 + --) shift; break;;
  70 + -*) usage_error "invalid option: '$1'";;
  71 + *) break;;
  72 + esac
  73 + shift
  74 +done
  75 +
  76 +missing_opts=
  77 +test x"$test_name" = x && missing_opts="$missing_opts --test-name"
  78 +test x"$log_file" = x && missing_opts="$missing_opts --log-file"
  79 +test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
  80 +if test x"$missing_opts" != x; then
  81 + usage_error "the following mandatory options are missing:$missing_opts"
  82 +fi
  83 +
  84 +if test $# -eq 0; then
  85 + usage_error "missing argument"
  86 +fi
  87 +
  88 +if test $color_tests = yes; then
  89 + # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
  90 + red='' # Red.
  91 + grn='' # Green.
  92 + lgn='' # Light green.
  93 + blu='' # Blue.
  94 + mgn='' # Magenta.
  95 + std='' # No color.
  96 +else
  97 + red= grn= lgn= blu= mgn= std=
  98 +fi
  99 +
  100 +do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
  101 +trap "st=129; $do_exit" 1
  102 +trap "st=130; $do_exit" 2
  103 +trap "st=141; $do_exit" 13
  104 +trap "st=143; $do_exit" 15
  105 +
  106 +# Test script is run here.
  107 +"$@" >$log_file 2>&1
  108 +estatus=$?
  109 +if test $enable_hard_errors = no && test $estatus -eq 99; then
  110 + estatus=1
  111 +fi
  112 +
  113 +case $estatus:$expect_failure in
  114 + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
  115 + 0:*) col=$grn res=PASS recheck=no gcopy=no;;
  116 + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
  117 + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
  118 + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
  119 + *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
  120 +esac
  121 +
  122 +# Report outcome to console.
  123 +echo "${col}${res}${std}: $test_name"
  124 +
  125 +# Register the test result, and other relevant metadata.
  126 +echo ":test-result: $res" > $trs_file
  127 +echo ":global-test-result: $res" >> $trs_file
  128 +echo ":recheck: $recheck" >> $trs_file
  129 +echo ":copy-in-global-log: $gcopy" >> $trs_file
  130 +
  131 +# Local Variables:
  132 +# mode: shell-script
  133 +# sh-indentation: 2
  134 +# eval: (add-hook 'write-file-hooks 'time-stamp)
  135 +# time-stamp-start: "scriptversion="
  136 +# time-stamp-format: "%:y-%02m-%02d.%02H"
  137 +# time-stamp-time-zone: "UTC"
  138 +# time-stamp-end: "; # UTC"
  139 +# End:
... ...