r13940: use the local vs. install linkerflag trick for shared libs too
authorStefan Metzmacher <metze@samba.org>
Tue, 7 Mar 2006 14:00:57 +0000 (14:00 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:52:29 +0000 (13:52 -0500)
metze

source/build/smb_build/makefile.pm

index 0feabd8ac9d3dcee99ba68b0ee362efa9f4552a9..5abc03d35024125c5100660787bc28c2652cfce3 100644 (file)
@@ -119,11 +119,12 @@ CFLAGS=-I\$(srcdir)/include -I\$(srcdir) -I\$(srcdir)/lib -D_SAMBA_BUILD_ -DHAVE
 PICFLAG=$self->{config}->{PICFLAG}
 HOSTCC=$self->{config}->{HOSTCC}
 
-LD=$self->{config}->{LD} 
-LDFLAGS=$self->{config}->{LDFLAGS} -L\$(builddir)/bin
 LOCAL_LINK_FLAGS=$devld_local
 INSTALL_LINK_FLAGS=$devld_install
 
+LD=$self->{config}->{LD} 
+LDFLAGS=$self->{config}->{LDFLAGS} -L\$(builddir)/bin
+
 STLD=$self->{config}->{AR}
 STLD_FLAGS=-rc -L\$(builddir)/bin
 
@@ -255,6 +256,14 @@ sub SharedLibrary($$)
 {
        my ($self,$ctx) = @_;
 
+       my $installdir;
+       
+       if ($self->{duplicate_build}) {
+               $installdir = "bin/install";
+       } else {
+               $installdir = "bin";
+       }
+
        push (@{$self->{shared_libs}}, "bin/$ctx->{LIBRARY_REALNAME}");
        push (@{$self->{shared_modules}}, "bin/$ctx->{LIBRARY_REALNAME}");
 
@@ -270,19 +279,20 @@ sub SharedLibrary($$)
                push(@{$self->{proto_objs}}, "\$($ctx->{TYPE}_$ctx->{NAME}_OBJ_LIST\)");
        }
 
-       $self->output(<< "__EOD__"
+       if ($self->{duplicate_build}) {
+               $self->output(<< "__EOD__"
 #
 
 bin/$ctx->{LIBRARY_REALNAME}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJ_LIST) 
        \@echo Linking \$\@
-       \@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \\
+       \@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \$(LOCAL_LINK_FLAGS) \\
                \$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) \\
                \$($ctx->{TYPE}_$ctx->{NAME}_LINK_LIST)
 
 __EOD__
 );
-       if (defined($ctx->{LIBRARY_SONAME})) {
-           $self->output(<< "__EOD__"
+               if (defined($ctx->{LIBRARY_SONAME})) {
+                       $self->output(<< "__EOD__"
 # Symlink $ctx->{LIBRARY_SONAME}
 bin/$ctx->{LIBRARY_SONAME}: bin/$ctx->{LIBRARY_REALNAME} 
        \@echo Symlink \$\@
@@ -292,6 +302,33 @@ bin/$ctx->{LIBRARY_NAME}: bin/$ctx->{LIBRARY_SONAME}
        \@echo Symlink \$\@
        \@ln -sf $ctx->{LIBRARY_SONAME} \$\@
 
+__EOD__
+);
+               }
+       }
+
+       $self->output(<< "__EOD__"
+#
+
+$installdir/$ctx->{LIBRARY_REALNAME}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJ_LIST)
+       \@echo Linking \$\@
+       \@\$(SHLD) \$(SHLD_FLAGS) -o \$\@ \$(INSTALL_LINK_FLAGS) \\
+               \$($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) \\
+               \$($ctx->{TYPE}_$ctx->{NAME}_LINK_LIST)
+
+__EOD__
+);
+       if (defined($ctx->{LIBRARY_SONAME})) {
+           $self->output(<< "__EOD__"
+# Symlink $ctx->{LIBRARY_SONAME}
+$installdir/$ctx->{LIBRARY_SONAME}: $installdir/$ctx->{LIBRARY_REALNAME}
+       \@echo Symlink \$\@
+       \@ln -sf $ctx->{LIBRARY_REALNAME} \$\@
+# Symlink $ctx->{LIBRARY_NAME}
+$installdir/$ctx->{LIBRARY_NAME}: $installdir/$ctx->{LIBRARY_SONAME}
+       \@echo Symlink \$\@
+       \@ln -sf $ctx->{LIBRARY_SONAME} \$\@
+
 __EOD__
 );
        }