Commit | Line | Data |
---|---|---|
959f3c4c JH |
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: | |
3b148aa9 | 18 | ?MAKE:ptrsize: cat rm Myread Compile voidflags run use64bitall i_stdlib |
959f3c4c JH |
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:. | |
89d9cf69 | 32 | ?LINT:change use64bitall |
88dc2d68 JH |
33 | ?LINT:extern use64bitint |
34 | ?LINT:change use64bitint | |
959f3c4c JH |
35 | : check for length of pointer |
36 | echo " " | |
37 | case "$ptrsize" in | |
38 | '') | |
0fdea05a | 39 | echo "Checking to see how big your pointers are..." >&4 |
959f3c4c JH |
40 | if test "$voidflags" -gt 7; then |
41 | echo '#define VOID_PTR char *' > try.c | |
42 | else | |
43 | echo '#define VOID_PTR void *' > try.c | |
44 | fi | |
fe2ade02 | 45 | $cat >>try.c <<EOCP |
959f3c4c | 46 | #include <stdio.h> |
3b148aa9 JH |
47 | #$i_stdlib I_STDLIB |
48 | #ifdef I_STDLIB | |
49 | #include <stdlib.h> | |
50 | #endif | |
959f3c4c JH |
51 | int main() |
52 | { | |
37a56d0d | 53 | printf("%d\n", (int)sizeof(VOID_PTR)); |
b8fb7a32 | 54 | exit(0); |
959f3c4c JH |
55 | } |
56 | EOCP | |
57 | set try | |
58 | if eval $compile_ok; then | |
0f00356b | 59 | ptrsize=`$run ./try` |
0fdea05a | 60 | echo "Your pointers are $ptrsize bytes long." |
959f3c4c JH |
61 | else |
62 | dflt='4' | |
63 | echo "(I can't seem to compile the test program. Guessing...)" >&4 | |
64 | rp="What is the size of a pointer (in bytes)?" | |
65 | . ./myread | |
66 | ptrsize="$ans" | |
67 | fi | |
68 | ;; | |
69 | esac | |
70 | $rm -f try.c try | |
88dc2d68 JH |
71 | case "$use64bitall" in |
72 | "$define"|true|[yY]*) | |
73 | case "$ptrsize" in | |
74 | 4) cat <<EOM >&4 | |
75 | ||
4b62dc2e JH |
76 | *** You have chosen a maximally 64-bit build, |
77 | *** but your pointers are only 4 bytes wide. | |
78 | *** Cannot continue, aborting. | |
88dc2d68 JH |
79 | |
80 | EOM | |
4b62dc2e | 81 | exit 1 |
88dc2d68 JH |
82 | ;; |
83 | esac | |
84 | ;; | |
85 | esac | |
86 | ||
959f3c4c | 87 |