?RCS: $Id: ptrsize.U,v 3.0.1.1 1994/10/29 16:28:19 ram Exp $ ?RCS: ?RCS: Copyright (c) 1991-1993, Raphael Manfredi ?RCS: ?RCS: You may redistribute only under the terms of the Artistic Licence, ?RCS: as specified in the README file that comes with the distribution. ?RCS: You may reuse parts of this distribution only within the terms of ?RCS: that same Artistic Licence; a copy of which may be found at the root ?RCS: of the source tree for dist 3.0. ?RCS: ?RCS: $Log: ptrsize.U,v $ ?RCS: Revision 3.0.1.1 1994/10/29 16:28:19 ram ?RCS: patch36: added ?F: line for metalint file checking ?RCS: ?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 run use64bitall i_stdlib ?MAKE: -pick add $@ %< ?S:ptrsize: ?S: This variable contains the value of the PTRSIZE symbol, which ?S: indicates to the C program how many bytes there are in a pointer. ?S:. ?C:PTRSIZE: ?C: This symbol contains the size of a pointer, so that the C preprocessor ?C: can make decisions based on it. It will be sizeof(void *) if ?C: the compiler supports (void *); otherwise it will be ?C: sizeof(char *). ?C:. ?H:#define PTRSIZE $ptrsize /**/ ?H:. ?LINT:change use64bitall ?LINT:extern use64bitint ?LINT:change use64bitint : check for length of pointer echo " " case "$ptrsize" in '') echo "Checking to see how big your pointers are..." >&4 if test "$voidflags" -gt 7; then echo '#define VOID_PTR char *' > try.c else echo '#define VOID_PTR void *' > try.c fi $cat >>try.c < #$i_stdlib I_STDLIB #ifdef I_STDLIB #include #endif int main() { printf("%d\n", (int)sizeof(VOID_PTR)); exit(0); } EOCP set try if eval $compile_ok; then ptrsize=`$run ./try` echo "Your pointers are $ptrsize bytes long." else dflt='4' echo "(I can't seem to compile the test program. Guessing...)" >&4 rp="What is the size of a pointer (in bytes)?" . ./myread ptrsize="$ans" fi ;; esac $rm -f try.c try case "$use64bitall" in "$define"|true|[yY]*) case "$ptrsize" in 4) cat <&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