#!/usr/bin/env perl

use strict;
use warnings;

my @targets;
my @keys;
my %prereqs;

$ENV{LANGUAGE} = "en_US";
for (`make --debug=b -n`) {
	next if not /Prerequisite [`']([^']+)' is newer than target [`']([^']+)'/;

	# Don't consider prerequisites that are targets.
	unless ($ARGV[0] and $ARGV[0] eq '-a') {
		push @targets, $2 if not grep { $_ eq $2 } @targets;
		next if grep { $_ eq $1 } @targets;
	}

	push @keys, $1 if not grep { $_ eq $1 } @keys;
	push @{$prereqs{$1}}, $2 if not grep { $_ eq $2 } @{$prereqs{$1}};
}

if (@keys) {
	print "---\n";
	print "$_ -> @{$prereqs{$_}}\n" for @keys;
	print "---\n";
}