configure.ac: define ICONV_OMITS_BOM if necessary
From commit 79444c9294
, ("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>
maint
parent
99b2ba35f5
commit
1ba6e7aecd
49
configure.ac
49
configure.ac
|
@ -844,12 +844,61 @@ AC_MSG_CHECKING([for old iconv()])
|
||||||
AC_COMPILE_IFELSE([OLDICONVTEST_SRC],
|
AC_COMPILE_IFELSE([OLDICONVTEST_SRC],
|
||||||
[AC_MSG_RESULT([no])],
|
[AC_MSG_RESULT([no])],
|
||||||
[AC_MSG_RESULT([yes])
|
[AC_MSG_RESULT([yes])
|
||||||
|
AC_DEFINE(HAVE_OLD_ICONV, 1)
|
||||||
OLD_ICONV=UnfortunatelyYes])
|
OLD_ICONV=UnfortunatelyYes])
|
||||||
|
|
||||||
GIT_UNSTASH_FLAGS($ICONVDIR)
|
GIT_UNSTASH_FLAGS($ICONVDIR)
|
||||||
|
|
||||||
GIT_CONF_SUBST([OLD_ICONV])
|
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.
|
## Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
|
AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue