summaryrefslogtreecommitdiff
path: root/source4/build/smb_build
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build/smb_build')
-rw-r--r--source4/build/smb_build/TODO4
-rw-r--r--source4/build/smb_build/header.pm2
-rw-r--r--source4/build/smb_build/input.pm7
-rw-r--r--source4/build/smb_build/main.pl12
-rw-r--r--source4/build/smb_build/makefile.pm1
-rw-r--r--source4/build/smb_build/output.pm6
6 files changed, 13 insertions, 19 deletions
diff --git a/source4/build/smb_build/TODO b/source4/build/smb_build/TODO
index c21c3b8082..cc15e9099a 100644
--- a/source4/build/smb_build/TODO
+++ b/source4/build/smb_build/TODO
@@ -1,8 +1,8 @@
+- replace StrnCpy() with strlcpy()
+- Add --export-dynamic for each subsystem that has modules
- let the build system implement some make functions($(patsubst),$(wildcard),...) and use our own implementations where `make' does not support them
- include extra_flags.txt using Makefile construction if
supported by current make
-- change default subsystem/library build type to STATIC_LIBRARY
- - fix order of UNIQUE_DEPENDENCIES
- make --enable-dso the default
- fix module loading for selftest during non-developer builds
- clearer distinction between dcerpc and ndr. seperate interface tables?
diff --git a/source4/build/smb_build/header.pm b/source4/build/smb_build/header.pm
index b2a71969af..7a0e40fda5 100644
--- a/source4/build/smb_build/header.pm
+++ b/source4/build/smb_build/header.pm
@@ -27,7 +27,7 @@ sub _prepare_build_h($)
my @defines = ();
my $output = "";
- foreach my $key (values %{$depend}) {
+ foreach my $key (values %$depend) {
my $DEFINE = ();
next if ($key->{TYPE} ne "LIBRARY" and
$key->{TYPE} ne "MODULE" and
diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm
index 3084381661..8f7e5e4838 100644
--- a/source4/build/smb_build/input.pm
+++ b/source4/build/smb_build/input.pm
@@ -71,8 +71,6 @@ sub check_module($$$)
if ($mod->{OUTPUT_TYPE} eq "SHARED_LIBRARY") {
$mod->{INSTALLDIR} = "MODULESDIR/$mod->{SUBSYSTEM}";
- push (@{$mod->{PRIVATE_DEPENDENCIES}}, $mod->{SUBSYSTEM}) unless
- $INPUT->{$mod->{SUBSYSTEM}}->{TYPE} eq "BINARY";
} else {
push (@{$INPUT->{$mod->{SUBSYSTEM}}{INIT_FUNCTIONS}}, $mod->{INIT_FUNCTION}) if defined($mod->{INIT_FUNCTION});
}
@@ -114,7 +112,6 @@ sub check_binary($$)
$bin->{OUTPUT_TYPE} = "BINARY";
}
-
sub import_integrated($$)
{
my ($lib, $depend) = @_;
@@ -200,6 +197,7 @@ sub check($$$$$)
foreach my $k (keys %$INPUT) {
my $part = $INPUT->{$k};
+ $part->{LINK_FLAGS} = [];
$part->{FULL_OBJ_LIST} = ["\$($part->{TYPE}_$part->{NAME}_OBJ_LIST)"];
check_subsystem($INPUT, $part, $subsys_ot) if ($part->{TYPE} eq "SUBSYSTEM");
@@ -209,6 +207,9 @@ sub check($$$$$)
}
foreach my $part (values %$INPUT) {
+ if (defined($part->{INIT_FUNCTIONS})) {
+ push (@{$part->{LINK_FLAGS}}, "\$(DYNEXP)");
+ }
import_integrated($part, $INPUT);
}
diff --git a/source4/build/smb_build/main.pl b/source4/build/smb_build/main.pl
index 61c9214086..d89be4bebf 100644
--- a/source4/build/smb_build/main.pl
+++ b/source4/build/smb_build/main.pl
@@ -19,14 +19,6 @@ use strict;
my $INPUT = {};
my $mkfile = smb_build::config_mk::run_config_mk($INPUT, $config::config{srcdir}, $config::config{builddir}, "main.mk");
-my $subsystem_output_type;
-
-if (defined($ENV{"SUBSYSTEM_OUTPUT_TYPE"})) {
- $subsystem_output_type = $ENV{SUBSYSTEM_OUTPUT_TYPE};
-} else {
- $subsystem_output_type = "STATIC_LIBRARY";
-}
-
my $library_output_type;
if (defined($ENV{"LIBRARY_OUTPUT_TYPE"})) {
$library_output_type = $ENV{LIBRARY_OUTPUT_TYPE};
@@ -46,9 +38,9 @@ if (defined($ENV{"MODULE_OUTPUT_TYPE"})) {
}
my $DEPEND = smb_build::input::check($INPUT, \%config::enabled,
- $subsystem_output_type, $library_output_type, $module_output_type);
+ "STATIC_LIBRARY", $library_output_type, $module_output_type);
my $OUTPUT = output::create_output($DEPEND, \%config::config);
-$config::config{SUBSYSTEM_OUTPUT_TYPE} = $subsystem_output_type;
+$config::config{SUBSYSTEM_OUTPUT_TYPE} = "STATIC_LIBRARY";
$config::config{LIBRARY_OUTPUT_TYPE} = $library_output_type;
$config::config{MODULE_OUTPUT_TYPE} = $module_output_type;
my $mkenv = new smb_build::makefile(\%config::config, $mkfile);
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm
index 3f0f29f208..bf12de628f 100644
--- a/source4/build/smb_build/makefile.pm
+++ b/source4/build/smb_build/makefile.pm
@@ -144,6 +144,7 @@ STLD_FLAGS=-rc
SHLD=$self->{config}->{CC}
SHLD_FLAGS=$self->{config}->{LDSHFLAGS} $self->{config}->{LDFLAGS} -L\$(builddir)/bin
SHLIBEXT=$self->{config}->{SHLIBEXT}
+DYNEXP=$self->{config}->{DYNEXP}
XSLTPROC=$self->{config}->{XSLTPROC}
diff --git a/source4/build/smb_build/output.pm b/source4/build/smb_build/output.pm
index 0f66ef91fe..85c78cf3b4 100644
--- a/source4/build/smb_build/output.pm
+++ b/source4/build/smb_build/output.pm
@@ -33,7 +33,7 @@ sub generate_shared_library($)
my $lib_name;
$lib->{DEPEND_LIST} = [];
- $lib->{LINK_FLAGS} = ["\$($lib->{TYPE}_$lib->{NAME}\_OBJ_LIST)"];
+ push(@{$lib->{LINK_FLAGS}}, "\$($lib->{TYPE}_$lib->{NAME}\_OBJ_LIST)");
$link_name = lc($lib->{NAME});
$lib_name = $link_name;
@@ -83,7 +83,7 @@ sub generate_static_library($)
$link_name =~ s/^LIB//;
$lib->{LIBRARY_NAME} = "lib".lc($link_name).".a";
- $lib->{LINK_FLAGS} = ["\$($lib->{TYPE}_$lib->{NAME}\_OBJ_LIST)"];
+ push(@{$lib->{LINK_FLAGS}}, "\$($lib->{TYPE}_$lib->{NAME}\_OBJ_LIST)");
$lib->{TARGET} = "bin/$lib->{LIBRARY_NAME}";
$lib->{OUTPUT} = "-l".lc($link_name);
@@ -94,7 +94,7 @@ sub generate_binary($)
my $bin = shift;
$bin->{DEPEND_LIST} = [];
- $bin->{LINK_FLAGS} = ["\$($bin->{TYPE}_$bin->{NAME}\_OBJ_LIST)"];
+ push(@{$bin->{LINK_FLAGS}}, "\$($bin->{TYPE}_$bin->{NAME}\_OBJ_LIST)");
$bin->{RELEASEDIR} = "bin/install";
$bin->{DEBUGDIR} = "bin/";