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/config_mk.pm3
-rw-r--r--source4/build/smb_build/input.pm3
-rw-r--r--source4/build/smb_build/makefile.pm41
3 files changed, 46 insertions, 1 deletions
diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm
index 91195974a7..2adc219605 100644
--- a/source4/build/smb_build/config_mk.pm
+++ b/source4/build/smb_build/config_mk.pm
@@ -76,7 +76,8 @@ my $section_types = {
"NOPROTO" => "bool",
"MANPAGE" => "string",
- "INSTALLDIR" => "string",
+
+ "PUBLIC_HEADERS" => "list"
}
};
diff --git a/source4/build/smb_build/input.pm b/source4/build/smb_build/input.pm
index f656e78f88..e685f41157 100644
--- a/source4/build/smb_build/input.pm
+++ b/source4/build/smb_build/input.pm
@@ -83,6 +83,7 @@ sub check_module($$)
if ($mod->{CHOSEN_BUILD} eq "SHARED") {
$mod->{ENABLE} = "YES";
$mod->{OUTPUT_TYPE} = "SHARED_LIBRARY";
+ $mod->{INSTALLDIR} = "LIBDIR/$mod->{SUBSYSTEM}";
push (@{$mod->{REQUIRED_SUBSYSTEMS}}, $mod->{SUBSYSTEM});
printf("Module: %s...shared\n",$mod->{NAME});
} elsif ($mod->{CHOSEN_BUILD} eq "STATIC") {
@@ -107,6 +108,8 @@ sub check_library($$)
}
$lib->{OUTPUT_TYPE} = $library_output_type;
+
+ $lib->{INSTALLDIR} = "LIBDIR";
}
sub check_binary($$)
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm
index 8db8a3c2cf..f1a6262586 100644
--- a/source4/build/smb_build/makefile.pm
+++ b/source4/build/smb_build/makefile.pm
@@ -47,6 +47,8 @@ sub new($$$$)
$self->_prepare_dummy_MAKEDIR($CTX);
$self->_prepare_manpages($CTX);
$self->_prepare_binaries($CTX);
+ $self->_prepare_libraries($CTX);
+ $self->_prepare_headers($CTX);
$self->_prepare_target_settings($CTX);
$self->_prepare_rule_lists($CTX);
$self->_prepare_clean_rules();
@@ -91,6 +93,7 @@ BINDIR = $self->{config}->{bindir}
SBINDIR = $self->{config}->{sbindir}
datadir = $self->{config}->{datadir}
LIBDIR = $self->{config}->{libdir}
+INCLUDEDIR = $self->{config}->{includedir}
CONFIGDIR = $self->{config}->{configdir}
localstatedir = $self->{config}->{localstatedir}
SWATDIR = $self->{config}->{swatdir}
@@ -209,6 +212,44 @@ Makefile: config.status $deps
");
}
+sub _prepare_headers($$)
+{
+ my ($self, $ctx) = @_;
+
+ my @headers = ();
+
+ foreach (values %$ctx) {
+ next unless defined $_->{PUBLIC_HEADERS};
+
+ foreach my $h (@{$_->{PUBLIC_HEADERS}}) {
+ push (@headers, "$_->{BASEDIR}/$h");
+ }
+ }
+
+ $self->output("PUBLIC_HEADERS = " . array2oneperline(\@headers) . "\n");
+}
+
+sub _prepare_libraries($$)
+{
+ my ($self, $ctx) = @_;
+
+ my @shared_list = ();
+ my @static_list = ();
+
+ foreach (values %$ctx) {
+ next unless defined $_->{OUTPUT_TYPE};
+ next unless defined($_->{INSTALLDIR});
+ next unless ($_->{INSTALLDIR} eq "LIBDIR");
+
+ push(@shared_list, $_->{OUTPUT}) if ($_->{OUTPUT_TYPE} eq "SHARED_LIBRARY");
+ push(@static_list, $_->{OUTPUT}) if ($_->{OUTPUT_TYPE} eq "STATIC_LIBRARY");
+ }
+
+ $self->output("STATIC_LIBS = " . array2oneperline(\@static_list) . "\n");
+ $self->output("SHARED_LIBS = " . array2oneperline(\@shared_list) . "\n");
+
+}
+
sub _prepare_binaries($$)
{
my ($self, $ctx) = @_;