Annotation of embedaddon/php/Zend/acinclude.m4, revision 1.1.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>