• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/samba-3.5.8/source4/build/smb_build/
1#!/usr/bin/perl
2# Samba4 Dependency Graph Generator
3# (C) 2004-2005 Jelmer Vernooij <jelmer@samba.org>
4# Published under the GNU GPL
5
6use strict;
7use lib 'build';
8use smb_build::config_mk;
9
10my $subsys = shift @ARGV;
11
12sub contains($$)
13{
14	my ($haystack,$needle) = @_;
15	foreach (@$haystack) {
16		return 1 if ($_ eq $needle);
17	}
18	return 0;
19}
20
21sub generate($$$)
22{
23	my ($depend,$only,$name) = @_;
24	my $res = "digraph $name {\n";
25
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";
30		}
31		foreach my $elem (@{$part->{PRIVATE_DEPENDENCIES}}) {
32			$res .= "\t\"$part->{NAME}\" -> \"$elem\" [style=dotted]; /* private */\n";
33		}
34	}
35
36	return $res . "}\n";
37}
38
39my $INPUT = {};
40smb_build::config_mk::run_config_mk($INPUT, '.', '.', "main.mk");
41
42my $name = "samba4";
43
44my $only;
45if (defined($subsys)) {
46	my $DEPEND = smb_build::input::check($INPUT, \%config::enabled,
47		"MERGED_OBJ", "SHARED_LIBRARY", "SHARED_LIBRARY");
48
49	die("No such subsystem $subsys") unless (defined($DEPEND->{$subsys}));
50
51	$only = $DEPEND->{$subsys}->{UNIQUE_DEPENDENCIES_ALL};
52	push (@$only, "$subsys");
53
54	$name = $subsys;
55}
56
57my $fname = "$name-deps.dot";
58print __FILE__.": creating $fname\n";
59open DOTTY, ">$fname";
60print DOTTY generate($INPUT, $only, $name);
61close DOTTY;
62
631;
64