This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Backport all of Jarkko's hard work
authorH.Merijn Brand - Tux <h.m.brand@xs4all.nl>
Sat, 6 Sep 2014 19:42:12 +0000 (21:42 +0200)
committerH.Merijn Brand - Tux <h.m.brand@xs4all.nl>
Sat, 6 Sep 2014 19:42:12 +0000 (21:42 +0200)
13 files changed:
U/perl/d_acosh.U [new file with mode: 0644]
U/perl/d_fegetround.U [new file with mode: 0644]
U/perl/d_fp_classl.U
U/perl/d_fpclassify.U
U/perl/d_fpgetround.U [new file with mode: 0644]
U/perl/d_isfinite.U
U/perl/d_isfinitel.U [new file with mode: 0644]
U/perl/d_isinf.U
U/perl/d_isinfl.U [new file with mode: 0644]
U/perl/d_isnan.U
U/perl/d_j0.U [new file with mode: 0644]
U/perl/i_fenv.U [new file with mode: 0644]
U/perl/i_stdint.U [new file with mode: 0644]

diff --git a/U/perl/d_acosh.U b/U/perl/d_acosh.U
new file mode 100644 (file)
index 0000000..f7313ae
--- /dev/null
@@ -0,0 +1,20 @@
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_acosh: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_acosh:
+?S:    This variable conditionally defines the HAS_ACOSH symbol, which
+?S:    indicates to the C program that the acosh() routine is available.
+?S:.
+?C:HAS_ACOSH:
+?C:    This symbol, if defined, indicates that the acosh routine is
+?C:    available to do the inverse hyperbolic cosine function.
+?C:.
+?H:#$d_acosh HAS_ACOSH         /**/
+?H:.
+?LINT:set d_acosh
+: see if acosh exists
+set acosh d_acosh
+eval $inlibc
+
diff --git a/U/perl/d_fegetround.U b/U/perl/d_fegetround.U
new file mode 100644 (file)
index 0000000..d4393cf
--- /dev/null
@@ -0,0 +1,21 @@
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_fegetround: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_fegetround:
+?S:    This variable conditionally defines HAS_FEGETROUND if fegetround() is
+?S:    available to get the floating point rounding mode.
+?S:.
+?C:HAS_FEGETROUND:
+?C:    This symbol, if defined, indicates that the fegetround routine is
+?C:    available to return the macro corresponding to the current rounding
+?C:    mode.
+?C:.
+?H:#$d_fegetround HAS_FEGETROUND       /**/
+?H:.
+?LINT:set d_fegetround
+: see if fegetround exists
+set fegetround d_fegetround
+eval $inlibc
+
index 1ff83a3..bd9e35f 100644 (file)
 ?C:HAS_FP_CLASSL:
 ?C:    This symbol, if defined, indicates that the fp_classl routine is
 ?C:    available to classify long doubles.  Available for example in
-?C:    Digital UNIX.
-?C:    The returned values are defined in <math.h> and are:
-?C:
-?C:    FP_SNAN           Signaling NaN (Not-a-Number)
-?C:    FP_QNAN           Quiet NaN (Not-a-Number)
-?C:    FP_POS_INF        +infinity
-?C:    FP_NEG_INF        -infinity
-?C:    FP_POS_NORM       Positive normalized
-?C:    FP_NEG_NORM       Negative normalized
-?C:    FP_POS_DENORM     Positive denormalized
-?C:    FP_NEG_DENORM     Negative denormalized
-?C:    FP_POS_ZERO       +0.0 (positive zero)
-?C:    FP_NEG_ZERO       -0.0 (negative zero)
+?C:    Digital UNIX.  See for possible values HAS_FP_CLASS.
 ?C:.
 ?H:#$d_fp_classl HAS_FP_CLASSL         /**/
 ?H:.
index 119a0cf..54c0438 100644 (file)
@@ -1,16 +1,23 @@
-?RCS: $Id$
-?RCS:
-?RCS: Copyright (c) 2000 Jarkko Hietaniemi
+?RCS: Copyright (c) 2000,2014 Jarkko Hietaniemi
 ?RCS:
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_fpclassify: Inlibc
+?MAKE:d_fpclassify d_fp_classify: Inlibc cat i_math Compile rm_try Setvar
 ?MAKE: -pick add $@ %<
+?X:the short story is that C99 says use fpclassify.  But the story is confused
+?X:by systems "partially C99" (or fully "pre C99") which either user fpclassify
+?X:but with different return values, or they use fp_classify (with the expected)
+?X:return values, or they use some other spelling of *fp*class* (sometimes even
+?X:without the *fp* part), with yet another set(s) of return values ...
 ?S:d_fpclassify:
 ?S:    This variable conditionally defines the HAS_FPCLASSIFY symbol, which
 ?S:    indicates to the C program that the fpclassify() routine is available.
 ?S:.
+?S:d_fp_classify:
+?S:    This variable conditionally defines the HAS_FP_CLASSIFY symbol, which
+?S:    indicates to the C program that the fp_classify() routine is available.
+?S:.
 ?C:HAS_FPCLASSIFY:
 ?C:    This symbol, if defined, indicates that the fpclassify routine is
 ?C:    available to classify doubles.  Available for example in HP-UX.
 ?C:           FP_NAN        NaN
 ?C:
 ?C:.
-?H:#$d_fpclassify HAS_FPCLASSIFY               /**/
+?C:HAS_FP_CLASSIFY:
+?C:    This symbol, if defined, indicates that the fp_classify routine is
+?C:    available to classify doubles. The values are defined in <math.h>
+?C:
+?C:           FP_NORMAL     Normalized
+?C:           FP_ZERO       Zero
+?C:           FP_INFINITE   Infinity
+?C:           FP_SUBNORMAL  Denormalized
+?C:           FP_NAN        NaN
+?C:
+?C:.
+?H:#$d_fpclassify      HAS_FPCLASSIFY          /**/
+?H:#$d_fp_classify     HAS_FP_CLASSIFY         /**/
 ?H:.
 ?LINT:set d_fpclassify
-: see if fpclassify exists
-set fpclassify d_fpclassify
+?LINT:set d_fp_classify
+: check for fpclassify
+?X:classified (Comment by jhi)
+?X:fpclassify  i_math
+?X:fp_classify i_math
+?X:fpclass     i_math i_ieeefp i_fp
+?X:fp_class    i_math i_fp_class
+?X:            No i_fp_class yet. But the systems that have
+?X:            this (Tru64 and IRIX) both had <fp_class.h>
+?X:class       i_math
+echo "Checking to see if you have fpclassify..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return fpclassify(1.0) == FP_NORMAL ? 0 : 1; }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have fpclassify."
+else
+       val="$undef"
+       echo "You do not have fpclassify."
+fi
+$rm_try
+set d_fpclassify
+eval $setvar
+
+: see if fp_classify exists
+set fp_classify d_fp_classify
 eval $inlibc
 
diff --git a/U/perl/d_fpgetround.U b/U/perl/d_fpgetround.U
new file mode 100644 (file)
index 0000000..c8d8ddc
--- /dev/null
@@ -0,0 +1,20 @@
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_fpgetround: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_fpgetround:
+?S:    This variable conditionally defines HAS_FPGETROUND if fpgetround()
+?S:    is available to get the floating point rounding mode.
+?S:.
+?C:HAS_FPGETROUND:
+?C:    This symbol, if defined, indicates that the fpgetround routine is
+?C:    available to get the floating point rounding mode.
+?C:.
+?H:#$d_fpgetround HAS_FPGETROUND               /**/
+?H:.
+?LINT:set d_fpgetround
+: see if fpgetround exists
+set fpgetround d_fpgetround
+eval $inlibc
+
index 7453fa7..8034071 100644 (file)
@@ -5,7 +5,7 @@
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_isfinite: Inlibc
+?MAKE:d_isfinite: Inlibc cat i_math Compile rm_try Setvar
 ?MAKE: -pick add $@ %<
 ?S:d_isfinite:
 ?S:    This variable conditionally defines the HAS_ISFINITE symbol, which
 ?C:    This symbol, if defined, indicates that the isfinite routine is
 ?C:    available to check whether a double is finite (non-infinity non-NaN).
 ?C:.
+?LINT:set d_isfinite
 ?H:#$d_isfinite HAS_ISFINITE           /**/
 ?H:.
-?LINT:set d_isfinite
-: see if isfinite exists
-set isfinite d_isfinite
-eval $inlibc
+: check for isfinite
+echo "Checking to see if you have isfinite..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isfinite(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isfinite."
+else
+       val="$undef"
+       echo "You do not have isfinite."
+fi
+$rm_try
+set d_isfinite
+eval $setvar
 
diff --git a/U/perl/d_isfinitel.U b/U/perl/d_isfinitel.U
new file mode 100644 (file)
index 0000000..372ced0
--- /dev/null
@@ -0,0 +1,25 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 2000 Jarkko Hietaniemi
+?RCS:
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_isfinitel: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_isfinitel:
+?S:    This variable conditionally defines the HAS_ISFINITEL symbol, which
+?S:    indicates to the C program that the isfinitel() routine is available.
+?S:.
+?C:HAS_ISFINITEL:
+?C:    This symbol, if defined, indicates that the isfinitel routine is
+?C:    available to check whether a long double is finite.
+?C:    (non-infinity non-NaN).
+?C:.
+?H:#$d_isfinitel HAS_ISFINITEL         /**/
+?H:.
+?LINT:set d_isfinitel
+: see if isfinitel exists
+set isfinitel d_isfinitel
+eval $inlibc
+
index fd31a23..a08f8e3 100644 (file)
@@ -5,7 +5,7 @@
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_isinf: Inlibc
+?MAKE:d_isinf: Inlibc cat i_math Compile rm_try Setvar
 ?MAKE: -pick add $@ %<
 ?S:d_isinf:
 ?S:    This variable conditionally defines the HAS_ISINF symbol, which
 ?H:#$d_isinf HAS_ISINF         /**/
 ?H:.
 ?LINT:set d_isinf
-: see if isinf exists
-set isinf d_isinf
-eval $inlibc
+: check for isinf
+echo "Checking to see if you have isinf..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isinf(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isinf."
+else
+       val="$undef"
+       echo "You do not have isinf."
+fi
+$rm_try
+set d_isinf
+eval $setvar
 
diff --git a/U/perl/d_isinfl.U b/U/perl/d_isinfl.U
new file mode 100644 (file)
index 0000000..3f2e9fc
--- /dev/null
@@ -0,0 +1,24 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 2000 Jarkko Hietaniemi
+?RCS:
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_isinfl: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_isinfl:
+?S:    This variable conditionally defines the HAS_ISINFL symbol, which
+?S:    indicates to the C program that the isinfl() routine is available.
+?S:.
+?C:HAS_ISINFL:
+?C:    This symbol, if defined, indicates that the isinfl routine is
+?C:    available to check whether a long double is an infinity.
+?C:.
+?H:#$d_isinfl HAS_ISINFL               /**/
+?H:.
+?LINT:set d_isinfl
+: see if isinfl exists
+set isinfl d_isinfl
+eval $inlibc
+
index 172a148..a3ec01c 100644 (file)
@@ -5,7 +5,7 @@
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_isnan: Inlibc
+?MAKE:d_isnan: Inlibc cat i_math Compile rm_try Setvar
 ?MAKE: -pick add $@ %<
 ?S:d_isnan:
 ?S:    This variable conditionally defines the HAS_ISNAN symbol, which
 ?H:#$d_isnan HAS_ISNAN         /**/
 ?H:.
 ?LINT:set d_isnan
-: see if isnan exists
-set isnan d_isnan
-eval $inlibc
+: check for isnan
+echo "Checking to see if you have isnan..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isnan(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isnan."
+else
+       val="$undef"
+       echo "You do not have isnan."
+fi
+$rm_try
+set d_isnan
+eval $setvar
 
diff --git a/U/perl/d_j0.U b/U/perl/d_j0.U
new file mode 100644 (file)
index 0000000..dafc054
--- /dev/null
@@ -0,0 +1,36 @@
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_j0 d_j0l: Inlibc
+?MAKE: -pick add $@ %<
+?S:d_j0:
+?S:    This variable conditionally defines the HAS_J0 symbol, which
+?S:    indicates to the C program that the j0() routine is available.
+?S:.
+?S:d_j0l:
+?S:    This variable conditionally defines the HAS_J0L symbol, which
+?S:    indicates to the C program that the j0l() routine is available.
+?S:.
+?C:HAS_J0:
+?C:    This symbol, if defined, indicates to the C program that the
+?C:    j0() function is available for Bessel functions of the first
+?C:    kind of the order zero, for doubles.
+?C:.
+?C:HAS_J0L:
+?C:    This symbol, if defined, indicates to the C program that the
+?C:    j0l() function is available for Bessel functions of the first
+?C:    kind of the order zero, for long doubles.
+?C:.
+?H:#$d_j0      HAS_J0          /**/
+?H:#$d_j0l     HAS_J0L         /**/
+?H:.
+?LINT:set d_j0
+?LINT:set d_j0l
+: see if j0 exists
+set j0 d_j0
+eval $inlibc
+
+: see if j0l exists
+set j0l d_j0l
+eval $inlibc
+
diff --git a/U/perl/i_fenv.U b/U/perl/i_fenv.U
new file mode 100644 (file)
index 0000000..ac77e77
--- /dev/null
@@ -0,0 +1,21 @@
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS:
+?MAKE:i_fenv: Inhdr
+?MAKE: -pick add $@ %<
+?S:i_fenv:
+?S:    This variable conditionally defines the I_FENV symbol, which
+?S:    indicates to the C program that <fenv.h> exists and should
+?S:    be included.
+?S:.
+?C:I_FENV:
+?C:    This symbol, if defined, indicates to the C program that it should
+?C:    include <fenv.h> to get the floating point environment definitions.
+?C:.
+?H:#$i_fenv I_FENV             /**/
+?H:.
+?LINT:set i_fenv
+: see if this is a fenv.h system
+set fenv.h i_fenv
+eval $inhdr
+
diff --git a/U/perl/i_stdint.U b/U/perl/i_stdint.U
new file mode 100644 (file)
index 0000000..09c6808
--- /dev/null
@@ -0,0 +1,21 @@
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS:
+?MAKE:i_stdint: Inhdr
+?MAKE: -pick add $@ %<
+?S:i_stdint:
+?S:    This variable conditionally defines the I_STDINT symbol, which
+?S:    indicates to the C program that <stdint.h> exists and should
+?S:    be included.
+?S:.
+?C:I_STDINT:
+?C:    This symbol, if defined, indicates that <stdint.h> exists and
+?C:    should be included.
+?C:.
+?H:#$i_stdint I_STDINT         /**/
+?H:.
+?LINT:set i_stdint
+: see if stdint is available
+set stdint.h i_stdint
+eval $inhdr
+