#!/bin/sh # # makedepend which uses 'gcc -M' # # $XFree86: xc/config/util/gccmdep.cpp,v 3.10tsi Exp $ # # Based on mdepend.cpp and code supplied by Hongjiu Lu # TMP=mdep$$.tmp CC=gcc RM="rm -f" LN=ln MV=mv ${RM} ${TMP} trap "${RM} ${TMP}*; exit 1" 1 2 15 trap "${RM} ${TMP}*; exit 0" 1 2 13 files= makefile= endmarker= magic_string='# DO NOT DELETE' append=n args= while [ $# != 0 ]; do if [ "$endmarker"x != x -a "$endmarker" = "$1" ]; then endmarker= else case "$1" in -D*|-I*|-U*) args="$args '$1'" ;; -g*|-O*) ;; *) if [ "$endmarker"x = x ]; then case $1 in # ignore these flags -w|-o|-cc) shift ;; -v) ;; -s) magic_string="$2" shift ;; -f*) if [ "$1" = "-f-" ]; then makefile="-" elif [ "$1" = "-f" ]; then makefile="$2" shift else echo "$1" | sed 's/^\-f//' >${TMP}arg makefile="`cat ${TMP}arg`" rm -f ${TMP}arg fi ;; --*) endmarker=`echo $1 | sed 's/^\-\-//'` if [ "$endmarker"x = x ]; then endmarker="--" fi ;; -a) append=y ;; -*) echo "Unknown option '$1' ignored" 1>&2 ;; *) files="$files $1" ;; esac fi ;; esac fi shift done if [ x"$files" = x ]; then # Nothing to do exit 0 fi case "$makefile" in '') if [ -r makefile ]; then makefile=makefile elif [ -r Makefile ]; then makefile=Makefile else echo 'no makefile or Makefile found' 1>&2 exit 1 fi ;; esac if [ X"$makefile" != X- ]; then if [ x"$append" = xn ]; then sed -e "/^$magic_string/,\$d" < $makefile > $TMP echo "$magic_string" >> $TMP else cp $makefile $TMP fi fi CMD="$CC -M $args $files" if [ X"$makefile" != X- ]; then CMD="$CMD >> $TMP" fi eval $CMD if [ X"$makefile" != X- ]; then $RM ${makefile}.bak $MV $makefile ${makefile}.bak $MV $TMP $makefile fi $RM ${TMP}* exit 0