summaryrefslogtreecommitdiff
path: root/make/calcdep.pl
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-01-17 03:17:25 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-01-17 03:17:25 +0000
commit88b9ecb6b34d268f0761e6e961408871b6e91376 (patch)
tree48b0c305e29a251abee091e839dc402218579926 /make/calcdep.pl
parent5de7651ebeee56e6deca4d5e357b22869719bb8f (diff)
PURE_STATIC improvements: Allow modules to be reloaded, generate linker arguments
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12276 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'make/calcdep.pl')
-rwxr-xr-xmake/calcdep.pl14
1 files changed, 11 insertions, 3 deletions
diff --git a/make/calcdep.pl b/make/calcdep.pl
index 1a1963b31..55e0630fc 100755
--- a/make/calcdep.pl
+++ b/make/calcdep.pl
@@ -120,20 +120,28 @@ bad-target:
all: inspircd
END
- my @deps;
+ my(@deps, @srcs);
for my $file (<*.cpp>, <modes/*.cpp>, <socketengines/*.cpp>, <commands/*.cpp>,
<modules/*.cpp>, <modules/m_*/*.cpp>, "threadengines/threadengine_pthread.cpp") {
my $out = find_output $file, 1;
+ if ($out =~ m#obj/([^/]+)/[^/]+.o$#) {
+ mkdir "$ENV{BUILDPATH}/obj/$1";
+ }
dep_cpp $file, $out;
next if $file =~ m#^socketengines/# && $file ne "socketengines/$ENV{SOCKETENGINE}.cpp";
push @deps, $out;
+ push @srcs, $file;
}
my $core_mk = join ' ', @deps;
+ my $core_src = join ' ', @srcs;
print MAKE <<END;
-bin/inspircd: $core_mk
- \$(RUNCC) -o \$\@ \$(CORELDFLAGS) \$(LDLIBS) \$^ \$>
+obj/ld-extra.cmd: $core_src
+ \@\$(SOURCEPATH)/make/unit-cc.pl -f\$(VERBOSE) \$\@ \$^ \$>
+
+bin/inspircd: obj/ld-extra.cmd $core_mk
+ \@\$(SOURCEPATH)/make/unit-cc.pl -l\$(VERBOSE) \$\@ \$^ \$>
inspircd: bin/inspircd