]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - make/calcdep.pl
Fix linking errors on BSD
[user/henk/code/inspircd.git] / make / calcdep.pl
index 05199569c029177f9f74cdc00c207f01cafdec97..ad25875cfe782474c5dc37f35ff9c6915bfe84f2 100755 (executable)
@@ -42,18 +42,29 @@ END
        }
        
        my @modlist;
-       for my $file (<commands/*.cpp>, <modules/*.cpp>) {
+       for my $file (<commands/*.cpp>) {
                my $out = find_output $file;
                dep_cpp $file, $out;
                push @modlist, $out;
        }
 
        opendir my $moddir, 'modules';
-       for my $dir (readdir $moddir) {
-               next unless $dir =~ /^m_/ && -d "modules/$dir";
-               if (dep_dir "modules/$dir") {
-                       mkdir "$build/obj/$dir";
-                       push @modlist, "modules/$dir.so";
+       for my $file (readdir $moddir) {
+               next if $file =~ /^\./;
+               if (-e "modules/extra/$file" && !-l "modules/$file") {
+                       # Incorrect symlink?
+                       print "Replacing symlink for $file found in modules/extra\n";
+                       rename "modules/$file", "modules/$file~";
+                       symlink "extra/$file", "modules/$file";
+               }
+               if ($file =~ /^m_/ && -d "modules/$file" && dep_dir "modules/$file") {
+                       mkdir "$build/obj/$file";
+                       push @modlist, "modules/$file.so";
+               }
+               if ($file =~ /^m_.*\.cpp$/) {
+                       my $out = find_output "modules/$file";
+                       dep_cpp "modules/$file", $out;
+                       push @modlist, $out;
                }
        }
        
@@ -62,7 +73,7 @@ END
        print MAKE <<END;
 
 bin/inspircd: $core_mk
-       \$(RUNCC) -o \$\@ \$(CORELDFLAGS) \$(LDLIBS) \$^
+       cd \$(BUILDPATH); \$(RUNCC) -o \$\@ \$(CORELDFLAGS) \$(LDLIBS) \$^ \$>
 
 inspircd: bin/inspircd
 modules: $mods
@@ -127,7 +138,7 @@ sub dep_cpp($$) {
        gendep $file;
 
        print MAKE "$out: $file $f2dep{$file}\n";
-       print MAKE "\t@\$(SOURCEPATH)/make/unit-cc.pl \$(VERBOSE) \$< \$\@\n";
+       print MAKE "\t@\$(SOURCEPATH)/make/unit-cc.pl \$(VERBOSE) \$\@ \$< \$>\n";
 }
 
 sub dep_dir($) {
@@ -143,7 +154,7 @@ sub dep_dir($) {
        closedir DIR;
        if (@ofiles) {
                my $ofiles = join ' ', @ofiles;
-               print MAKE "$dir.so: $ofiles\n\t\$(RUNCC) \$(PICLDFLAGS) -o \$\@ \$^\n";
+               print MAKE "$dir.so: $ofiles\n\tcd \$(BUILDPATH); \$(RUNCC) \$(PICLDFLAGS) -o \$\@ \$^ \$>\n";
                return 1;
        } else {
                return 0;