2 # Samba4 Dependency Graph Generator
3 # (C) 2004-2005 Jelmer Vernooij <jelmer@samba.org>
4 # Published under the GNU GPL
8 use smb_build
::config_mk
;
10 my $subsys = shift @ARGV;
14 my ($haystack,$needle) = @_;
15 foreach (@
$haystack) {
16 return 1 if ($_ eq $needle);
23 my ($depend,$only,$name) = @_;
24 my $res = "digraph $name {\n";
26 foreach my $part (values %{$depend}) {
27 next if (defined($only) and not contains
($only,$part->{NAME
}));
28 foreach my $elem (@
{$part->{PUBLIC_DEPENDENCIES
}}) {
29 $res .= "\t\"$part->{NAME}\" -> \"$elem\" [style=filled]; /* public */\n";
31 foreach my $elem (@
{$part->{PRIVATE_DEPENDENCIES
}}) {
32 $res .= "\t\"$part->{NAME}\" -> \"$elem\" [style=dotted]; /* private */\n";
40 smb_build
::config_mk
::run_config_mk
($INPUT, '.', '.', "main.mk");
45 if (defined($subsys)) {
46 my $DEPEND = smb_build
::input
::check
($INPUT, \
%config::enabled
,
47 "MERGED_OBJ", "SHARED_LIBRARY", "SHARED_LIBRARY");
49 die("No such subsystem $subsys") unless (defined($DEPEND->{$subsys}));
51 $only = $DEPEND->{$subsys}->{UNIQUE_DEPENDENCIES_ALL
};
52 push (@
$only, "$subsys");
57 my $fname = "$name-deps.dot";
58 print __FILE__
.": creating $fname\n";
59 open DOTTY
, ">$fname";
60 print DOTTY generate
($INPUT, $only, $name);