12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#!/bin/sh -
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# Copyright (c) 1994, 1996
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#	The Regents of the University of California.  All rights reserved.
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# Redistribution and use in source and binary forms are permitted
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# provided that this notice is preserved and that due credit is given
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# to the University of California at Berkeley. The name of the University
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# may not be used to endorse or promote products derived from this
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# software without specific prior written permission. This software
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# is provided ``as is'' without express or implied warranty.
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#	@(#)mkdep.sh	5.11 (Berkeley) 5/5/88
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectPATH=/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/bin
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectexport PATH
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectMAKE=Makefile			# default makefile name is "Makefile"
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectCC=cc				# default C compiler is "cc"
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectwhile :
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	do case "$1" in
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		# -c allows you to specify the C compiler
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		-c)
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			CC=$2
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			shift; shift ;;
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		# -f allows you to select a makefile name
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		-f)
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			MAKE=$2
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			shift; shift ;;
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		# the -p flag produces "program: program.c" style dependencies
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		# so .o's don't get produced
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		-p)
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			SED='s;\.o;;'
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			shift ;;
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		*)
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			break ;;
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	esac
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectdone
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectif [ $# = 0 ] ; then
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	echo 'usage: mkdep [-p] [-c cc] [-f makefile] [flags] file ...'
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	exit 1
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectfi
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectif [ ! -w $MAKE ]; then
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	echo "mkdep: no writeable file \"$MAKE\""
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	exit 1
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectfi
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectTMP=/tmp/mkdep$$
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttrap 'rm -f $TMP ; exit 1' 1 2 3 13 15
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectcp $MAKE ${MAKE}.bak
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectsed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectcat << _EOF_ >> $TMP
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# DO NOT DELETE THIS LINE -- mkdep uses it.
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project_EOF_
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# If your compiler doesn't have -M, add it.  If you can't, the next two
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# lines will try and replace the "cc -M".  The real problem is that this
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# hack can't deal with anything that requires a search path, and doesn't
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# even try for anything using bracket (<>) syntax.
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# egrep '^#include[ 	]*".*"' /dev/null $* |
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# XXX this doesn't work with things like "-DDECLWAITSTATUS=union\ wait"
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project$CC -M $* |
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectsed "
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	s; \./; ;g
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	$SED" |
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectawk '{
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if ($1 != prev) {
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (rec != "")
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			print rec;
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		rec = $0;
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		prev = $1;
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	else {
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (length(rec $2) > 78) {
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			print rec;
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			rec = $0;
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		else
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			rec = rec " " $2
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectEND {
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	print rec
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}' >> $TMP
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectcat << _EOF_ >> $TMP
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project_EOF_
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project# copy to preserve permissions
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectcp $TMP $MAKE
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectrm -f ${MAKE}.bak $TMP
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectexit 0
110