X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/49072633d024ef21cc75257b7002e301ce2bc227..40814391c7b017da05d4daa2895093e5099801c7:/depmod.pl diff --git a/depmod.pl b/depmod.pl index 119b74c5..9c53672b 100755 --- a/depmod.pl +++ b/depmod.pl @@ -2,6 +2,8 @@ use strict; +my $verbose=0; + my %definers; my %reqsyms; my %reqmods; @@ -14,6 +16,12 @@ my @realarglist; open DEPENDS,">modules.dep"; open GRAPH,">modgraph.dot"; +if (@ARGV) { + if ($ARGV[0] eq "--verbose" or $ARGV[0] eq "-v") { + $verbose=1; + } +} + for (@arglist) { my $modname=$_; open NM,"nm $modname |"; @@ -38,7 +46,7 @@ for (@arglist) { push @{$reqsyms{$modname}}, $sym; } else { if (defined $definers{$sym}) { - print "Error: Multiple modules are providing $sym, at least $modname and $definers{$sym}\n"; + print "WARNING: Multiple modules export $sym, at least $modname and $definers{$sym}\n"; } else { $definers{$sym}=$modname; } @@ -60,6 +68,9 @@ for (@realarglist) { if (defined $provider) { ${reqmods{$modname}}{$provider}=1; + if ($verbose) { + print "Module $modname importing $_ from $provider\n"; + } } } } @@ -85,6 +96,9 @@ sub printdep { print DEPENDS "$modname"; for (keys %{$reqmods{$modname}}) { + if (defined ${$reqmods{$_}}{$modname}) { + print "ERROR: circular dependency between $modname and $_\n"; + } print DEPENDS " $_"; print GRAPH "\t\"$modname\" -> \"$_\";\n"; }