r23631: when linking shared libraries we need to make shure the linker doesn't
authorStefan Metzmacher <metze@samba.org>
Wed, 27 Jun 2007 15:37:03 +0000 (15:37 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:53:29 +0000 (14:53 -0500)
skip "unneeded" object files from within .a files.

If the build-farm doesn't like -Wl,--whole-archive, I'll add some more
configure logic fix it tomorrow.

Kai: with this your libnss_winbind.so patch works for me

metze
(This used to be commit d2609580846647b3c0d4e88e106a9763cd7074ef)

source4/build/smb_build/makefile.pm

index 1102e85fef1966e4e12d312027f0888d543c9ee8..4d119b1eaafbeedb493375e73e1ed0569c3a97ca 100644 (file)
@@ -247,16 +247,28 @@ sub array2oneperline($)
        return $output;
 }
 
-sub _prepare_list($$$)
+sub _prepare_list_ex($$$$$)
 {
-       my ($self,$ctx,$var) = @_;
+       my ($self,$ctx,$var,$pre,$post) = @_;
+       my @tmparr = ();
+
+       push(@tmparr, $pre) if defined($pre);
+       push(@tmparr, @{$ctx->{$var}}) if defined($ctx->{$var});
+       push(@tmparr, $post) if defined($post);
 
-       my $tmplist = array2oneperline($ctx->{$var});
+       my $tmplist = array2oneperline(\@tmparr);
        return if ($tmplist eq "");
 
        $self->output("$ctx->{TYPE}\_$ctx->{NAME}_$var =$tmplist\n");
 }
 
+sub _prepare_list($$$)
+{
+       my ($self,$ctx,$var) = @_;
+
+       $self->_prepare_list_ex($ctx, $var, undef, undef);
+}
+
 sub Integrated($$)
 {
        my ($self,$ctx) = @_;
@@ -302,7 +314,7 @@ sub SharedLibrary($$)
                $self->_prepare_list($ctx, "FULL_OBJ_LIST");
        }
        $self->_prepare_list($ctx, "DEPEND_LIST");
-       $self->_prepare_list($ctx, "LINK_FLAGS");
+       $self->_prepare_list_ex($ctx, "LINK_FLAGS", "-Wl,--whole-archive", "-Wl,--no-whole-archive");
 
        push(@{$self->{all_objs}}, "\$($ctx->{TYPE}_$ctx->{NAME}_FULL_OBJ_LIST)");