Annotation of embedaddon/php/Zend/acinclude.m4, revision 1.1
1.1 ! misho 1: dnl $Id: acinclude.m4 312109 2011-06-12 17:26:45Z felipe $
! 2: dnl
! 3: dnl This file contains local autoconf functions.
! 4:
! 5: AC_DEFUN([LIBZEND_BISON_CHECK],[
! 6: # we only support certain bison versions
! 7: bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5"
! 8:
! 9: # for standalone build of Zend Engine
! 10: test -z "$SED" && SED=sed
! 11:
! 12: bison_version=none
! 13: if test "$YACC"; then
! 14: AC_CACHE_CHECK([for bison version], php_cv_bison_version, [
! 15: bison_version_vars=`bison --version 2> /dev/null | grep 'GNU Bison' | cut -d ' ' -f 4 | $SED -e 's/\./ /' | tr -d a-z`
! 16: php_cv_bison_version=invalid
! 17: if test -n "$bison_version_vars"; then
! 18: set $bison_version_vars
! 19: bison_version="${1}.${2}"
! 20: for bison_check_version in $bison_version_list; do
! 21: if test "$bison_version" = "$bison_check_version"; then
! 22: php_cv_bison_version="$bison_check_version (ok)"
! 23: break
! 24: fi
! 25: done
! 26: fi
! 27: ])
! 28: fi
! 29: case $php_cv_bison_version in
! 30: ""|invalid[)]
! 31: bison_msg="bison versions supported for regeneration of the Zend/PHP parsers: $bison_version_list (found: $bison_version)."
! 32: AC_MSG_WARN([$bison_msg])
! 33: YACC="exit 0;"
! 34: ;;
! 35: esac
! 36: ])
! 37:
! 38: AC_DEFUN([ZEND_FP_EXCEPT],[
! 39: AC_CACHE_CHECK(whether fp_except is defined, ac_cv_type_fp_except,[
! 40: AC_TRY_COMPILE([
! 41: #include <floatingpoint.h>
! 42: ],[
! 43: fp_except x = (fp_except) 0;
! 44: ],[
! 45: ac_cv_type_fp_except=yes
! 46: ],[
! 47: ac_cv_type_fp_except=no
! 48: ],[
! 49: ac_cv_type_fp_except=no
! 50: ])])
! 51: if test "$ac_cv_type_fp_except" = "yes"; then
! 52: AC_DEFINE(HAVE_FP_EXCEPT, 1, [whether floatingpoint.h defines fp_except])
! 53: fi
! 54: ])
! 55:
! 56: dnl
! 57: dnl Check for broken sprintf()
! 58: dnl
! 59: AC_DEFUN([AC_ZEND_BROKEN_SPRINTF],[
! 60: AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[
! 61: AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[
! 62: ac_cv_broken_sprintf=no
! 63: ],[
! 64: ac_cv_broken_sprintf=yes
! 65: ],[
! 66: ac_cv_broken_sprintf=no
! 67: ])
! 68: ])
! 69: if test "$ac_cv_broken_sprintf" = "yes"; then
! 70: ac_result=1
! 71: else
! 72: ac_result=0
! 73: fi
! 74: AC_DEFINE_UNQUOTED(ZEND_BROKEN_SPRINTF, $ac_result, [Whether sprintf is broken])
! 75: ])
! 76:
! 77: dnl
! 78: dnl AC_ZEND_C_BIGENDIAN
! 79: dnl Replacement macro for AC_C_BIGENDIAN
! 80: dnl
! 81: AC_DEFUN([AC_ZEND_C_BIGENDIAN],
! 82: [AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian_php,
! 83: [
! 84: ac_cv_c_bigendian_php=unknown
! 85: AC_TRY_RUN(
! 86: [
! 87: int main(void)
! 88: {
! 89: short one = 1;
! 90: char *cp = (char *)&one;
! 91:
! 92: if (*cp == 0) {
! 93: return(0);
! 94: } else {
! 95: return(1);
! 96: }
! 97: }
! 98: ], [ac_cv_c_bigendian_php=yes], [ac_cv_c_bigendian_php=no], [ac_cv_c_bigendian_php=unknown])
! 99: ])
! 100: if test $ac_cv_c_bigendian_php = yes; then
! 101: AC_DEFINE(WORDS_BIGENDIAN, [], [Define if processor uses big-endian word])
! 102: fi
! 103: ])
! 104:
! 105: AC_DEFUN([AM_SET_LIBTOOL_VARIABLE],[
! 106: LIBTOOL='$(SHELL) $(top_builddir)/libtool $1'
! 107: ])
! 108:
! 109: dnl x87 floating point internal precision control checks
! 110: dnl See: http://wiki.php.net/rfc/rounding
! 111: AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
! 112: AC_MSG_CHECKING([for usable _FPU_SETCW])
! 113: AC_TRY_LINK([
! 114: #include <fpu_control.h>
! 115: ],[
! 116: fpu_control_t fpu_oldcw, fpu_cw;
! 117: volatile double result;
! 118: double a = 2877.0;
! 119: volatile double b = 1000000.0;
! 120:
! 121: _FPU_GETCW(fpu_oldcw);
! 122: fpu_cw = (fpu_oldcw & ~_FPU_EXTENDED & ~_FPU_SINGLE) | _FPU_DOUBLE;
! 123: _FPU_SETCW(fpu_cw);
! 124: result = a / b;
! 125: _FPU_SETCW(fpu_oldcw);
! 126: ], [ac_cfp_have__fpu_setcw=yes], [ac_cfp_have__fpu_setcw=no])
! 127: if test "$ac_cfp_have__fpu_setcw" = "yes" ; then
! 128: AC_DEFINE(HAVE__FPU_SETCW, 1, [whether _FPU_SETCW is present and usable])
! 129: AC_MSG_RESULT(yes)
! 130: else
! 131: AC_MSG_RESULT(no)
! 132: fi
! 133:
! 134: AC_MSG_CHECKING([for usable fpsetprec])
! 135: AC_TRY_LINK([
! 136: #include <machine/ieeefp.h>
! 137: ],[
! 138: fp_prec_t fpu_oldprec;
! 139: volatile double result;
! 140: double a = 2877.0;
! 141: volatile double b = 1000000.0;
! 142:
! 143: fpu_oldprec = fpgetprec();
! 144: fpsetprec(FP_PD);
! 145: result = a / b;
! 146: fpsetprec(fpu_oldprec);
! 147: ], [ac_cfp_have_fpsetprec=yes], [ac_cfp_have_fpsetprec=no])
! 148: if test "$ac_cfp_have_fpsetprec" = "yes" ; then
! 149: AC_DEFINE(HAVE_FPSETPREC, 1, [whether fpsetprec is present and usable])
! 150: AC_MSG_RESULT(yes)
! 151: else
! 152: AC_MSG_RESULT(no)
! 153: fi
! 154:
! 155: AC_MSG_CHECKING([for usable _controlfp])
! 156: AC_TRY_LINK([
! 157: #include <float.h>
! 158: ],[
! 159: unsigned int fpu_oldcw;
! 160: volatile double result;
! 161: double a = 2877.0;
! 162: volatile double b = 1000000.0;
! 163:
! 164: fpu_oldcw = _controlfp(0, 0);
! 165: _controlfp(_PC_53, _MCW_PC);
! 166: result = a / b;
! 167: _controlfp(fpu_oldcw, _MCW_PC);
! 168: ], [ac_cfp_have__controlfp=yes], [ac_cfp_have__controlfp=no])
! 169: if test "$ac_cfp_have__controlfp" = "yes" ; then
! 170: AC_DEFINE(HAVE__CONTROLFP, 1, [whether _controlfp is present usable])
! 171: AC_MSG_RESULT(yes)
! 172: else
! 173: AC_MSG_RESULT(no)
! 174: fi
! 175:
! 176: AC_MSG_CHECKING([for usable _controlfp_s])
! 177: AC_TRY_LINK([
! 178: #include <float.h>
! 179: ],[
! 180: unsigned int fpu_oldcw, fpu_cw;
! 181: volatile double result;
! 182: double a = 2877.0;
! 183: volatile double b = 1000000.0;
! 184:
! 185: _controlfp_s(&fpu_cw, 0, 0);
! 186: fpu_oldcw = fpu_cw;
! 187: _controlfp_s(&fpu_cw, _PC_53, _MCW_PC);
! 188: result = a / b;
! 189: _controlfp_s(&fpu_cw, fpu_oldcw, _MCW_PC);
! 190: ], [ac_cfp_have__controlfp_s=yes], [ac_cfp_have__controlfp_s=no])
! 191: if test "$ac_cfp_have__controlfp_s" = "yes" ; then
! 192: AC_DEFINE(HAVE__CONTROLFP_S, 1, [whether _controlfp_s is present and usable])
! 193: AC_MSG_RESULT(yes)
! 194: else
! 195: AC_MSG_RESULT(no)
! 196: fi
! 197:
! 198: AC_MSG_CHECKING([whether FPU control word can be manipulated by inline assembler])
! 199: AC_TRY_LINK([
! 200: /* nothing */
! 201: ],[
! 202: unsigned int oldcw, cw;
! 203: volatile double result;
! 204: double a = 2877.0;
! 205: volatile double b = 1000000.0;
! 206:
! 207: __asm__ __volatile__ ("fnstcw %0" : "=m" (*&oldcw));
! 208: cw = (oldcw & ~0x0 & ~0x300) | 0x200;
! 209: __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw));
! 210:
! 211: result = a / b;
! 212:
! 213: __asm__ __volatile__ ("fldcw %0" : : "m" (*&oldcw));
! 214: ], [ac_cfp_have_fpu_inline_asm_x86=yes], [ac_cfp_have_fpu_inline_asm_x86=no])
! 215: if test "$ac_cfp_have_fpu_inline_asm_x86" = "yes" ; then
! 216: AC_DEFINE(HAVE_FPU_INLINE_ASM_X86, 1, [whether FPU control word can be manipulated by inline assembler])
! 217: AC_MSG_RESULT(yes)
! 218: else
! 219: AC_MSG_RESULT(no)
! 220: fi
! 221: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>