This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
metaconfig unit changes for #19273.
[metaconfig.git] / U / compline / ptrsize.U
index 7be65a2..d710a68 100644 (file)
@@ -15,7 +15,7 @@
 ?RCS: Revision 3.0  1993/08/18  12:09:37  ram
 ?RCS: Baseline for dist 3.0 netwide release.
 ?RCS:
-?MAKE:ptrsize: cat rm Myread Compile voidflags
+?MAKE:ptrsize: cat rm Myread Compile voidflags run use64bitall i_stdlib
 ?MAKE: -pick add $@ %<
 ?S:ptrsize:
 ?S:    This variable contains the value of the PTRSIZE symbol, which
@@ -29,7 +29,9 @@
 ?C:.
 ?H:#define PTRSIZE $ptrsize            /**/
 ?H:.
-?F:!try
+?LINT:change use64bitall
+?LINT:extern use64bitint
+?LINT:change use64bitint
 : check for length of pointer
 echo " "
 case "$ptrsize" in
@@ -40,8 +42,12 @@ case "$ptrsize" in
        else
                echo '#define VOID_PTR void *' > try.c
        fi
-       $cat >>try.c <<'EOCP'
+       $cat >>try.c <<EOCP
 #include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
 int main()
 {
     printf("%d\n", (int)sizeof(VOID_PTR));
@@ -50,7 +56,7 @@ int main()
 EOCP
        set try
        if eval $compile_ok; then
-               ptrsize=`./try`
+               ptrsize=`$run ./try`
                echo "Your pointers are $ptrsize bytes long."
        else
                dflt='4'
@@ -62,4 +68,20 @@ EOCP
        ;;
 esac
 $rm -f try.c try
+case "$use64bitall" in
+"$define"|true|[yY]*)
+       case "$ptrsize" in
+       4)      cat <<EOM >&4
+
+*** You have chosen a maximally 64-bit build,
+*** but your pointers are only 4 bytes wide.
+*** Cannot continue, aborting.
+
+EOM
+               exit 1
+               ;;
+       esac
+       ;;
+esac
+