This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Backport all Configure patches 17671 .. 17881
authorH.Merijn Brand <h.m.brand@xs4all.nl>
Tue, 10 Sep 2002 17:31:36 +0000 (17:31 +0000)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Tue, 10 Sep 2002 17:31:36 +0000 (17:31 +0000)
to the metaunits

p4raw-id: //depot/metaconfig@17893

U/installdirs/prefix.U
U/modified/libc.U
U/modified/usenm.U
U/modified/voidflags.U
U/perl/Extensions.U
U/perl/d_modfl.U
U/perl/gccvers.U

index d4d8753..519e750 100644 (file)
@@ -49,6 +49,9 @@ case "$prefix" in
 '')
        dflt=`./loc . /usr/local /usr/local /local /opt /usr`
        ;;
+*?/)
+       dflt=`echo "$prefix" | sed 's/.$//'`
+       ;;
 *)
        dflt="$prefix"
        ;;
index 411de1f..8d48156 100644 (file)
@@ -384,12 +384,19 @@ else
        fi
 fi
 nm_extract="$com"
-if $test -f /lib/syscalls.exp; then
+case "$PASE" in
+define)
+    echo " "
+    echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
+    dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
+    ;;
+*)  if $test -f /lib/syscalls.exp; then
        echo " "
        echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
-       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
-fi
-?X: remember, indentation is wrong on purpose--RAM
+       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
+    fi
+    ;;
+esac
 ;;
 esac
 $rm -f libnames libpath
index 0f9dfce..3eccb47 100644 (file)
@@ -56,7 +56,7 @@ case "$usenm" in
        esac
        case "$dflt" in
        '') 
-               if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
+               if $test "$osname" = aix -a "X$PASE" != "$Xdefine" -a ! -f /lib/syscalls.exp; then
                        echo " "
                        echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
                        echo "'nm' won't be sufficient on this sytem." >&4
index c865412..399e9bc 100644 (file)
@@ -57,9 +57,6 @@
 ?H:?%<:#endif
 ?H:.
 ?W:%<:void
-?INIT:: full support for void wanted by default
-?INIT:defvoidused=15
-?INIT:
 ?LINT:describe defvoidused
 ?LINT:known void M_VOID VOIDUSED
 : check for void type
index 8d8bae0..cfedf19 100644 (file)
@@ -257,7 +257,19 @@ Note that DynaLoader is always built and need not be mentioned here.
 
 EOM
        case "$dynamic_ext" in
-       '') dflt="$avail_ext" ;;
+       '')
+               : Exclude those listed in static_ext
+               dflt=''
+               for xxx in $avail_ext; do
+                       case " $static_ext " in
+                       *" $xxx "*) ;;
+                       *) dflt="$dflt $xxx" ;;
+                       esac
+               done
+               set X $dflt
+               shift
+               dflt="$*"
+               ;;
        *)      dflt="$dynamic_ext"
                # Perhaps we are reusing an old out-of-date config.sh.
                case "$hint" in
index ada1a84..2e4b4c5 100644 (file)
@@ -5,13 +5,19 @@
 ?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_modfl d_modfl_pow32_bug: Inlibc Compile cat rm sPRIfldbl d_longdbl \
-       osname gccversion ccflags run
+?MAKE:d_modfl d_modflproto d_modfl_pow32_bug: Inlibc Compile Hasproto cat \
+       rm sPRIfldbl d_longdbl osname gccversion ccflags run
 ?MAKE: -pick add $@ %<
 ?S:d_modfl:
 ?S:    This variable conditionally defines the HAS_MODFL symbol, which
 ?S:    indicates to the C program that the modfl() routine is available.
 ?S:.
+?S:d_modflproto:
+?S:     This variable conditionally defines the HAS_MODFL_PROTO symbol,
+?S:     which indicates to the C program that the system provides
+?S:     a prototype for the modfl() function.  Otherwise, it is
+?S:     up to the program to supply one.
+?S:.
 ?S:d_modfl_pow32_bug:
 ?S:    This variable conditionally defines the HAS_MODFL_POW32_BUG symbol,
 ?S:    which indicates that modfl() is broken for long doubles >= pow(2, 32).
 ?C:    available to split a long double x into a fractional part f and
 ?C:    an integer part i such that |f| < 1.0 and (f + i) = x.
 ?C:.
+?C:HAS_MODFL_PROTO:
+?C:     This symbol, if defined, indicates that the system provides
+?C:     a prototype for the modfl() function.  Otherwise, it is up
+?C:     to the program to supply one.
+?C:.
 ?C:HAS_MODFL_POW32_BUG:
 ?C:    This symbol, if defined, indicates that the modfl routine is
 ?C:    broken for long doubles >= pow(2, 32).
@@ -32,6 +43,7 @@
 ?C:    release 2.2.2 is known to be okay.
 ?C:.
 ?H:#$d_modfl HAS_MODFL         /**/
+?H:#$d_modfl HAS_MODFL_PROTO           /**/
 ?H:#$d_modfl_pow32_bug HAS_MODFL_POW32_BUG             /**/
 ?H:.
 ?T:foo saveccflags
 set modfl d_modfl
 eval $inlibc
 
+: see if prototype for modfl is available
+echo " "
+set d_modflproto modfl math.h
+eval $hasproto
+
 d_modfl_pow32_bug="$undef"
 
 case "$d_longdbl$d_modfl" in
@@ -52,6 +69,14 @@ EOM
 $cat >try.c <<EOCP
 #include <math.h> 
 #include <stdio.h>
+EOCP
+if $test "X$d_modflproto" != "X$define"; then
+       $cat >>try.c <<EOCP
+/* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
+long double modfl (long double, long double *);
+EOCP
+fi
+$cat >>try.c <<EOCP
 int main() {
     long double nv = 4294967303.15;
     long double v, w;
index 1921cc2..e92394c 100644 (file)
@@ -108,14 +108,17 @@ case "$ccname" in
 '') ccname="$cc" ;;
 esac
 
-# gcc 3.1 complains about adding -Idirectories that it already knows about,
+# gcc 3.* complain about adding -Idirectories that they already know about,
 # so we will take those off from locincpth.
 case "$gccversion" in
 3*)
     echo "main(){}">try.c
-    for incdir in `$cc -v -c try.c 2>&1 | \
-       sed '1,/^#include <\.\.\.>/d;/^End of search list/,$d;s/^ //'` ; do
-       locincpth=`echo $locincpth | sed s!$incdir!!`
+    for incdir in $locincpth; do
+       warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
+            grep '^cc1: warning: changing search order '`
+       if test "X$warn" != X; then
+          locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
+       fi
     done
     $rm -f try try.*
 esac