Long double support: sqrtl et al are not available everywhere,
Jarkko Hietaniemi [Tue, 19 Oct 1999 07:22:34 +0000 (07:22 +0000)]
e.g. not in Solaris, even when long doubles are.

p4raw-id: //depot/cfgperl@4411

Configure
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
perl.h

index 54636fe..1a087c8 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sun Oct  3 02:41:02 EET DST 1999 [metaconfig 3.0 PL70]
+# Generated on Tue Oct 19 10:23:39 EET DST 1999 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <<EOF
@@ -510,6 +510,7 @@ d_socket=''
 d_sockpair=''
 sockethdr=''
 socketlib=''
+d_sqrtl=''
 d_statblks=''
 d_fstatfs=''
 d_statfs=''
@@ -10281,6 +10282,10 @@ set d_sigsetjmp
 eval $setvar
 $rm -f try.c try
 
+: see if sqrtl exists
+set sqrtl d_sqrtl
+eval $inlibc
+
 : see if sys/stat.h is available
 set sys/stat.h i_sysstat
 eval $inhdr
@@ -13689,6 +13694,7 @@ d_sigaction='$d_sigaction'
 d_sigsetjmp='$d_sigsetjmp'
 d_socket='$d_socket'
 d_sockpair='$d_sockpair'
+d_sqrtl='$d_sqrtl'
 d_statblks='$d_statblks'
 d_statfs='$d_statfs'
 d_statfsflags='$d_statfsflags'
index 4f97fab..a53b9ed 100644 (file)
@@ -1314,6 +1314,10 @@ d_sockpair (d_socket.U):
        This variable conditionally defines the HAS_SOCKETPAIR symbol, which
        indicates that the BSD socketpair() is supported.
 
+d_sqrtl (d_sqrtl.U):
+       This variable conditionally defines the HAS_SQRTL symbol, which
+       indicates to the C program that the sqrtl() routine is available.
+
 d_statblks (d_statblks.U):
        This variable conditionally defines USE_STAT_BLOCKS
        if this system has a stat structure declaring
index b156c87..7b05c76 100644 (file)
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Sun Oct  3 02:17:38 EET DST 1999
+# Configuration time: Tue Oct 19 10:28:21 EET DST 1999
 # Configured by     : jhi
 # Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
@@ -30,10 +30,10 @@ afs='false'
 alignbytes='8'
 ansi2knr=''
 aphostname=''
-apiversion='5.00561'
+apiversion='5.00562'
 ar='ar'
-archlib='/opt/perl/lib/5.00561/alpha-dec_osf-thread'
-archlibexp='/opt/perl/lib/5.00561/alpha-dec_osf-thread'
+archlib='/opt/perl/lib/5.00562/alpha-dec_osf-thread'
+archlibexp='/opt/perl/lib/5.00562/alpha-dec_osf-thread'
 archname64=''
 archname='alpha-dec_osf-thread'
 archobjs=''
@@ -51,12 +51,12 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags=' '
-ccdlflags='  -Wl,-rpath,/opt/perl/lib/5.00561/alpha-dec_osf-thread/CORE'
+ccdlflags='  -Wl,-rpath,/opt/perl/lib/5.00562/alpha-dec_osf-thread/CORE'
 ccflags='-pthread -std -DLANGUAGE_C'
 ccsymbols='__LANGUAGE_C__=1 _LONGLONG=1 LANGUAGE_C=1 SYSTYPE_BSD=1'
 cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Sun Oct  3 02:17:38 EET DST 1999'
+cf_time='Tue Oct 19 10:28:21 EET DST 1999'
 chgrp=''
 chmod=''
 chown=''
@@ -308,6 +308,7 @@ d_sigaction='define'
 d_sigsetjmp='define'
 d_socket='define'
 d_sockpair='define'
+d_sqrtl='define'
 d_statblks='define'
 d_statfs='define'
 d_statfsflags='define'
@@ -367,7 +368,7 @@ dlext='so'
 dlsrc='dl_dlopen.xs'
 doublesize='8'
 drand01='drand48()'
-dynamic_ext='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
+dynamic_ext='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
 eagain='EAGAIN'
 ebcdic='undef'
 echo='echo'
@@ -376,7 +377,7 @@ emacs=''
 eunicefix=':'
 exe_ext=''
 expr='expr'
-extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re Errno'
+extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re Errno'
 fflushNULL='define'
 fflushall='undef'
 find=''
@@ -470,21 +471,21 @@ i_vfork='undef'
 ignore_versioned_solibs=''
 incpath=''
 inews=''
-installarchlib='/opt/perl/lib/5.00561/alpha-dec_osf-thread'
+installarchlib='/opt/perl/lib/5.00562/alpha-dec_osf-thread'
 installbin='/opt/perl/bin'
 installman1dir='/opt/perl/man/man1'
 installman3dir='/opt/perl/man/man3'
 installprefix='/opt/perl'
 installprefixexp='/opt/perl'
-installprivlib='/opt/perl/lib/5.00561'
+installprivlib='/opt/perl/lib/5.00562'
 installscript='/opt/perl/bin'
-installsitearch='/opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread'
+installsitearch='/opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread'
 installsitelib='/opt/perl/lib/site_perl'
 installstyle='lib'
 installusrbinperl='define'
 installvendorlib=''
 intsize='4'
-known_extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
+known_extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
 ksh=''
 large=''
 ld='ld'
@@ -574,8 +575,8 @@ pmake=''
 pr=''
 prefix='/opt/perl'
 prefixexp='/opt/perl'
-privlib='/opt/perl/lib/5.00561'
-privlibexp='/opt/perl/lib/5.00561'
+privlib='/opt/perl/lib/5.00562'
+privlibexp='/opt/perl/lib/5.00562'
 prototype='define'
 ptrsize='8'
 randbits='48'
@@ -619,8 +620,8 @@ sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE"
 sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 6 16 20 23 23 23 29 48 '
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0'
 signal_t='void'
-sitearch='/opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread'
-sitearchexp='/opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread'
+sitearch='/opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread'
+sitearchexp='/opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread'
 sitelib='/opt/perl/lib/site_perl'
 sitelibexp='/opt/perl/lib/site_perl'
 siteprefix='/opt/perl'
@@ -650,7 +651,7 @@ stdio_ptr='((fp)->_ptr)'
 stdio_stream_array='_iob'
 strings='/usr/include/string.h'
 submit=''
-subversion='61'
+subversion='62'
 sysman='/usr/man/man1'
 tail=''
 tar=''
@@ -690,11 +691,11 @@ vendorlib=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.00561'
+version='5.00562'
 vi=''
 voidflags='15'
 xlibpth='/usr/lib/386 /lib/386'
-xs_apiversion='5.00561'
+xs_apiversion='5.00562'
 zcat=''
 zip='zip'
 # Configure command line arguments.
@@ -714,8 +715,8 @@ config_arg10='-Dmyhostname=yourhost'
 config_arg11='-dE'
 PERL_REVISION=5
 PERL_VERSION=5
-PERL_SUBVERSION=61
-PERL_APIVERSION=5.00561
+PERL_SUBVERSION=62
+PERL_APIVERSION=5.00562
 CONFIGDOTSH=true
 # Variables propagated from previous config.sh file.
 pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
index 3321c5a..d4fec6a 100644 (file)
@@ -17,7 +17,7 @@
 /*
  * Package name      : perl5
  * Source directory  : .
- * Configuration time: Sun Oct  3 02:17:38 EET DST 1999
+ * Configuration time: Tue Oct 19 10:28:21 EET DST 1999
  * Configured by     : jhi
  * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
  *     This symbol contains the ~name expanded version of ARCHLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "/opt/perl/lib/5.00561/alpha-dec_osf-thread"           /**/
-#define ARCHLIB_EXP "/opt/perl/lib/5.00561/alpha-dec_osf-thread"               /**/
+#define ARCHLIB "/opt/perl/lib/5.00562/alpha-dec_osf-thread"           /**/
+#define ARCHLIB_EXP "/opt/perl/lib/5.00562/alpha-dec_osf-thread"               /**/
 
 /* BIN:
  *     This symbol holds the path of the bin directory where the package will
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/opt/perl/lib/5.00561"                /**/
-#define PRIVLIB_EXP "/opt/perl/lib/5.00561"            /**/
+#define PRIVLIB "/opt/perl/lib/5.00562"                /**/
+#define PRIVLIB_EXP "/opt/perl/lib/5.00562"            /**/
 
 /* SITEARCH:
  *     This symbol contains the name of the private library for this package.
  *     This symbol contains the ~name expanded version of SITEARCH, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "/opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread"                /**/
-#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread"            /**/
+#define SITEARCH "/opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread"                /**/
+#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread"            /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  */
 /*#define      USE_SFIO                / **/
 
+/* HAS_SQRTL:
+ *     This symbol, if defined, indicates that the sqrtl routine is
+ *     available to do long double square roots.
+ */
+#define HAS_SQRTL              /**/
+
 /* HAS_FSTATFS:
  *     This symbol, if defined, indicates that the fstatfs routine is
  *     available to stat filesystems of file descriptors.
 /* PERL_XS_APIVERSION:
  *     This variable contains the version of the oldest perl binary
  *     compatible with the present perl.  perl.c:incpush() and
- *     lib/lib.pm will automatically search in /opt/perl/lib/site_perl/5.00561/alpha-dec_osf-thread for older
+ *     lib/lib.pm will automatically search in /opt/perl/lib/site_perl/5.00562/alpha-dec_osf-thread for older
  *     directories across major versions back to xs_apiversion.
  *     This is only useful if you have a perl library directory tree
  *     structured like the default one.
  *     (presumably) be similar.
  *     See the INSTALL file for how this works.
  */
-#define PERL_XS_APIVERSION 5.00561 /* Change to string for tuples?*/
+#define PERL_XS_APIVERSION 5.00562 /* Change to string for tuples?*/
 #define PERL_PM_APIVERSION 5.005 /* Change to string for tuples?*/
 
 /* HAS_DRAND48_PROTO:
index 3aa55fd..c10e336 100644 (file)
@@ -2267,6 +2267,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_sfio       USE_SFIO                /**/
 
+/* HAS_SQRTL:
+ *     This symbol, if defined, indicates that the sqrtl routine is
+ *     available to do long double square roots.
+ */
+#$d_sqrtl HAS_SQRTL            /**/
+
 /* HAS_FSTATFS:
  *     This symbol, if defined, indicates that the fstatfs routine is
  *     available to stat filesystems of file descriptors.
diff --git a/perl.h b/perl.h
index eb88c39..501c635 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1077,9 +1077,7 @@ Free_t   Perl_mfree (Malloc_t where);
 #define PTR2NV(p)      NUM2PTR(NV,p)
   
 #ifdef USE_LONG_DOUBLE
-#  if defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE)
-#    define LDoub_t long double
-#  else
+#  if !(defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE))
 #     undef USE_LONG_DOUBLE /* Ouch! */
 #  endif
 #endif
@@ -1123,43 +1121,48 @@ Free_t   Perl_mfree (Malloc_t where);
    default value for printing floating point numbers in Gconvert.
    (see config.h)
 */
-#ifdef I_LIMITS
-#include <limits.h>
-#endif
-#ifdef I_FLOAT
-#include <float.h>
-#endif
-#ifndef HAS_LDBL_DIG
-#if LONG_DOUBLESIZE == 10
-#define LDBL_DIG 18 /* assume IEEE */
-#else
-#if LONG_DOUBLESIZE == 16
-#define LDBL_DIG 33 /* assume IEEE */
-#else
-#if LONG_DOUBLESIZE == DOUBLESIZE
-#define LDBL_DIG DBL_DIG /* bummer */
-#endif
-#endif
-#endif
-#endif
+# ifdef I_LIMITS
+#   include <limits.h>
+# endif
+# ifdef I_FLOAT
+#  include <float.h>
+# endif
+# ifndef HAS_LDBL_DIG
+#  if LONG_DOUBLESIZE == 10
+#   define LDBL_DIG 18 /* assume IEEE */
+#  else
+#   if LONG_DOUBLESIZE == 12
+#    define LDBL_DIG 18 /* gcc? */
+#   else
+#    if LONG_DOUBLESIZE == 16
+#     define LDBL_DIG 33 /* assume IEEE */
+#    else
+#     if LONG_DOUBLESIZE == DOUBLESIZE
+#      define LDBL_DIG DBL_DIG /* bummer */
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
 #endif
 
 #ifdef USE_LONG_DOUBLE
-#   define HAS_LDOUB
-    typedef LDoub_t NV;
+    typedef long double NV;
 #   define NVSIZE LONG_DOUBLESIZE
 #   define NV_DIG LDBL_DIG
-#   define Perl_modf modfl
-#   define Perl_frexp frexpl
-#   define Perl_cos cosl
-#   define Perl_sin sinl
-#   define Perl_sqrt sqrtl
-#   define Perl_exp expl
-#   define Perl_log logl
-#   define Perl_atan2 atan2l
-#   define Perl_pow powl
-#   define Perl_floor floorl
-#   define Perl_fmod fmodl
+#   ifdef HAS_SQRTL
+#       define Perl_modf modfl
+#       define Perl_frexp frexpl
+#       define Perl_cos cosl
+#       define Perl_sin sinl
+#       define Perl_sqrt sqrtl
+#       define Perl_exp expl
+#       define Perl_log logl
+#       define Perl_atan2 atan2l
+#       define Perl_pow powl
+#       define Perl_floor floorl
+#       define Perl_fmod fmodl
+#   endif
 #else
     typedef double NV;
 #   define NVSIZE DOUBLESIZE