Commit b072ff96bf689617045dc5785d910a2c3240283d
1 parent
baba3f1e
build-aux
Showing
5 changed files
with
2019 additions
and
0 deletions
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='[0;31m' # Red. | |
| 91 | + grn='[0;32m' # Green. | |
| 92 | + lgn='[1;32m' # Light green. | |
| 93 | + blu='[1;34m' # Blue. | |
| 94 | + mgn='[0;35m' # Magenta. | |
| 95 | + std='[m' # 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: | ... | ... |