Skip to content

Commit 7f8e8a0

Browse files
authored
Use AC_CACHE_CHECK for float precision checks (#14663)
- AC_CACHE_CHECK simplifies message checkings and can speed up the consequtive configure -C checks - AC_DEFINE descriptions style synced - Used php_cv_* cache variables style - Reduced over-quoted arguments to AC_LANG_PROGRAM - Sync macro help text
1 parent bf7be07 commit 7f8e8a0

File tree

1 file changed

+50
-60
lines changed

1 file changed

+50
-60
lines changed

Zend/Zend.m4

Lines changed: 50 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ dnl
66
dnl x87 floating point internal precision control checks
77
dnl See: http://wiki.php.net/rfc/rounding
88
dnl
9-
AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
10-
AC_MSG_CHECKING([for usable _FPU_SETCW])
11-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
12-
#include <fpu_control.h>
13-
]],[[
9+
AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION], [dnl
10+
AC_CACHE_CHECK([for usable _FPU_SETCW],
11+
[php_cv_have__fpu_setcw],
12+
[AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <fpu_control.h>], [dnl
1413
fpu_control_t fpu_oldcw, fpu_cw;
1514
volatile double result;
1615
double a = 2877.0;
@@ -22,18 +21,16 @@ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
2221
result = a / b;
2322
_FPU_SETCW(fpu_oldcw);
2423
(void)result;
25-
]])],[ac_cfp_have__fpu_setcw=yes],[ac_cfp_have__fpu_setcw=no])
26-
if test "$ac_cfp_have__fpu_setcw" = "yes" ; then
27-
AC_DEFINE(HAVE__FPU_SETCW, 1, [whether _FPU_SETCW is present and usable])
28-
AC_MSG_RESULT(yes)
29-
else
30-
AC_MSG_RESULT(no)
31-
fi
32-
33-
AC_MSG_CHECKING([for usable fpsetprec])
34-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
35-
#include <machine/ieeefp.h>
36-
]],[[
24+
])],
25+
[php_cv_have__fpu_setcw=yes],
26+
[php_cv_have__fpu_setcw=no])])
27+
AS_VAR_IF([php_cv_have__fpu_setcw], [yes],
28+
[AC_DEFINE([HAVE__FPU_SETCW], [1],
29+
[Define to 1 if _FPU_SETCW is present and usable.])])
30+
31+
AC_CACHE_CHECK([for usable fpsetprec],
32+
[php_cv_have_fpsetprec],
33+
[AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <machine/ieeefp.h>], [dnl
3734
fp_prec_t fpu_oldprec;
3835
volatile double result;
3936
double a = 2877.0;
@@ -44,18 +41,16 @@ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
4441
result = a / b;
4542
fpsetprec(fpu_oldprec);
4643
(void)result;
47-
]])], [ac_cfp_have_fpsetprec=yes], [ac_cfp_have_fpsetprec=no])
48-
if test "$ac_cfp_have_fpsetprec" = "yes" ; then
49-
AC_DEFINE(HAVE_FPSETPREC, 1, [whether fpsetprec is present and usable])
50-
AC_MSG_RESULT(yes)
51-
else
52-
AC_MSG_RESULT(no)
53-
fi
54-
55-
AC_MSG_CHECKING([for usable _controlfp])
56-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
57-
#include <float.h>
58-
]],[[
44+
])],
45+
[php_cv_have_fpsetprec=yes],
46+
[php_cv_have_fpsetprec=no])])
47+
AS_VAR_IF([php_cv_have_fpsetprec], [yes],
48+
[AC_DEFINE([HAVE_FPSETPREC], [1],
49+
[Define to 1 if fpsetprec is present and usable.])])
50+
51+
AC_CACHE_CHECK([for usable _controlfp],
52+
[php_cv_have__controlfp],
53+
[AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <float.h>], [dnl
5954
unsigned int fpu_oldcw;
6055
volatile double result;
6156
double a = 2877.0;
@@ -66,18 +61,16 @@ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
6661
result = a / b;
6762
_controlfp(fpu_oldcw, _MCW_PC);
6863
(void)result;
69-
]])], [ac_cfp_have__controlfp=yes], [ac_cfp_have__controlfp=no])
70-
if test "$ac_cfp_have__controlfp" = "yes" ; then
71-
AC_DEFINE(HAVE__CONTROLFP, 1, [whether _controlfp is present usable])
72-
AC_MSG_RESULT(yes)
73-
else
74-
AC_MSG_RESULT(no)
75-
fi
76-
77-
AC_MSG_CHECKING([for usable _controlfp_s])
78-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
79-
#include <float.h>
80-
]],[[
64+
])],
65+
[php_cv_have__controlfp=yes],
66+
[php_cv_have__controlfp=no])])
67+
AS_VAR_IF([php_cv_have__controlfp], [yes],
68+
[AC_DEFINE([HAVE__CONTROLFP], [1],
69+
[Define to 1 if _controlfp is present and usable.])])
70+
71+
AC_CACHE_CHECK([for usable _controlfp_s],
72+
[php_cv_have__controlfp_s],
73+
[AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <float.h>], [dnl
8174
unsigned int fpu_oldcw, fpu_cw;
8275
volatile double result;
8376
double a = 2877.0;
@@ -89,18 +82,16 @@ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
8982
result = a / b;
9083
_controlfp_s(&fpu_cw, fpu_oldcw, _MCW_PC);
9184
(void)result;
92-
]])], [ac_cfp_have__controlfp_s=yes], [ac_cfp_have__controlfp_s=no])
93-
if test "$ac_cfp_have__controlfp_s" = "yes" ; then
94-
AC_DEFINE(HAVE__CONTROLFP_S, 1, [whether _controlfp_s is present and usable])
95-
AC_MSG_RESULT(yes)
96-
else
97-
AC_MSG_RESULT(no)
98-
fi
99-
100-
AC_MSG_CHECKING([whether FPU control word can be manipulated by inline assembler])
101-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
102-
/* nothing */
103-
]],[[
85+
])],
86+
[php_cv_have__controlfp_s=yes],
87+
[php_cv_have__controlfp_s=no])])
88+
AS_VAR_IF([php_cv_have__controlfp_s], [yes],
89+
[AC_DEFINE([HAVE__CONTROLFP_S], [1],
90+
[Define to 1 if _controlfp_s is present and usable.])])
91+
92+
AC_CACHE_CHECK([whether FPU control word can be manipulated by inline assembler],
93+
[php_cv_have_fpu_inline_asm_x86],
94+
[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [dnl
10495
unsigned int oldcw, cw;
10596
volatile double result;
10697
double a = 2877.0;
@@ -112,13 +103,12 @@ AC_DEFUN([ZEND_CHECK_FLOAT_PRECISION],[
112103
result = a / b;
113104
__asm__ __volatile__ ("fldcw %0" : : "m" (*&oldcw));
114105
(void)result;
115-
]])], [ac_cfp_have_fpu_inline_asm_x86=yes], [ac_cfp_have_fpu_inline_asm_x86=no])
116-
if test "$ac_cfp_have_fpu_inline_asm_x86" = "yes" ; then
117-
AC_DEFINE(HAVE_FPU_INLINE_ASM_X86, 1, [whether FPU control word can be manipulated by inline assembler])
118-
AC_MSG_RESULT(yes)
119-
else
120-
AC_MSG_RESULT(no)
121-
fi
106+
])],
107+
[php_cv_have_fpu_inline_asm_x86=yes],
108+
[php_cv_have_fpu_inline_asm_x86=no])])
109+
AS_VAR_IF([php_cv_have_fpu_inline_asm_x86], [yes],
110+
[AC_DEFINE([HAVE_FPU_INLINE_ASM_X86], [1],
111+
[Define to 1 if FPU control word can be manipulated by inline assembler.])])
122112
])
123113

124114
dnl

0 commit comments

Comments
 (0)