diff options
-rw-r--r-- | source4/build/m4/check_ld.m4 | 13 | ||||
-rw-r--r-- | source4/build/smb_build/makefile.pm | 17 |
2 files changed, 29 insertions, 1 deletions
diff --git a/source4/build/m4/check_ld.m4 b/source4/build/m4/check_ld.m4 index f7202b63eb..60b59bd653 100644 --- a/source4/build/m4/check_ld.m4 +++ b/source4/build/m4/check_ld.m4 @@ -36,6 +36,17 @@ SHLIBEXT="so" SONAMEFLAG="" PICFLAG="" +# allow for --with-hostld=gcc +AC_ARG_WITH(hostld,[ --with-hostld=linker choose host linker], +[HOSTLD=$withval], +[ +if test z"$cross_compiling" = "yes"; then + HOSTLD='$(HOSTCC)' +else + HOSTLD='$(LD)' +fi +]) + AC_MSG_CHECKING([ability to build shared libraries]) # and these are for particular systems @@ -144,6 +155,8 @@ AC_MSG_RESULT([$LD]) AC_MSG_CHECKING([LDFLAGS]) AC_MSG_RESULT([$LDFLAGS]) +AC_SUBST(HOSTLD) + AC_MSG_CHECKING([STLD]) AC_MSG_RESULT([$STLD]) AC_MSG_CHECKING([STLD_FLAGS]) diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 43391d8775..926d83f0f7 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -141,6 +141,9 @@ INSTALL_LINK_FLAGS=$extra_link_flags LD=$self->{config}->{LD} LDFLAGS=$self->{config}->{LDFLAGS} -L$libdir +HOSTLD=$self->{config}->{HOSTLD} +# It's possible that we ought to have HOSTLD_LDFLAGS as well + STLD=$self->{config}->{STLD} STLD_FLAGS=$self->{config}->{STLD_FLAGS} @@ -387,11 +390,23 @@ sub Binary($$) $self->output(<< "__EOD__" $installdir/$ctx->{BINARY}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_FULL_OBJ_LIST) \@echo Linking \$\@ +__EOD__ + ); + + if ($ctx->{"USE_HOSTCC"} =~ m/yes/i) { + $self->output(<< "__EOD__" + \@\$(HOSTLD) \$(LDFLAGS) -o \$\@ \$(INSTALL_LINK_FLAGS) \\ + \$\($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) +__EOD__ + ); + } else { + $self->output(<< "__EOD__" \@\$(LD) \$(LDFLAGS) -o \$\@ \$(INSTALL_LINK_FLAGS) \\ \$\($ctx->{TYPE}_$ctx->{NAME}_LINK_FLAGS) __EOD__ -); + ); + } } sub Manpage($$) |