rtf2html源码c,rtf2html/depcomp at master · lvu/rtf2html · GitHub

#! /bin/sh

# depcomp - compile a program generating dependencies as side-effects

scriptversion=2004-04-25.13

# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation; either version 2, or (at your option)

# any later version.

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA

# 02111-1307, USA.

# As a special exception to the GNU General Public License, if you

# distribute this file as part of a program that contains a

# configuration script generated by Autoconf, you may include it under

# the same distribution terms that you use for the rest of that program.

# Originally written by Alexandre Oliva .

case $1 in

'')

echo "$0: No command. Try \`$0 --help' for more information." 1>&2

exit 1;

;;

-h | --h*)

cat <

Usage: depcomp [--help] [--version] PROGRAM [ARGS]

Run PROGRAMS ARGS to compile a file, generating dependencies

as side-effects.

Environment variables:

depmode Dependency tracking mode.

source Source file read by `PROGRAMS ARGS'.

object Object file output by `PROGRAMS ARGS'.

depfile Dependency file to output.

tmpdepfile Temporary file to use when outputing dependencies.

libtool Whether libtool is used (yes/no).

Report bugs to .

EOF

exit 0

;;

-v | --v*)

echo "depcomp $scriptversion"

exit 0

;;

esac

if test -z "$depmode" || test -z "$source" || test -z "$object"; then

echo "depcomp: Variables source, object and depmode must be set" 1>&2

exit 1

fi

# `libtool' can also be set to `yes' or `no'.

if test -z "$depfile"; then

base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`

dir=`echo "$object" | sed 's,/.*$,/,'`

if test "$dir" = "$object"; then

dir=

fi

# FIXME: should be _deps on DOS.

depfile="$dir.deps/$base"

fi

tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}

rm -f "$tmpdepfile"

# Some modes work just like other modes, but use different flags. We

# parameterize here, but still list the modes in the big case below,

# to make depend.m4 easier to write. Note that we *cannot* use a case

# here, because this file can only contain one case statement.

if test "$depmode" = hp; then

# HP compiler uses -M and no extra arg.

gccflag=-M

depmode=gcc

fi

if test "$depmode" = dashXmstdout; then

# This is just like dashmstdout with a different argument.

dashmflag=-xM

depmode=dashmstdout

fi

case "$depmode" in

gcc3)

## gcc 3 implements dependency tracking that does exactly what

## we want. Yay! Note: for some reason libtool 1.4 doesn't like

## it if -MD -MP comes after the -MF stuff. Hmm.

"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"

stat=$?

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile"

exit $stat

fi

mv "$tmpdepfile" "$depfile"

;;

gcc)

## There are various ways to get dependency output from gcc. Here's

## why we pick this rather obscure method:

## - Don't want to use -MD because we'd like the dependencies to end

## up in a subdir. Having to rename by hand is ugly.

## (We might end up doing this anyway to support other compilers.)

## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like

## -MM, not -M (despite what the docs say).

## - Using -M directly means running the compiler twice (even worse

## than renaming).

if test -z "$gccflag"; then

gccflag=-MD,

fi

"$@" -Wp,"$gccflag$tmpdepfile"

stat=$?

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile"

exit $stat

fi

rm -f "$depfile"

echo "$object : \\" > "$depfile"

alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

## The second -e expression handles DOS-style file names with drive letters.

sed -e 's/^[^:]*: / /' \

-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"

## This next piece of magic avoids the `deleted header file' problem.

## The problem is that when a header file which appears in a .P file

## is deleted, the dependency causes make to die (because there is

## typically no way to rebuild the header). We avoid this by adding

## dummy dependencies for each header file. Too bad gcc doesn't do

## this for us directly.

tr ' ' '

' < "$tmpdepfile" |

## Some versions of gcc put a space before the `:'. On the theory

## that the space means something, we add a space to the output as

## well.

## Some versions of the HPUX 10.20 sed can't process this invocation

## correctly. Breaking it into two sed invocations is a workaround.

sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"

rm -f "$tmpdepfile"

;;

hp)

# This case exists only to let depend.m4 do its work. It works by

# looking at the text of this script. This case will never be run,

# since it is checked for above.

exit 1

;;

sgi)

if test "$libtool" = yes; then

"$@" "-Wp,-MDupdate,$tmpdepfile"

else

"$@" -MDupdate "$tmpdepfile"

fi

stat=$?

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile"

exit $stat

fi

rm -f "$depfile"

if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files

echo "$object : \\" > "$depfile"

# Clip off the initial element (the dependent). Don't try to be

# clever and replace this with sed code, as IRIX sed won't handle

# lines with more than a fixed number of characters (4096 in

# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;

# the IRIX cc adds comments like `#:fec' to the end of the

# dependency line.

tr ' ' '

' < "$tmpdepfile" \

| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \

tr '

' ' ' >> $depfile

echo >> $depfile

# The second pass generates a dummy entry for each header file.

tr ' ' '

' < "$tmpdepfile" \

| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \

>> $depfile

else

# The sourcefile does not contain any dependencies, so just

# store a dummy comment line, to avoid errors with the Makefile

# "include basename.Plo" scheme.

echo "#dummy" > "$depfile"

fi

rm -f "$tmpdepfile"

;;

aix)

# The C for AIX Compiler uses -M and outputs the dependencies

# in a .u file. In older versions, this file always lives in the

# current directory. Also, the AIX compiler puts `$object:' at the

# start of each line; $object doesn't have directory information.

# Version 6 uses the directory in both cases.

stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`

tmpdepfile="$stripped.u"

if test "$libtool" = yes; then

"$@" -Wc,-M

else

"$@" -M

fi

stat=$?

if test -f "$tmpdepfile"; then :

else

stripped=`echo "$stripped" | sed 's,^.*/,,'`

tmpdepfile="$stripped.u"

fi

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile"

exit $stat

fi

if test -f "$tmpdepfile"; then

outname="$stripped.o"

# Each line is of the form `foo.o: dependent.h'.

# Do two passes, one to just change these to

# `$object: dependent.h' and one to simply `dependent.h:'.

sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"

sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"

else

# The sourcefile does not contain any dependencies, so just

# store a dummy comment line, to avoid errors with the Makefile

# "include basename.Plo" scheme.

echo "#dummy" > "$depfile"

fi

rm -f "$tmpdepfile"

;;

icc)

# Intel's C compiler understands `-MD -MF file'. However on

# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c

# ICC 7.0 will fill foo.d with something like

# foo.o: sub/foo.c

# foo.o: sub/foo.h

# which is wrong. We want:

# sub/foo.o: sub/foo.c

# sub/foo.o: sub/foo.h

# sub/foo.c:

# sub/foo.h:

# ICC 7.1 will output

# foo.o: sub/foo.c sub/foo.h

# and will wrap long lines using \ :

# foo.o: sub/foo.c ... \

# sub/foo.h ... \

# ...

"$@" -MD -MF "$tmpdepfile"

stat=$?

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile"

exit $stat

fi

rm -f "$depfile"

# Each line is of the form `foo.o: dependent.h',

# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.

# Do two passes, one to just change these to

# `$object: dependent.h' and one to simply `dependent.h:'.

sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"

# Some versions of the HPUX 10.20 sed can't process this invocation

# correctly. Breaking it into two sed invocations is a workaround.

sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |

sed -e 's/$/ :/' >> "$depfile"

rm -f "$tmpdepfile"

;;

tru64)

# The Tru64 compiler uses -MD to generate dependencies as a side

# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.

# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put

# dependencies in `foo.d' instead, so we check for that too.

# Subdirectories are respected.

dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`

test "x$dir" = "x$object" && dir=

base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`

if test "$libtool" = yes; then

# Dependencies are output in .lo.d with libtool 1.4.

# They are output in .o.d with libtool 1.5.

tmpdepfile1="$dir.libs/$base.lo.d"

tmpdepfile2="$dir.libs/$base.o.d"

tmpdepfile3="$dir.libs/$base.d"

"$@" -Wc,-MD

else

tmpdepfile1="$dir$base.o.d"

tmpdepfile2="$dir$base.d"

tmpdepfile3="$dir$base.d"

"$@" -MD

fi

stat=$?

if test $stat -eq 0; then :

else

rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"

exit $stat

fi

if test -f "$tmpdepfile1"; then

tmpdepfile="$tmpdepfile1"

elif test -f "$tmpdepfile2"; then

tmpdepfile="$tmpdepfile2"

else

tmpdepfile="$tmpdepfile3"

fi

if test -f "$tmpdepfile"; then

sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"

# That's a tab and a space in the [].

sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"

else

echo "#dummy" > "$depfile"

fi

rm -f "$tmpdepfile"

;;

#nosideeffect)

# This comment above is used by automake to tell side-effect

# dependency tracking mechanisms from slower ones.

dashmstdout)

# Important note: in order to support this mode, a compiler *must*

# always write the preprocessed file to stdout, regardless of -o.

"$@" || exit $?

# Remove the call to Libtool.

if test "$libtool" = yes; then

while test $1 != '--mode=compile'; do

shift

done

shift

fi

# Remove `-o $object'.

IFS=" "

for arg

do

case $arg in

-o)

shift

;;

$object)

shift

;;

*)

set fnord "$@" "$arg"

shift # fnord

shift # $arg

;;

esac

done

test -z "$dashmflag" && dashmflag=-M

# Require at least two characters before searching for `:'

# in the target name. This is to cope with DOS-style filenames:

# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.

"$@" $dashmflag |

sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"

rm -f "$depfile"

cat < "$tmpdepfile" > "$depfile"

tr ' ' '

' < "$tmpdepfile" | \

## Some versions of the HPUX 10.20 sed can't process this invocation

## correctly. Breaking it into two sed invocations is a workaround.

sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"

rm -f "$tmpdepfile"

;;

dashXmstdout)

# This case only exists to satisfy depend.m4. It is never actually

# run, as this mode is specially recognized in the preamble.

exit 1

;;

makedepend)

"$@" || exit $?

# Remove any Libtool call

if test "$libtool" = yes; then

while test $1 != '--mode=compile'; do

shift

done

shift

fi

# X makedepend

shift

cleared=no

for arg in "$@"; do

case $cleared in

no)

set ""; shift

cleared=yes ;;

esac

case "$arg" in

-D*|-I*)

set fnord "$@" "$arg"; shift ;;

# Strip any option that makedepend may not understand. Remove

# the object too, otherwise makedepend will parse it as a source file.

-*|$object)

;;

*)

set fnord "$@" "$arg"; shift ;;

esac

done

obj_suffix="`echo $object | sed 's/^.*\././'`"

touch "$tmpdepfile"

${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"

rm -f "$depfile"

cat < "$tmpdepfile" > "$depfile"

sed '1,2d' "$tmpdepfile" | tr ' ' '

' | \

## Some versions of the HPUX 10.20 sed can't process this invocation

## correctly. Breaking it into two sed invocations is a workaround.

sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"

rm -f "$tmpdepfile" "$tmpdepfile".bak

;;

cpp)

# Important note: in order to support this mode, a compiler *must*

# always write the preprocessed file to stdout.

"$@" || exit $?

# Remove the call to Libtool.

if test "$libtool" = yes; then

while test $1 != '--mode=compile'; do

shift

done

shift

fi

# Remove `-o $object'.

IFS=" "

for arg

do

case $arg in

-o)

shift

;;

$object)

shift

;;

*)

set fnord "$@" "$arg"

shift # fnord

shift # $arg

;;

esac

done

"$@" -E |

sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |

sed '$ s: \\$::' > "$tmpdepfile"

rm -f "$depfile"

echo "$object : \\" > "$depfile"

cat < "$tmpdepfile" >> "$depfile"

sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"

rm -f "$tmpdepfile"

;;

msvisualcpp)

# Important note: in order to support this mode, a compiler *must*

# always write the preprocessed file to stdout, regardless of -o,

# because we must use -o when running libtool.

"$@" || exit $?

IFS=" "

for arg

do

case "$arg" in

"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")

set fnord "$@"

shift

shift

;;

*)

set fnord "$@" "$arg"

shift

shift

;;

esac

done

"$@" -E |

sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"

rm -f "$depfile"

echo "$object : \\" > "$depfile"

. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1 \\:p' >> "$depfile"

echo "" >> "$depfile"

. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"

rm -f "$tmpdepfile"

;;

none)

exec "$@"

;;

*)

echo "Unknown depmode $depmode" 1>&2

exit 1

;;

esac

exit 0

# Local Variables:

# mode: shell-script

# sh-indentation: 2

# eval: (add-hook 'write-file-hooks 'time-stamp)

# time-stamp-start: "scriptversion="

# time-stamp-format: "%:y-%02m-%02d.%02H"

# time-stamp-end: "$"

# End:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值