diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-11-11 00:17:07 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-11-11 00:17:07 +0000 |
commit | 19487dbebc520450e457472b97d9e7bcd5160c00 (patch) | |
tree | 5ba36439139db77ff11c549228a3dbf69727e9cc /make/calcdep.pl | |
parent | 316167b91713739d784cc4c640275ebe2a9f054a (diff) |
Allow static build of inspircd without module support
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12083 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'make/calcdep.pl')
-rwxr-xr-x | make/calcdep.pl | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/make/calcdep.pl b/make/calcdep.pl index 81a7759d3..587bd64de 100755 --- a/make/calcdep.pl +++ b/make/calcdep.pl @@ -3,7 +3,7 @@ use strict; use warnings; use POSIX qw(getcwd); -sub find_output($); +sub find_output; sub gendep($); sub dep_cpp($$); sub dep_dir($); @@ -28,6 +28,16 @@ sub run() { open MAKE, '>real.mk' or die "Could not write real.mk: $!"; chdir "$ENV{SOURCEPATH}/src"; + if ($ENV{PURE_STATIC}) { + run_static(); + } else { + run_dynamic(); + } + close MAKE; +} + +sub run_dynamic() { + my $build = $ENV{BUILDPATH}; print MAKE <<END; # DO NOT EDIT THIS FILE # It is autogenerated by make/calcdep.pl, and will be overwritten @@ -95,11 +105,48 @@ modules: $mods END } -sub find_output($) { - my $file = shift; +sub run_static() { + print MAKE <<END; +# DO NOT EDIT THIS FILE +# It is autogenerated by make/calcdep.pl, and will be overwritten +# every time you rerun make in the main directory +VPATH = \$(SOURCEPATH)/src + +bad-target: + \@echo "This Makefile must be run by a sub-make from the source" + \@echo "in order to set the correct environment variables" + \@exit 1 + +all: inspircd + +END + my @deps; + 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; + dep_cpp $file, $out; + next if $file =~ m#^socketengines/# && $file ne "socketengines/$ENV{SOCKETENGINE}.cpp"; + push @deps, $out; + } + + my $core_mk = join ' ', @deps; + print MAKE <<END; + +bin/inspircd: $core_mk + \$(RUNCC) -o \$\@ \$(CORELDFLAGS) \$(LDLIBS) \$^ \$> + +inspircd: bin/inspircd + +.PHONY: all bad-target inspircd + +END +} + +sub find_output { + my($file, $static) = @_; my($path,$base) = $file =~ m#^((?:.*/)?)([^/]+)\.cpp# or die "Bad file $file"; if ($path eq 'modules/' || $path eq 'commands/') { - return "modules/$base.so"; + return $static ? "obj/$base.o" : "modules/$base.so"; } elsif ($path eq '' || $path eq 'modes/' || $path =~ /^[a-z]+engines\/$/) { return "obj/$base.o"; } elsif ($path =~ m#modules/(m_.*)/#) { |