diff options
-rw-r--r-- | source4/build/smb_build/makefile.pm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 1102e85fef..4d119b1eaa 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -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)"); |