Skip to content

Commit

Permalink
configure.ac: define ICONV_OMITS_BOM if necessary
Browse files Browse the repository at this point in the history
From commit 79444c9, ("utf8: handle systems that don't write BOM for
UTF-16", 2019-02-12), we're supporting those systems with iconv that
omits BOM with:

    make ICONV_OMITS_BOM=Yes

However, configure script wasn't taught to detect those systems.

Teach configure to do so.

Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
sgn authored and gitster committed Nov 11, 2019
1 parent 99b2ba3 commit 1ba6e7a
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -844,12 +844,61 @@ AC_MSG_CHECKING([for old iconv()])
AC_COMPILE_IFELSE([OLDICONVTEST_SRC],
[AC_MSG_RESULT([no])],
[AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_OLD_ICONV, 1)
OLD_ICONV=UnfortunatelyYes])

GIT_UNSTASH_FLAGS($ICONVDIR)

GIT_CONF_SUBST([OLD_ICONV])

#
# Define ICONV_OMITS_BOM if you are on a system which
# iconv omits bom for utf-{16,32}
if test -z "$NO_ICONV"; then
AC_CACHE_CHECK([whether iconv omits bom for utf-16 and utf-32],
[ac_cv_iconv_omits_bom],
[
old_LIBS="$LIBS"
if test -n "$NEEDS_LIBICONV"; then
LIBS="$LIBS -liconv"
fi
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
#include <iconv.h>
#ifdef HAVE_OLD_ICONV
typedef const char *iconv_ibp;
#else
typedef char *iconv_ibp;
#endif
],
[[
int v;
iconv_t conv;
char in[] = "a"; iconv_ibp pin = in;
char out[20] = ""; char *pout = out;
size_t isz = sizeof in;
size_t osz = sizeof out;
conv = iconv_open("UTF-16", "UTF-8");
iconv(conv, &pin, &isz, &pout, &osz);
iconv_close(conv);
v = (unsigned char)(out[0]) + (unsigned char)(out[1]);
return v != 0xfe + 0xff;
]])],
[ac_cv_iconv_omits_bom=no],
[ac_cv_iconv_omits_bom=yes])
LIBS="$old_LIBS"
])
if test "x$ac_cv_iconv_omits_bom" = xyes; then
ICONV_OMITS_BOM=Yes
else
ICONV_OMITS_BOM=
fi
GIT_CONF_SUBST([ICONV_OMITS_BOM])
fi

## Checks for typedefs, structures, and compiler characteristics.
AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
#
Expand Down

0 comments on commit 1ba6e7a

Please sign in to comment.