diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/iconv/config.m4 | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/iconv/config.m4')
-rw-r--r-- | ext/iconv/config.m4 | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4 new file mode 100644 index 0000000..d673b0a --- /dev/null +++ b/ext/iconv/config.m4 @@ -0,0 +1,180 @@ +dnl +dnl $Id$ +dnl + +PHP_ARG_WITH(iconv, for iconv support, +[ --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 + if test -z "$ICONV_DIR"; then + for i in /usr/local /usr; do + if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then + PHP_ICONV_PREFIX="$i" + break + fi + done + if test -z "$PHP_ICONV_PREFIX"; then + PHP_ICONV_PREFIX="/usr" + fi + else + PHP_ICONV_PREFIX="$ICONV_DIR" + fi + + CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS" + LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS" + + if test -r "$PHP_ICONV_PREFIX/include/giconv.h"; then + PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h" + else + PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/iconv.h" + fi + + AC_MSG_CHECKING([if iconv is glibc's]) + AC_TRY_LINK([#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]) + php_iconv_old_ld="$LDFLAGS" + LDFLAGS="-liconv $LDFLAGS" + AC_TRY_RUN([ +#include <$PHP_ICONV_H_PATH> +int main() { + printf("%d", _libiconv_version); + return 0; +} + ],[ + AC_MSG_RESULT(yes) + iconv_impl_name="gnu_libiconv" + ],[ + AC_MSG_RESULT(no) + LDFLAGS="$php_iconv_old_ld" + ],[ + AC_MSG_RESULT(no, cross-compiling) + LDFLAGS="$php_iconv_old_ld" + ]) + fi + + if test -z "$iconv_impl_name"; then + AC_MSG_CHECKING([if iconv is Konstantin Chuguev's]) + AC_TRY_LINK([#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]) + php_iconv_old_ld="$LDFLAGS" + LDFLAGS="-liconv $LDFLAGS" + AC_TRY_LINK([#include <iconv.h>],[cstoccsid("");], + [ + AC_MSG_RESULT(yes) + iconv_impl_name="ibm" + ],[ + AC_MSG_RESULT(no) + LDFLAGS="$php_iconv_old_ld" + ]) + fi + + echo > ext/iconv/php_have_bsd_iconv.h + echo > ext/iconv/php_have_glibc_iconv.h + echo > ext/iconv/php_have_libiconv.h + echo > ext/iconv/php_have_ibm_iconv.h + + case "$iconv_impl_name" in + gnu_libiconv [)] + PHP_DEFINE([PHP_ICONV_IMPL],[\"libiconv\"],[ext/iconv]) + AC_DEFINE([PHP_ICONV_IMPL],["libiconv"],[Which iconv implementation to use]) + PHP_DEFINE([HAVE_LIBICONV],1,[ext/iconv]) + PHP_ADD_LIBRARY_WITH_PATH(iconv, "$PHP_ICONV_PREFIX/$PHP_LIBDIR", ICONV_SHARED_LIBADD) + ;; + + bsd [)] + PHP_DEFINE([HAVE_BSD_ICONV],1,[ext/iconv]) + AC_DEFINE([HAVE_BSD_ICONV],1,[Konstantin Chuguev's iconv implementation]) + PHP_DEFINE([PHP_ICONV_IMPL],[\"BSD iconv\"],[ext/iconv]) + AC_DEFINE([PHP_ICONV_IMPL],["BSD iconv"],[Which iconv implementation to use]) + ;; + + glibc [)] + PHP_DEFINE([HAVE_GLIBC_ICONV],1,[ext/iconv]) + AC_DEFINE([HAVE_GLIBC_ICONV],1,[glibc's iconv implementation]) + PHP_DEFINE([PHP_ICONV_IMPL],[\"glibc\"],[ext/iconv]) + AC_DEFINE([PHP_ICONV_IMPL],["glibc"],[Which iconv implementation to use]) + ;; + ibm [)] + PHP_DEFINE([HAVE_IBM_ICONV],1,[ext/iconv]) + AC_DEFINE([HAVE_IBM_ICONV],1,[IBM iconv implementation]) + PHP_DEFINE([PHP_ICONV_IMPL],[\"IBM iconv\"],[ext/iconv]) + AC_DEFINE([PHP_ICONV_IMPL],["IBM iconv"],[Which iconv implementation to use]) + ;; + esac + + AC_MSG_CHECKING([if iconv supports errno]) + AC_TRY_RUN([ +#include <$PHP_ICONV_H_PATH> +#include <errno.h> + +int main() { + iconv_t cd; + cd = iconv_open( "*blahblah*", "*blahblah*" ); + if (cd == (iconv_t)(-1)) { + if (errno == EINVAL) { + return 0; + } else { + return 1; + } + } + iconv_close( cd ); + return 2; +} + ],[ + AC_MSG_RESULT(yes) + PHP_DEFINE([ICONV_SUPPORTS_ERRNO],1,[ext/iconv]) + AC_DEFINE([ICONV_SUPPORTS_ERRNO],1,[Whether iconv supports error no or not]) + ],[ + AC_MSG_RESULT(no) + PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0,[ext/iconv]) + AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports error no or not]) + ],[ + AC_MSG_RESULT(no, cross-compiling) + PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0,[ext/iconv]) + AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports error no or not]) + ]) + + AC_MSG_CHECKING([if your cpp allows macro usage in include lines]) + AC_TRY_COMPILE([ +#define FOO <$PHP_ICONV_H_PATH> +#include FOO + ], [], [ + AC_MSG_RESULT([yes]) + PHP_DEFINE([PHP_ICONV_H_PATH], [<$PHP_ICONV_H_PATH>],[ext/iconv]) + AC_DEFINE_UNQUOTED([PHP_ICONV_H_PATH], [<$PHP_ICONV_H_PATH>], [Path to iconv.h]) + ], [ + AC_MSG_RESULT([no]) + ]) + + PHP_NEW_EXTENSION(iconv, iconv.c, $ext_shared,, [-I\"$PHP_ICONV_PREFIX/include\"]) + PHP_SUBST(ICONV_SHARED_LIBADD) + PHP_INSTALL_HEADERS([ext/iconv/]) + else + AC_MSG_ERROR(Please reinstall the iconv library.) + fi +fi |