eval 'exec perl -S $0 ${1+"$@"}'
if 0;
#! /usr/local/bin/perl
#	@(#)makedeps 00-05-12
#	(C) Copyright 1995-2000 by Personal Media Corporation
#
#	src ΰ¸ե makefile η deps ˽񤭽Ф
#	src  *.o *.c *.S Τ줫ǤʤФʤʤ
#
#	ץ
#	-r	Ť¸طǡ¸طʤ
#
$usage = 'usage: makedeps [-r] [cpp_options] deps src...';

# ե
$tmp = "/tmp/makedeps.$$";

# ѥ
$cc = "/usr/local/bin/gcc";
$cc = "$ENV{'GNUs'}/bin/gcc"	if $ENV{'GNUs'} ne "";
$cc = "$ENV{'CC'}"		if $ENV{'CC'} ne "";

$mopt = "-M";

# ץ󥹥åΥǥե
$sw_r = 0;

# ޥɥ饤β
$cont = 0;
foreach ( @ARGV ) {

	if ( $cont ) {
		$cppopt[@cppopt] = $_;
		$cont = 0;
	} else {
		switch: {
		  if ( /^-r/ )	{ $sw_r = 1;				last; }
		  if ( /^-b/ )	{ $cppopt[@cppopt] = $_; $cont = 1;	last; }
		  if ( /^-.*/ )	{ $cppopt[@cppopt] = $_;		last; }
		  $src[@src] = $_;
		}
	}
}

if ( @src < 2 ) {
	print STDERR "$usage\n";
	exit(1);
}

$deps = $src[0];
shift @src;

# åȥե̾
for ( $i = 0; $i <= $#src; $i++ ) {

	( $basename, $sfx ) = ( $src[$i] =~ m!([^/]+)\.([^.]+)$! );

	if ( $sfx !~ /(o|c|S)/ ) {
		print STDERR "makedeps: unknown file type\n";
		exit(1);
	}

	$targets[$i] = "$basename.o";
}

# Ť¸ط $tmp ˽񤭽Ф
open(TMP, ">$tmp");
open(DEPS, $deps);
$match = 0;
$cont = 0;
while ( <DEPS> ) {
	chop;

	if ( !$cont ) {
		$match = 0;
		foreach $t ( @targets ) {
			last if $match = ( /^$t *:/ );
		}
	}
	$cont = ( /\\$/ );

	if ( !$match ) {
		print TMP "$_\n";
	}
}
close(DEPS);
close(TMP);

if ( !$sw_r ) {
	# ¸ط $tmp ɲä
	system "$cc @cppopt $mopt @src >> $tmp";
	if ( $? != 0 ) {
		print STDERR "makedeps: $cc, execution error\n";
		exit(1);
	}
}

# Ť¸ե򡢿¸ե֤
system "cp $tmp $deps; rm -f $tmp";

exit(0);
