#!/bin/sh # # makedepend which uses 'gcc -MM' # # tiny change to the gccmakedep in XFree86 # # Based on mdepend.cpp and code supplied by Hongjiu Lu # TMP=/tmp/mdep$$ CC="gcc" RM="rm -f" LN="ln -s" MV="mv -f" 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= asmfiles= # if we have a gcc version after 3.0, we have to muck with the # flags, because post-3.0 gcc breaks (deliberately!) -MM . gcc --version | grep 'GCC. 3\.[1-9]' >/dev/null if [ $? = 0 ] ; then lategcc=Y ; else lategcc="" ; fi while [ $# != 0 ]; do if [ "$endmarker"x != x -a "$endmarker" = "$1" ]; then endmarker= else case "$1" in -D*) args="$args '$1'" ;; -I*) if [ "$lategcc" ] ; then args="$args -isystem '`echo $1 | sed -e s/-I//`'" else args="$args '$1'" fi ;; -g|-o) ;; *) if [ "$endmarker"x = x ]; then case $1 in # ignore these flags -w|-o|-cc) shift ;; -v) ;; -s) magic_string="$2" shift ;; -f-) makefile="-" ;; -f) makefile="$2" shift ;; --*) 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 # need to link .s files to .S for i in $files; do case $i in *.s) dir=`dirname $i` base=`basename $i .s` (cd $dir; $RM ${base}.S; $LN ${base}.s ${base}.S) asmfiles="$asmfiles ${base}.S" ;; esac done CMD="$CC -MM $args `echo $files | sed -e 's,\.s$,\.S,g' -e 's,\.s ,\.S ,g'` | sed -e 's,\.S$,\.s,g' -e 's,\.S ,\.s ,g'" 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 if [ x"$asmfiles" != x ]; then $RM $asmfiles fi $RM ${TMP}* exit 0