This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Part 1 of a big cleanup action based on the upcoming dist-4.0
[metaconfig.git] / U / compline / ptrsize.U
1 ?RCS: $Id: ptrsize.U,v 3.0.1.1 1994/10/29 16:28:19 ram Exp $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4 ?RCS: 
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
10 ?RCS:
11 ?RCS: $Log: ptrsize.U,v $
12 ?RCS: Revision 3.0.1.1  1994/10/29  16:28:19  ram
13 ?RCS: patch36: added ?F: line for metalint file checking
14 ?RCS:
15 ?RCS: Revision 3.0  1993/08/18  12:09:37  ram
16 ?RCS: Baseline for dist 3.0 netwide release.
17 ?RCS:
18 ?MAKE:ptrsize: cat rm_try Myread Compile voidflags run use64bitall i_stdlib d_quad
19 ?MAKE:  -pick add $@ %<
20 ?S:ptrsize:
21 ?S:     This variable contains the value of the PTRSIZE symbol, which
22 ?S:     indicates to the C program how many bytes there are in a pointer.
23 ?S:.
24 ?C:PTRSIZE:
25 ?C:     This symbol contains the size of a pointer, so that the C preprocessor
26 ?C:     can make decisions based on it.  It will be sizeof(void *) if
27 ?C:     the compiler supports (void *); otherwise it will be
28 ?C:     sizeof(char *).
29 ?C:.
30 ?H:#define PTRSIZE $ptrsize             /**/
31 ?H:.
32 ?LINT:extern use64bitint
33 : check for length of pointer
34 echo " "
35 case "$ptrsize" in
36 '')
37         echo "Checking to see how big your pointers are..." >&4
38         if test "$voidflags" -gt 7; then
39                 echo '#define VOID_PTR char *' > try.c
40         else
41                 echo '#define VOID_PTR void *' > try.c
42         fi
43         $cat >>try.c <<EOCP
44 #include <stdio.h>
45 #$i_stdlib I_STDLIB
46 #ifdef I_STDLIB
47 #include <stdlib.h>
48 #endif
49 int main()
50 {
51     printf("%d\n", (int)sizeof(VOID_PTR));
52     exit(0);
53 }
54 EOCP
55         set try
56         if eval $compile_ok; then
57                 ptrsize=`$run ./try`
58                 echo "Your pointers are $ptrsize bytes long."
59         else
60                 dflt='4'
61                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
62                 rp="What is the size of a pointer (in bytes)?"
63                 . ./myread
64                 ptrsize="$ans"
65         fi
66         ;;
67 esac
68 $rm_try
69 case "$use64bitall" in
70 "$define"|true|[yY]*)
71         case "$ptrsize" in
72         4)      cat <<EOM >&4
73
74 *** You have chosen a maximally 64-bit build,
75 *** but your pointers are only 4 bytes wide.
76 *** Please rerun Configure without -Duse64bitall.
77 EOM
78                 case "$d_quad" in
79                 define)
80                         cat <<EOM >&4
81 *** Since you have quads, you could possibly try with -Duse64bitint.
82 EOM
83                         ;;
84                 esac
85                 cat <<EOM >&4
86 *** Cannot continue, aborting.
87
88 EOM
89
90                 exit 1
91                 ;;
92         esac
93         ;;
94 esac
95
96