+++ /dev/null
-configure: use minimal LIBS during gettext check
-
-In some configurations, vim fails to link correctly with messages such as:
-edit.c:(.text+0x1614): undefined reference to `libintl_gettext'
-
-In particular, this has been seen by the buildroot autobuilds (see [1]) but
-has also been reported at [2] and [3].
-
-In the bad case, the configure script says:
-checking for NLS... gettext() works
-In the good case, it says:
-checking for NLS... gettext() works with -lintl
-
-In the bad case, the system has libelf, vim detects that and takes it along
-in $LIBS. Libelf needs libintl on this system, and so linking the test
-program with -lelf will automatically take -lintl too. This causes configure
-to think gettext() does not need libintl, while in reality it does.
-
-In the good case, libelf is not present and thus not used. The first
-configure test for gettext fails, and then configure retries with -lintl
-(which succeeds).
-
-Until now, there isn't really a problem. In both cases, you could link
-correctly. In the 'bad' case, libintl is implicitly taken through libelf, in
-the second case it is explicitly taken.
-
-The real problem occurs because configure also tests whether the linker
-supports --as-needed and uses it when possible, instead of the link.sh
-script. However, --as-needed seems to cause libintl NOT to be taken in the
-bad case, causing the undefined references to libintl_gettext.
-
-This patch changes the configure script so that the gettext check does not
-use additional libraries such as libelf. The test program is linked either
-with nothing, or with libintl alone. This will cause libintl to
-be added explicitly to LIBS, when needed.
-
-[1] http://autobuild.buildroot.net/results/21b5a910e6a27fa1cb12d0002ffed7e6ed9d6c83/
-[2] http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2012-November/243930.html
-[3] http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2012-May/234184.html
-
-
-Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
-Upstream-status: accepted (http://article.gmane.org/gmane.editors.vim.devel/43528)
-
----
- src/auto/configure | 11 ++++++-----
- src/configure.in | 13 +++++++++----
- 2 files changed, 15 insertions(+), 9 deletions(-)
-
-diff --git a/src/auto/configure b/src/auto/configure
---- a/src/auto/configure
-+++ b/src/auto/configure
-@@ -12271,6 +12271,8 @@ fi
- if test -f po/Makefile; then
- have_gettext="no"
- if test -n "$MSGFMT"; then
-+ olibs=$LIBS
-+ LIBS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #include <libintl.h>
-@@ -12284,10 +12286,9 @@ gettext("Test");
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
--$as_echo "gettext() works" >&6; }; have_gettext="yes"
--else
-- olibs=$LIBS
-- LIBS="$LIBS -lintl"
-+$as_echo "gettext() works" >&6; }; have_gettext="yes"; LIBS=$olibs;
-+else
-+ LIBS="-lintl"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #include <libintl.h>
-@@ -12301,7 +12302,7 @@ gettext("Test");
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
--$as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes"
-+$as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes"; LIBS="$olibs -lintl";
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
- $as_echo "gettext() doesn't work" >&6; };
-diff --git a/src/configure.in b/src/configure.in
---- a/src/configure.in
-+++ b/src/configure.in
-@@ -3484,6 +3484,9 @@ if test "$MANDEF" = "man -s"; then
- fi
-
- dnl Check if gettext() is working and if it needs -lintl
-+dnl We take care to base this on an empty LIBS: on some systems libelf would be
-+dnl in LIBS and implicitly take along libintl. The final LIBS would then not
-+dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
- AC_MSG_CHECKING(--disable-nls argument)
- AC_ARG_ENABLE(nls,
- [ --disable-nls Don't support NLS (gettext()).], ,
-@@ -3502,16 +3505,18 @@ if test "$enable_nls" = "yes"; then
- if test -f po/Makefile; then
- have_gettext="no"
- if test -n "$MSGFMT"; then
-+ olibs=$LIBS
-+ LIBS=""
- AC_TRY_LINK(
- [#include <libintl.h>],
- [gettext("Test");],
-- AC_MSG_RESULT([gettext() works]); have_gettext="yes",
-- olibs=$LIBS
-- LIBS="$LIBS -lintl"
-+ AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
-+ LIBS="-lintl"
- AC_TRY_LINK(
- [#include <libintl.h>],
- [gettext("Test");],
-- AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
-+ AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
-+ LIBS="$olibs -lintl",
- AC_MSG_RESULT([gettext() doesn't work]);
- LIBS=$olibs))
- else