1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/ext/iconv/config.m4
Peter Kokot 52dba99d47 Sync headers installation
This syncs the installed sapi and extension headers on *nix and Windows
systems by installing only what is intended outside of php-src.

- ext/gd: without gd_arginfo.h and gd_compat.h
- ext/hash: php_hash_joaat.h and php_hash_fnv.h added also on Windows
  installation; xxhash/xxhash.h added on both installations as it is
  included in php_hash_xxhash.h; Include path for xxhash.h changed to
  relative so the php_hash_xxhash.h can be included outside of php-src;
  Redundant include flags removed
- ext/iconv: without iconv_arginfo.h
- ext/mysqli: mysqli_mysqlnd.h was missing on Windows
- ext/phar: php_phar.h was missing on Windows
- ext/sodium: php_libsodium.h was missing on *nix
- ext/xml: without xml_arginfo.h
- sapi/cli: cli.h was missing on Windows

Closes GH-13210
Closes GH-13213
2024-01-28 19:50:55 +01:00

157 lines
4.0 KiB
Plaintext

PHP_ARG_WITH([iconv],
[for iconv support],
[AS_HELP_STRING([[--without-iconv[=DIR]]],
[Exclude iconv support])],
[yes])
if test "$PHP_ICONV" != "no"; then
PHP_SETUP_ICONV(ICONV_SHARED_LIBADD, [
iconv_avail="yes";
],[
iconv_avail="no";
])
if test "$iconv_avail" != "no"; then
save_LDFLAGS="$LDFLAGS"
save_CFLAGS="$CFLAGS"
LDFLAGS="$ICONV_SHARED_LIBADD $LDFLAGS"
CFLAGS="$INCLUDES $CFLAGS"
AC_MSG_CHECKING([if iconv is glibc's])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gnu/libc-version.h>]], [[gnu_get_libc_version();]])],[
AC_MSG_RESULT(yes)
iconv_impl_name="glibc"
],[
AC_MSG_RESULT(no)
])
if test -z "$iconv_impl_name"; then
AC_MSG_CHECKING([if using GNU libiconv])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <iconv.h>
#include <stdio.h>
int main(void) {
printf("%d", _libiconv_version);
return 0;
}
]])],[
AC_MSG_RESULT(yes)
iconv_impl_name="gnu_libiconv"
],[
AC_MSG_RESULT(no)
],[
AC_MSG_RESULT([no, cross-compiling])
])
fi
if test -z "$iconv_impl_name"; then
AC_MSG_CHECKING([if iconv is Konstantin Chuguev's])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <iconv.h>]], [[iconv_ccs_init(NULL, NULL);]])],[
AC_MSG_RESULT(yes)
iconv_impl_name="bsd"
],[
AC_MSG_RESULT(no)
])
fi
if test -z "$iconv_impl_name"; then
AC_MSG_CHECKING([if using IBM iconv])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <iconv.h>]], [[cstoccsid("");]])],[
AC_MSG_RESULT(yes)
iconv_impl_name="ibm"
],[
AC_MSG_RESULT(no)
])
fi
case "$iconv_impl_name" in
gnu_libiconv [)]
AC_DEFINE([PHP_ICONV_IMPL],["libiconv"],[Which iconv implementation to use])
AC_DEFINE([HAVE_LIBICONV],1,[Whether libiconv is used])
;;
bsd [)]
AC_DEFINE([HAVE_BSD_ICONV],1,[Konstantin Chuguev's iconv implementation])
AC_DEFINE([PHP_ICONV_IMPL],["BSD iconv"],[Which iconv implementation to use])
;;
glibc [)]
AC_DEFINE([HAVE_GLIBC_ICONV],1,[glibc's iconv implementation])
AC_DEFINE([PHP_ICONV_IMPL],["glibc"],[Which iconv implementation to use])
;;
ibm [)]
AC_DEFINE([HAVE_IBM_ICONV],1,[IBM iconv implementation])
AC_DEFINE([PHP_ICONV_IMPL],["IBM iconv"],[Which iconv implementation to use])
;;
esac
AC_MSG_CHECKING([if iconv supports errno])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <iconv.h>
#include <errno.h>
int main(void) {
iconv_t cd;
cd = iconv_open( "*blahblah*", "*blahblahblah*" );
if (cd == (iconv_t)(-1)) {
if (errno == EINVAL) {
return 0;
} else {
return 1;
}
}
iconv_close( cd );
return 2;
}
]])],[
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
AC_MSG_ERROR(iconv does not support errno)
],[
AC_MSG_RESULT(yes, cross-compiling)
])
AC_MSG_CHECKING([if iconv supports //IGNORE])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <iconv.h>
#include <stdlib.h>
int main(void) {
iconv_t cd = iconv_open( "UTF-8//IGNORE", "UTF-8" );
if(cd == (iconv_t)-1) {
return 1;
}
char *in_p = "\xC3\xC3\xC3\xB8";
size_t in_left = 4, out_left = 4096;
char *out = malloc(out_left);
char *out_p = out;
size_t result = iconv(cd, (char **) &in_p, &in_left, (char **) &out_p, &out_left);
if(result == (size_t)-1) {
return 1;
}
return 0;
}
]])],[
AC_MSG_RESULT(yes)
AC_DEFINE([ICONV_BROKEN_IGNORE],0,[Whether iconv supports IGNORE])
],[
AC_MSG_RESULT(no)
AC_DEFINE([ICONV_BROKEN_IGNORE],1,[Whether iconv supports IGNORE])
],[
AC_MSG_RESULT(no, cross-compiling)
AC_DEFINE([ICONV_BROKEN_IGNORE],0,[Whether iconv supports IGNORE])
])
LDFLAGS="$save_LDFLAGS"
CFLAGS="$save_CFLAGS"
PHP_NEW_EXTENSION(iconv, iconv.c, $ext_shared,, [-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
PHP_SUBST(ICONV_SHARED_LIBADD)
PHP_INSTALL_HEADERS([ext/iconv], [php_iconv.h])
else
AC_MSG_ERROR(Please reinstall the iconv library.)
fi
fi