ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/depcomp
(Generate patch)

Comparing:
ircd-hybrid/depcomp (file contents), Revision 1028 by michael, Sun Nov 8 13:03:38 2009 UTC vs.
ircd-hybrid/trunk/depcomp (file contents), Revision 1662 by michael, Sat Nov 17 20:11:33 2012 UTC

# Line 1 | Line 1
1   #! /bin/sh
2   # depcomp - compile a program generating dependencies as side-effects
3  
4 < scriptversion=2009-04-28.21; # UTC
4 > scriptversion=2012-07-12.20; # UTC
5  
6 < # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7 < # Software Foundation, Inc.
6 > # Copyright (C) 1999-2012 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
# Line 28 | Line 27 | scriptversion=2009-04-28.21; # UTC
27  
28   case $1 in
29    '')
30 <     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
30 >     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31       exit 1;
32       ;;
33    -h | --h*)
# Line 40 | Line 39 | 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'.
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 outputing dependencies.
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>.
# Line 57 | Line 56 | EOF
56      ;;
57   esac
58  
59 + # A tabulation character.
60 + tab='   '
61 + # A newline character.
62 + nl='
63 + '
64 +
65   if test -z "$depmode" || test -z "$source" || test -z "$object"; then
66    echo "depcomp: Variables source, object and depmode must be set" 1>&2
67    exit 1
# Line 90 | Line 95 | if test "$depmode" = msvcmsys; then
95     # This is just like msvisualcpp but w/o cygpath translation.
96     # Just convert the backslash-escaped backslashes to single forward
97     # slashes to satisfy depend.m4
98 <   cygpath_u="sed s,\\\\\\\\,/,g"
98 >   cygpath_u='sed s,\\\\,/,g'
99     depmode=msvisualcpp
100   fi
101  
102 + if test "$depmode" = msvc7msys; then
103 +   # This is just like msvc7 but w/o cygpath translation.
104 +   # Just convert the backslash-escaped backslashes to single forward
105 +   # slashes to satisfy depend.m4
106 +   cygpath_u='sed s,\\\\,/,g'
107 +   depmode=msvc7
108 + fi
109 +
110 + if test "$depmode" = xlc; then
111 +   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
112 +   gccflag=-qmakedep=gcc,-MF
113 +   depmode=gcc
114 + fi
115 +
116   case "$depmode" in
117   gcc3)
118   ## gcc 3 implements dependency tracking that does exactly what
# Line 148 | Line 167 | gcc)
167   ## The second -e expression handles DOS-style file names with drive letters.
168    sed -e 's/^[^:]*: / /' \
169        -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
170 < ## This next piece of magic avoids the `deleted header file' problem.
170 > ## This next piece of magic avoids the "deleted header file" problem.
171   ## The problem is that when a header file which appears in a .P file
172   ## is deleted, the dependency causes make to die (because there is
173   ## typically no way to rebuild the header).  We avoid this by adding
174   ## dummy dependencies for each header file.  Too bad gcc doesn't do
175   ## this for us directly.
176 <  tr ' ' '
177 < ' < "$tmpdepfile" |
159 < ## Some versions of gcc put a space before the `:'.  On the theory
176 >  tr ' ' "$nl" < "$tmpdepfile" |
177 > ## Some versions of gcc put a space before the ':'.  On the theory
178   ## that the space means something, we add a space to the output as
179 < ## well.
179 > ## well.  hp depmode also adds that space, but also prefixes the VPATH
180 > ## to the object.  Take care to not repeat it in the output.
181   ## Some versions of the HPUX 10.20 sed can't process this invocation
182   ## correctly.  Breaking it into two sed invocations is a workaround.
183 <    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
183 >    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
184 >      | sed -e 's/$/ :/' >> "$depfile"
185    rm -f "$tmpdepfile"
186    ;;
187  
# Line 193 | Line 213 | sgi)
213      # clever and replace this with sed code, as IRIX sed won't handle
214      # lines with more than a fixed number of characters (4096 in
215      # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
216 <    # the IRIX cc adds comments like `#:fec' to the end of the
216 >    # the IRIX cc adds comments like '#:fec' to the end of the
217      # dependency line.
218 <    tr ' ' '
199 < ' < "$tmpdepfile" \
218 >    tr ' ' "$nl" < "$tmpdepfile" \
219      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
220 <    tr '
202 < ' ' ' >> "$depfile"
220 >    tr "$nl" ' ' >> "$depfile"
221      echo >> "$depfile"
222  
223      # The second pass generates a dummy entry for each header file.
224 <    tr ' ' '
207 < ' < "$tmpdepfile" \
224 >    tr ' ' "$nl" < "$tmpdepfile" \
225     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
226     >> "$depfile"
227    else
# Line 216 | Line 233 | sgi)
233    rm -f "$tmpdepfile"
234    ;;
235  
236 + xlc)
237 +  # This case exists only to let depend.m4 do its work.  It works by
238 +  # looking at the text of this script.  This case will never be run,
239 +  # since it is checked for above.
240 +  exit 1
241 +  ;;
242 +
243   aix)
244    # The C for AIX Compiler uses -M and outputs the dependencies
245    # in a .u file.  In older versions, this file always lives in the
246 <  # current directory.  Also, the AIX compiler puts `$object:' at the
246 >  # current directory.  Also, the AIX compiler puts '$object:' at the
247    # start of each line; $object doesn't have directory information.
248    # Version 6 uses the directory in both cases.
249    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
# Line 249 | Line 273 | aix)
273      test -f "$tmpdepfile" && break
274    done
275    if test -f "$tmpdepfile"; then
276 <    # Each line is of the form `foo.o: dependent.h'.
276 >    # Each line is of the form 'foo.o: dependent.h'.
277      # Do two passes, one to just change these to
278 <    # `$object: dependent.h' and one to simply `dependent.h:'.
278 >    # '$object: dependent.h' and one to simply 'dependent.h:'.
279      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
280 <    # That's a tab and a space in the [].
257 <    sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
280 >    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
281    else
282      # The sourcefile does not contain any dependencies, so just
283      # store a dummy comment line, to avoid errors with the Makefile
# Line 265 | Line 288 | aix)
288    ;;
289  
290   icc)
291 <  # Intel's C compiler understands `-MD -MF file'.  However on
292 <  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
291 >  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
292 >  # However on
293 >  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
294    # ICC 7.0 will fill foo.d with something like
295    #    foo.o: sub/foo.c
296    #    foo.o: sub/foo.h
297 <  # which is wrong.  We want:
297 >  # which is wrong.  We want
298    #    sub/foo.o: sub/foo.c
299    #    sub/foo.o: sub/foo.h
300    #    sub/foo.c:
301    #    sub/foo.h:
302    # ICC 7.1 will output
303    #    foo.o: sub/foo.c sub/foo.h
304 <  # and will wrap long lines using \ :
304 >  # and will wrap long lines using '\':
305    #    foo.o: sub/foo.c ... \
306    #     sub/foo.h ... \
307    #     ...
308 <
308 >  # tcc 0.9.26 (FIXME still under development at the moment of writing)
309 >  # will emit a similar output, but also prepend the continuation lines
310 >  # with horizontal tabulation characters.
311    "$@" -MD -MF "$tmpdepfile"
312    stat=$?
313    if test $stat -eq 0; then :
# Line 290 | Line 316 | icc)
316      exit $stat
317    fi
318    rm -f "$depfile"
319 +  # Each line is of the form 'foo.o: dependent.h',
320 +  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
321 +  # Do two passes, one to just change these to
322 +  # '$object: dependent.h' and one to simply 'dependent.h:'.
323 +  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
324 +    < "$tmpdepfile" > "$depfile"
325 +  sed '
326 +    s/[ '"$tab"'][ '"$tab"']*/ /g
327 +    s/^ *//
328 +    s/ *\\*$//
329 +    s/^[^:]*: *//
330 +    /^$/d
331 +    /:$/d
332 +    s/$/ :/
333 +  ' < "$tmpdepfile" >> "$depfile"
334 +  rm -f "$tmpdepfile"
335 +  ;;
336 +
337 + ## The order of this option in the case statement is important, since the
338 + ## shell code in configure will try each of these formats in the order
339 + ## listed in this file.  A plain '-MD' option would be understood by many
340 + ## compilers, so we must ensure this comes after the gcc and icc options.
341 + pgcc)
342 +  # Portland's C compiler understands '-MD'.
343 +  # Will always output deps to 'file.d' where file is the root name of the
344 +  # source file under compilation, even if file resides in a subdirectory.
345 +  # The object file name does not affect the name of the '.d' file.
346 +  # pgcc 10.2 will output
347 +  #    foo.o: sub/foo.c sub/foo.h
348 +  # and will wrap long lines using '\' :
349 +  #    foo.o: sub/foo.c ... \
350 +  #     sub/foo.h ... \
351 +  #     ...
352 +  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
353 +  test "x$dir" = "x$object" && dir=
354 +  # Use the source, not the object, to determine the base name, since
355 +  # that's sadly what pgcc will do too.
356 +  base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
357 +  tmpdepfile="$base.d"
358 +
359 +  # For projects that build the same source file twice into different object
360 +  # files, the pgcc approach of using the *source* file root name can cause
361 +  # problems in parallel builds.  Use a locking strategy to avoid stomping on
362 +  # the same $tmpdepfile.
363 +  lockdir="$base.d-lock"
364 +  trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15
365 +  numtries=100
366 +  i=$numtries
367 +  while test $i -gt 0 ; do
368 +    # mkdir is a portable test-and-set.
369 +    if mkdir $lockdir 2>/dev/null; then
370 +      # This process acquired the lock.
371 +      "$@" -MD
372 +      stat=$?
373 +      # Release the lock.
374 +      rm -rf $lockdir
375 +      break
376 +    else
377 +      ## the lock is being held by a different process,
378 +      ## wait until the winning process is done or we timeout
379 +      while test -d $lockdir && test $i -gt 0; do
380 +        sleep 1
381 +        i=`expr $i - 1`
382 +      done
383 +    fi
384 +    i=`expr $i - 1`
385 +  done
386 +  trap - 1 2 13 15
387 +  if test $i -le 0; then
388 +    echo "$0: failed to acquire lock after $numtries attempts" >&2
389 +    echo "$0: check lockdir '$lockdir'" >&2
390 +    exit 1
391 +  fi
392 +
393 +  if test $stat -ne 0; then
394 +    rm -f "$tmpdepfile"
395 +    exit $stat
396 +  fi
397 +  rm -f "$depfile"
398    # Each line is of the form `foo.o: dependent.h',
399    # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
400    # Do two passes, one to just change these to
# Line 334 | Line 439 | hp2)
439    done
440    if test -f "$tmpdepfile"; then
441      sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
442 <    # Add `dependent.h:' lines.
442 >    # Add 'dependent.h:' lines.
443      sed -ne '2,${
444                 s/^ *//
445                 s/ \\*$//
# Line 349 | Line 454 | hp2)
454  
455   tru64)
456     # The Tru64 compiler uses -MD to generate dependencies as a side
457 <   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
457 >   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
458     # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
459 <   # dependencies in `foo.d' instead, so we check for that too.
459 >   # dependencies in 'foo.d' instead, so we check for that too.
460     # Subdirectories are respected.
461     dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
462     test "x$dir" = "x$object" && dir=
# Line 397 | Line 502 | tru64)
502     done
503     if test -f "$tmpdepfile"; then
504        sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
505 <      # That's a tab and a space in the [].
401 <      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
505 >      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
506     else
507        echo "#dummy" > "$depfile"
508     fi
509     rm -f "$tmpdepfile"
510     ;;
511  
512 + msvc7)
513 +  if test "$libtool" = yes; then
514 +    showIncludes=-Wc,-showIncludes
515 +  else
516 +    showIncludes=-showIncludes
517 +  fi
518 +  "$@" $showIncludes > "$tmpdepfile"
519 +  stat=$?
520 +  grep -v '^Note: including file: ' "$tmpdepfile"
521 +  if test "$stat" = 0; then :
522 +  else
523 +    rm -f "$tmpdepfile"
524 +    exit $stat
525 +  fi
526 +  rm -f "$depfile"
527 +  echo "$object : \\" > "$depfile"
528 +  # The first sed program below extracts the file names and escapes
529 +  # backslashes for cygpath.  The second sed program outputs the file
530 +  # name when reading, but also accumulates all include files in the
531 +  # hold buffer in order to output them again at the end.  This only
532 +  # works with sed implementations that can handle large buffers.
533 +  sed < "$tmpdepfile" -n '
534 + /^Note: including file:  *\(.*\)/ {
535 +  s//\1/
536 +  s/\\/\\\\/g
537 +  p
538 + }' | $cygpath_u | sort -u | sed -n '
539 + s/ /\\ /g
540 + s/\(.*\)/'"$tab"'\1 \\/p
541 + s/.\(.*\) \\/\1:/
542 + H
543 + $ {
544 +  s/.*/'"$tab"'/
545 +  G
546 +  p
547 + }' >> "$depfile"
548 +  rm -f "$tmpdepfile"
549 +  ;;
550 +
551 + msvc7msys)
552 +  # This case exists only to let depend.m4 do its work.  It works by
553 +  # looking at the text of this script.  This case will never be run,
554 +  # since it is checked for above.
555 +  exit 1
556 +  ;;
557 +
558   #nosideeffect)
559    # This comment above is used by automake to tell side-effect
560    # dependency tracking mechanisms from slower ones.
# Line 422 | Line 572 | dashmstdout)
572      shift
573    fi
574  
575 <  # Remove `-o $object'.
575 >  # Remove '-o $object'.
576    IFS=" "
577    for arg
578    do
# Line 442 | Line 592 | dashmstdout)
592    done
593  
594    test -z "$dashmflag" && dashmflag=-M
595 <  # Require at least two characters before searching for `:'
595 >  # Require at least two characters before searching for ':'
596    # in the target name.  This is to cope with DOS-style filenames:
597 <  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
597 >  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
598    "$@" $dashmflag |
599 <    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
599 >    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
600    rm -f "$depfile"
601    cat < "$tmpdepfile" > "$depfile"
602 <  tr ' ' '
453 < ' < "$tmpdepfile" | \
602 >  tr ' ' "$nl" < "$tmpdepfile" | \
603   ## Some versions of the HPUX 10.20 sed can't process this invocation
604   ## correctly.  Breaking it into two sed invocations is a workaround.
605      sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
# Line 503 | Line 652 | makedepend)
652    touch "$tmpdepfile"
653    ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
654    rm -f "$depfile"
655 <  cat < "$tmpdepfile" > "$depfile"
656 <  sed '1,2d' "$tmpdepfile" | tr ' ' '
657 < ' | \
655 >  # makedepend may prepend the VPATH from the source file name to the object.
656 >  # No need to regex-escape $object, excess matching of '.' is harmless.
657 >  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
658 >  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
659   ## Some versions of the HPUX 10.20 sed can't process this invocation
660   ## correctly.  Breaking it into two sed invocations is a workaround.
661      sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
# Line 525 | Line 675 | cpp)
675      shift
676    fi
677  
678 <  # Remove `-o $object'.
678 >  # Remove '-o $object'.
679    IFS=" "
680    for arg
681    do
# Line 594 | Line 744 | msvisualcpp)
744    sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
745    rm -f "$depfile"
746    echo "$object : \\" > "$depfile"
747 <  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
748 <  echo "        " >> "$depfile"
747 >  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
748 >  echo "$tab" >> "$depfile"
749    sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
750    rm -f "$tmpdepfile"
751    ;;

Comparing:
ircd-hybrid/depcomp (property svn:eol-style), Revision 1028 by michael, Sun Nov 8 13:03:38 2009 UTC vs.
ircd-hybrid/trunk/depcomp (property svn:eol-style), Revision 1662 by michael, Sat Nov 17 20:11:33 2012 UTC

# Line 0 | Line 1
1 + native

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)