xref: /freebsd/contrib/libpcap/mkdep (revision 8cf6c252e716c4bba3d2e36b37e8df1762a07fc8)
18cf6c252SPaul Traina#!/bin/sh -
28cf6c252SPaul Traina#
38cf6c252SPaul Traina# Copyright (c) 1994, 1996
48cf6c252SPaul Traina#	The Regents of the University of California.  All rights reserved.
58cf6c252SPaul Traina#
68cf6c252SPaul Traina# Redistribution and use in source and binary forms are permitted
78cf6c252SPaul Traina# provided that this notice is preserved and that due credit is given
88cf6c252SPaul Traina# to the University of California at Berkeley. The name of the University
98cf6c252SPaul Traina# may not be used to endorse or promote products derived from this
108cf6c252SPaul Traina# software without specific prior written permission. This software
118cf6c252SPaul Traina# is provided ``as is'' without express or implied warranty.
128cf6c252SPaul Traina#
138cf6c252SPaul Traina#	@(#)mkdep.sh	5.11 (Berkeley) 5/5/88
148cf6c252SPaul Traina#
158cf6c252SPaul Traina
168cf6c252SPaul TrainaPATH=/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/bin
178cf6c252SPaul Trainaexport PATH
188cf6c252SPaul Traina
198cf6c252SPaul TrainaMAKE=Makefile			# default makefile name is "Makefile"
208cf6c252SPaul TrainaCC=cc				# default C compiler is "cc"
218cf6c252SPaul Traina
228cf6c252SPaul Trainawhile :
238cf6c252SPaul Traina	do case "$1" in
248cf6c252SPaul Traina		# -c allows you to specify the C compiler
258cf6c252SPaul Traina		-c)
268cf6c252SPaul Traina			CC=$2
278cf6c252SPaul Traina			shift; shift ;;
288cf6c252SPaul Traina
298cf6c252SPaul Traina		# -f allows you to select a makefile name
308cf6c252SPaul Traina		-f)
318cf6c252SPaul Traina			MAKE=$2
328cf6c252SPaul Traina			shift; shift ;;
338cf6c252SPaul Traina
348cf6c252SPaul Traina		# the -p flag produces "program: program.c" style dependencies
358cf6c252SPaul Traina		# so .o's don't get produced
368cf6c252SPaul Traina		-p)
378cf6c252SPaul Traina			SED='s;\.o;;'
388cf6c252SPaul Traina			shift ;;
398cf6c252SPaul Traina		*)
408cf6c252SPaul Traina			break ;;
418cf6c252SPaul Traina	esac
428cf6c252SPaul Trainadone
438cf6c252SPaul Traina
448cf6c252SPaul Trainaif [ $# = 0 ] ; then
458cf6c252SPaul Traina	echo 'usage: mkdep [-p] [-c cc] [-f makefile] [flags] file ...'
468cf6c252SPaul Traina	exit 1
478cf6c252SPaul Trainafi
488cf6c252SPaul Traina
498cf6c252SPaul Trainaif [ ! -w $MAKE ]; then
508cf6c252SPaul Traina	echo "mkdep: no writeable file \"$MAKE\""
518cf6c252SPaul Traina	exit 1
528cf6c252SPaul Trainafi
538cf6c252SPaul Traina
548cf6c252SPaul TrainaTMP=/tmp/mkdep$$
558cf6c252SPaul Traina
568cf6c252SPaul Trainatrap 'rm -f $TMP ; exit 1' 1 2 3 13 15
578cf6c252SPaul Traina
588cf6c252SPaul Trainacp $MAKE ${MAKE}.bak
598cf6c252SPaul Traina
608cf6c252SPaul Trainased -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
618cf6c252SPaul Traina
628cf6c252SPaul Trainacat << _EOF_ >> $TMP
638cf6c252SPaul Traina# DO NOT DELETE THIS LINE -- mkdep uses it.
648cf6c252SPaul Traina# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
658cf6c252SPaul Traina
668cf6c252SPaul Traina_EOF_
678cf6c252SPaul Traina
688cf6c252SPaul Traina# If your compiler doesn't have -M, add it.  If you can't, the next two
698cf6c252SPaul Traina# lines will try and replace the "cc -M".  The real problem is that this
708cf6c252SPaul Traina# hack can't deal with anything that requires a search path, and doesn't
718cf6c252SPaul Traina# even try for anything using bracket (<>) syntax.
728cf6c252SPaul Traina#
738cf6c252SPaul Traina# egrep '^#include[ 	]*".*"' /dev/null $* |
748cf6c252SPaul Traina# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
758cf6c252SPaul Traina
768cf6c252SPaul Traina# XXX this doesn't work with things like "-DDECLWAITSTATUS=union\ wait"
778cf6c252SPaul Traina$CC -M $* |
788cf6c252SPaul Trainased "
798cf6c252SPaul Traina	s; \./; ;g
808cf6c252SPaul Traina	$SED" |
818cf6c252SPaul Trainaawk '{
828cf6c252SPaul Traina	if ($1 != prev) {
838cf6c252SPaul Traina		if (rec != "")
848cf6c252SPaul Traina			print rec;
858cf6c252SPaul Traina		rec = $0;
868cf6c252SPaul Traina		prev = $1;
878cf6c252SPaul Traina	}
888cf6c252SPaul Traina	else {
898cf6c252SPaul Traina		if (length(rec $2) > 78) {
908cf6c252SPaul Traina			print rec;
918cf6c252SPaul Traina			rec = $0;
928cf6c252SPaul Traina		}
938cf6c252SPaul Traina		else
948cf6c252SPaul Traina			rec = rec " " $2
958cf6c252SPaul Traina	}
968cf6c252SPaul Traina}
978cf6c252SPaul TrainaEND {
988cf6c252SPaul Traina	print rec
998cf6c252SPaul Traina}' >> $TMP
1008cf6c252SPaul Traina
1018cf6c252SPaul Trainacat << _EOF_ >> $TMP
1028cf6c252SPaul Traina
1038cf6c252SPaul Traina# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
1048cf6c252SPaul Traina_EOF_
1058cf6c252SPaul Traina
1068cf6c252SPaul Traina# copy to preserve permissions
1078cf6c252SPaul Trainacp $TMP $MAKE
1088cf6c252SPaul Trainarm -f ${MAKE}.bak $TMP
1098cf6c252SPaul Trainaexit 0
110