]> jfr.im git - irc/quakenet/newserv.git/blobdiff - depmod.pl
CHANSERV: remove accidental sendemail from SETEMAIL command.
[irc/quakenet/newserv.git] / depmod.pl
index 119b74c5a38969613d11e1c2debb959583936b75..9c53672b17b0a5e081b4ad8ffdbbf3a45f8024fc 100755 (executable)
--- 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";
     }