"Fossies" - the Fresh Open Source Software Archive

Member "squidview-0.86/depcomp" (1 Feb 2017, 17574 Bytes) of package /linux/privat/squidview-0.86.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #! /bin/sh
    2 # depcomp - compile a program generating dependencies as side-effects
    3 
    4 scriptversion=2006-10-15.18
    5 
    6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
    7 # Foundation, Inc.
    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, write to the Free Software
   21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
   22 # 02110-1301, USA.
   23 
   24 # As a special exception to the GNU General Public License, if you
   25 # distribute this file as part of a program that contains a
   26 # configuration script generated by Autoconf, you may include it under
   27 # the same distribution terms that you use for the rest of that program.
   28 
   29 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
   30 
   31 case $1 in
   32   '')
   33      echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
   34      exit 1;
   35      ;;
   36   -h | --h*)
   37     cat <<\EOF
   38 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
   39 
   40 Run PROGRAMS ARGS to compile a file, generating dependencies
   41 as side-effects.
   42 
   43 Environment variables:
   44   depmode     Dependency tracking mode.
   45   source      Source file read by `PROGRAMS ARGS'.
   46   object      Object file output by `PROGRAMS ARGS'.
   47   DEPDIR      directory where to store dependencies.
   48   depfile     Dependency file to output.
   49   tmpdepfile  Temporary file to use when outputing dependencies.
   50   libtool     Whether libtool is used (yes/no).
   51 
   52 Report bugs to <bug-automake@gnu.org>.
   53 EOF
   54     exit $?
   55     ;;
   56   -v | --v*)
   57     echo "depcomp $scriptversion"
   58     exit $?
   59     ;;
   60 esac
   61 
   62 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   63   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   64   exit 1
   65 fi
   66 
   67 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
   68 depfile=${depfile-`echo "$object" |
   69   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
   70 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
   71 
   72 rm -f "$tmpdepfile"
   73 
   74 # Some modes work just like other modes, but use different flags.  We
   75 # parameterize here, but still list the modes in the big case below,
   76 # to make depend.m4 easier to write.  Note that we *cannot* use a case
   77 # here, because this file can only contain one case statement.
   78 if test "$depmode" = hp; then
   79   # HP compiler uses -M and no extra arg.
   80   gccflag=-M
   81   depmode=gcc
   82 fi
   83 
   84 if test "$depmode" = dashXmstdout; then
   85    # This is just like dashmstdout with a different argument.
   86    dashmflag=-xM
   87    depmode=dashmstdout
   88 fi
   89 
   90 case "$depmode" in
   91 gcc3)
   92 ## gcc 3 implements dependency tracking that does exactly what
   93 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
   94 ## it if -MD -MP comes after the -MF stuff.  Hmm.
   95 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
   96 ## the command line argument order; so add the flags where they
   97 ## appear in depend2.am.  Note that the slowdown incurred here
   98 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
   99   for arg
  100   do
  101     case $arg in
  102     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
  103     *)  set fnord "$@" "$arg" ;;
  104     esac
  105     shift # fnord
  106     shift # $arg
  107   done
  108   "$@"
  109   stat=$?
  110   if test $stat -eq 0; then :
  111   else
  112     rm -f "$tmpdepfile"
  113     exit $stat
  114   fi
  115   mv "$tmpdepfile" "$depfile"
  116   ;;
  117 
  118 gcc)
  119 ## There are various ways to get dependency output from gcc.  Here's
  120 ## why we pick this rather obscure method:
  121 ## - Don't want to use -MD because we'd like the dependencies to end
  122 ##   up in a subdir.  Having to rename by hand is ugly.
  123 ##   (We might end up doing this anyway to support other compilers.)
  124 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
  125 ##   -MM, not -M (despite what the docs say).
  126 ## - Using -M directly means running the compiler twice (even worse
  127 ##   than renaming).
  128   if test -z "$gccflag"; then
  129     gccflag=-MD,
  130   fi
  131   "$@" -Wp,"$gccflag$tmpdepfile"
  132   stat=$?
  133   if test $stat -eq 0; then :
  134   else
  135     rm -f "$tmpdepfile"
  136     exit $stat
  137   fi
  138   rm -f "$depfile"
  139   echo "$object : \\" > "$depfile"
  140   alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  141 ## The second -e expression handles DOS-style file names with drive letters.
  142   sed -e 's/^[^:]*: / /' \
  143       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
  144 ## This next piece of magic avoids the `deleted header file' problem.
  145 ## The problem is that when a header file which appears in a .P file
  146 ## is deleted, the dependency causes make to die (because there is
  147 ## typically no way to rebuild the header).  We avoid this by adding
  148 ## dummy dependencies for each header file.  Too bad gcc doesn't do
  149 ## this for us directly.
  150   tr ' ' '
  151 ' < "$tmpdepfile" |
  152 ## Some versions of gcc put a space before the `:'.  On the theory
  153 ## that the space means something, we add a space to the output as
  154 ## well.
  155 ## Some versions of the HPUX 10.20 sed can't process this invocation
  156 ## correctly.  Breaking it into two sed invocations is a workaround.
  157     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
  158   rm -f "$tmpdepfile"
  159   ;;
  160 
  161 hp)
  162   # This case exists only to let depend.m4 do its work.  It works by
  163   # looking at the text of this script.  This case will never be run,
  164   # since it is checked for above.
  165   exit 1
  166   ;;
  167 
  168 sgi)
  169   if test "$libtool" = yes; then
  170     "$@" "-Wp,-MDupdate,$tmpdepfile"
  171   else
  172     "$@" -MDupdate "$tmpdepfile"
  173   fi
  174   stat=$?
  175   if test $stat -eq 0; then :
  176   else
  177     rm -f "$tmpdepfile"
  178     exit $stat
  179   fi
  180   rm -f "$depfile"
  181 
  182   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
  183     echo "$object : \\" > "$depfile"
  184 
  185     # Clip off the initial element (the dependent).  Don't try to be
  186     # clever and replace this with sed code, as IRIX sed won't handle
  187     # lines with more than a fixed number of characters (4096 in
  188     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
  189     # the IRIX cc adds comments like `#:fec' to the end of the
  190     # dependency line.
  191     tr ' ' '
  192 ' < "$tmpdepfile" \
  193     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
  194     tr '
  195 ' ' ' >> $depfile
  196     echo >> $depfile
  197 
  198     # The second pass generates a dummy entry for each header file.
  199     tr ' ' '
  200 ' < "$tmpdepfile" \
  201    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
  202    >> $depfile
  203   else
  204     # The sourcefile does not contain any dependencies, so just
  205     # store a dummy comment line, to avoid errors with the Makefile
  206     # "include basename.Plo" scheme.
  207     echo "#dummy" > "$depfile"
  208   fi
  209   rm -f "$tmpdepfile"
  210   ;;
  211 
  212 aix)
  213   # The C for AIX Compiler uses -M and outputs the dependencies
  214   # in a .u file.  In older versions, this file always lives in the
  215   # current directory.  Also, the AIX compiler puts `$object:' at the
  216   # start of each line; $object doesn't have directory information.
  217   # Version 6 uses the directory in both cases.
  218   stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
  219   tmpdepfile="$stripped.u"
  220   if test "$libtool" = yes; then
  221     "$@" -Wc,-M
  222   else
  223     "$@" -M
  224   fi
  225   stat=$?
  226 
  227   if test -f "$tmpdepfile"; then :
  228   else
  229     stripped=`echo "$stripped" | sed 's,^.*/,,'`
  230     tmpdepfile="$stripped.u"
  231   fi
  232 
  233   if test $stat -eq 0; then :
  234   else
  235     rm -f "$tmpdepfile"
  236     exit $stat
  237   fi
  238 
  239   if test -f "$tmpdepfile"; then
  240     outname="$stripped.o"
  241     # Each line is of the form `foo.o: dependent.h'.
  242     # Do two passes, one to just change these to
  243     # `$object: dependent.h' and one to simply `dependent.h:'.
  244     sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
  245     sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
  246   else
  247     # The sourcefile does not contain any dependencies, so just
  248     # store a dummy comment line, to avoid errors with the Makefile
  249     # "include basename.Plo" scheme.
  250     echo "#dummy" > "$depfile"
  251   fi
  252   rm -f "$tmpdepfile"
  253   ;;
  254 
  255 icc)
  256   # Intel's C compiler understands `-MD -MF file'.  However on
  257   #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
  258   # ICC 7.0 will fill foo.d with something like
  259   #    foo.o: sub/foo.c
  260   #    foo.o: sub/foo.h
  261   # which is wrong.  We want:
  262   #    sub/foo.o: sub/foo.c
  263   #    sub/foo.o: sub/foo.h
  264   #    sub/foo.c:
  265   #    sub/foo.h:
  266   # ICC 7.1 will output
  267   #    foo.o: sub/foo.c sub/foo.h
  268   # and will wrap long lines using \ :
  269   #    foo.o: sub/foo.c ... \
  270   #     sub/foo.h ... \
  271   #     ...
  272 
  273   "$@" -MD -MF "$tmpdepfile"
  274   stat=$?
  275   if test $stat -eq 0; then :
  276   else
  277     rm -f "$tmpdepfile"
  278     exit $stat
  279   fi
  280   rm -f "$depfile"
  281   # Each line is of the form `foo.o: dependent.h',
  282   # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
  283   # Do two passes, one to just change these to
  284   # `$object: dependent.h' and one to simply `dependent.h:'.
  285   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
  286   # Some versions of the HPUX 10.20 sed can't process this invocation
  287   # correctly.  Breaking it into two sed invocations is a workaround.
  288   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
  289     sed -e 's/$/ :/' >> "$depfile"
  290   rm -f "$tmpdepfile"
  291   ;;
  292 
  293 hp2)
  294   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
  295   # compilers, which have integrated preprocessors.  The correct option
  296   # to use with these is +Maked; it writes dependencies to a file named
  297   # 'foo.d', which lands next to the object file, wherever that
  298   # happens to be.
  299   # Much of this is similar to the tru64 case; see comments there.
  300   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
  301   test "x$dir" = "x$object" && dir=
  302   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
  303   if test "$libtool" = yes; then
  304     tmpdepfile1=$dir$base.d
  305     tmpdepfile2=$dir.libs/$base.d
  306     "$@" -Wc,+Maked
  307   else
  308     tmpdepfile1=$dir$base.d
  309     tmpdepfile2=$dir$base.d
  310     "$@" +Maked
  311   fi
  312   stat=$?
  313   if test $stat -eq 0; then :
  314   else
  315      rm -f "$tmpdepfile1" "$tmpdepfile2"
  316      exit $stat
  317   fi
  318 
  319   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
  320   do
  321     test -f "$tmpdepfile" && break
  322   done
  323   if test -f "$tmpdepfile"; then
  324     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
  325     # Add `dependent.h:' lines.
  326     sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
  327   else
  328     echo "#dummy" > "$depfile"
  329   fi
  330   rm -f "$tmpdepfile" "$tmpdepfile2"
  331   ;;
  332 
  333 tru64)
  334    # The Tru64 compiler uses -MD to generate dependencies as a side
  335    # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
  336    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
  337    # dependencies in `foo.d' instead, so we check for that too.
  338    # Subdirectories are respected.
  339    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
  340    test "x$dir" = "x$object" && dir=
  341    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
  342 
  343    if test "$libtool" = yes; then
  344       # With Tru64 cc, shared objects can also be used to make a
  345       # static library.  This mechanism is used in libtool 1.4 series to
  346       # handle both shared and static libraries in a single compilation.
  347       # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
  348       #
  349       # With libtool 1.5 this exception was removed, and libtool now
  350       # generates 2 separate objects for the 2 libraries.  These two
  351       # compilations output dependencies in $dir.libs/$base.o.d and
  352       # in $dir$base.o.d.  We have to check for both files, because
  353       # one of the two compilations can be disabled.  We should prefer
  354       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
  355       # automatically cleaned when .libs/ is deleted, while ignoring
  356       # the former would cause a distcleancheck panic.
  357       tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
  358       tmpdepfile2=$dir$base.o.d          # libtool 1.5
  359       tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
  360       tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
  361       "$@" -Wc,-MD
  362    else
  363       tmpdepfile1=$dir$base.o.d
  364       tmpdepfile2=$dir$base.d
  365       tmpdepfile3=$dir$base.d
  366       tmpdepfile4=$dir$base.d
  367       "$@" -MD
  368    fi
  369 
  370    stat=$?
  371    if test $stat -eq 0; then :
  372    else
  373       rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
  374       exit $stat
  375    fi
  376 
  377    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
  378    do
  379      test -f "$tmpdepfile" && break
  380    done
  381    if test -f "$tmpdepfile"; then
  382       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
  383       # That's a tab and a space in the [].
  384       sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
  385    else
  386       echo "#dummy" > "$depfile"
  387    fi
  388    rm -f "$tmpdepfile"
  389    ;;
  390 
  391 #nosideeffect)
  392   # This comment above is used by automake to tell side-effect
  393   # dependency tracking mechanisms from slower ones.
  394 
  395 dashmstdout)
  396   # Important note: in order to support this mode, a compiler *must*
  397   # always write the preprocessed file to stdout, regardless of -o.
  398   "$@" || exit $?
  399 
  400   # Remove the call to Libtool.
  401   if test "$libtool" = yes; then
  402     while test $1 != '--mode=compile'; do
  403       shift
  404     done
  405     shift
  406   fi
  407 
  408   # Remove `-o $object'.
  409   IFS=" "
  410   for arg
  411   do
  412     case $arg in
  413     -o)
  414       shift
  415       ;;
  416     $object)
  417       shift
  418       ;;
  419     *)
  420       set fnord "$@" "$arg"
  421       shift # fnord
  422       shift # $arg
  423       ;;
  424     esac
  425   done
  426 
  427   test -z "$dashmflag" && dashmflag=-M
  428   # Require at least two characters before searching for `:'
  429   # in the target name.  This is to cope with DOS-style filenames:
  430   # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
  431   "$@" $dashmflag |
  432     sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
  433   rm -f "$depfile"
  434   cat < "$tmpdepfile" > "$depfile"
  435   tr ' ' '
  436 ' < "$tmpdepfile" | \
  437 ## Some versions of the HPUX 10.20 sed can't process this invocation
  438 ## correctly.  Breaking it into two sed invocations is a workaround.
  439     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
  440   rm -f "$tmpdepfile"
  441   ;;
  442 
  443 dashXmstdout)
  444   # This case only exists to satisfy depend.m4.  It is never actually
  445   # run, as this mode is specially recognized in the preamble.
  446   exit 1
  447   ;;
  448 
  449 makedepend)
  450   "$@" || exit $?
  451   # Remove any Libtool call
  452   if test "$libtool" = yes; then
  453     while test $1 != '--mode=compile'; do
  454       shift
  455     done
  456     shift
  457   fi
  458   # X makedepend
  459   shift
  460   cleared=no
  461   for arg in "$@"; do
  462     case $cleared in
  463     no)
  464       set ""; shift
  465       cleared=yes ;;
  466     esac
  467     case "$arg" in
  468     -D*|-I*)
  469       set fnord "$@" "$arg"; shift ;;
  470     # Strip any option that makedepend may not understand.  Remove
  471     # the object too, otherwise makedepend will parse it as a source file.
  472     -*|$object)
  473       ;;
  474     *)
  475       set fnord "$@" "$arg"; shift ;;
  476     esac
  477   done
  478   obj_suffix="`echo $object | sed 's/^.*\././'`"
  479   touch "$tmpdepfile"
  480   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
  481   rm -f "$depfile"
  482   cat < "$tmpdepfile" > "$depfile"
  483   sed '1,2d' "$tmpdepfile" | tr ' ' '
  484 ' | \
  485 ## Some versions of the HPUX 10.20 sed can't process this invocation
  486 ## correctly.  Breaking it into two sed invocations is a workaround.
  487     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
  488   rm -f "$tmpdepfile" "$tmpdepfile".bak
  489   ;;
  490 
  491 cpp)
  492   # Important note: in order to support this mode, a compiler *must*
  493   # always write the preprocessed file to stdout.
  494   "$@" || exit $?
  495 
  496   # Remove the call to Libtool.
  497   if test "$libtool" = yes; then
  498     while test $1 != '--mode=compile'; do
  499       shift
  500     done
  501     shift
  502   fi
  503 
  504   # Remove `-o $object'.
  505   IFS=" "
  506   for arg
  507   do
  508     case $arg in
  509     -o)
  510       shift
  511       ;;
  512     $object)
  513       shift
  514       ;;
  515     *)
  516       set fnord "$@" "$arg"
  517       shift # fnord
  518       shift # $arg
  519       ;;
  520     esac
  521   done
  522 
  523   "$@" -E |
  524     sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
  525        -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
  526     sed '$ s: \\$::' > "$tmpdepfile"
  527   rm -f "$depfile"
  528   echo "$object : \\" > "$depfile"
  529   cat < "$tmpdepfile" >> "$depfile"
  530   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
  531   rm -f "$tmpdepfile"
  532   ;;
  533 
  534 msvisualcpp)
  535   # Important note: in order to support this mode, a compiler *must*
  536   # always write the preprocessed file to stdout, regardless of -o,
  537   # because we must use -o when running libtool.
  538   "$@" || exit $?
  539   IFS=" "
  540   for arg
  541   do
  542     case "$arg" in
  543     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
  544     set fnord "$@"
  545     shift
  546     shift
  547     ;;
  548     *)
  549     set fnord "$@" "$arg"
  550     shift
  551     shift
  552     ;;
  553     esac
  554   done
  555   "$@" -E |
  556   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
  557   rm -f "$depfile"
  558   echo "$object : \\" > "$depfile"
  559   . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::    \1 \\:p' >> "$depfile"
  560   echo "    " >> "$depfile"
  561   . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
  562   rm -f "$tmpdepfile"
  563   ;;
  564 
  565 none)
  566   exec "$@"
  567   ;;
  568 
  569 *)
  570   echo "Unknown depmode $depmode" 1>&2
  571   exit 1
  572   ;;
  573 esac
  574 
  575 exit 0
  576 
  577 # Local Variables:
  578 # mode: shell-script
  579 # sh-indentation: 2
  580 # eval: (add-hook 'write-file-hooks 'time-stamp)
  581 # time-stamp-start: "scriptversion="
  582 # time-stamp-format: "%:y-%02m-%02d.%02H"
  583 # time-stamp-end: "$"
  584 # End: