summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/build/m4/check_ld.m413
-rw-r--r--source4/build/smb_build/makefile.pm17
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($$)