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