This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add the files from dist/meta to perl's repo
[metaconfig.git] / dist / U / intsize.U
CommitLineData
d8875586
MBT
1?RCS: $Id$
2?RCS:
3?RCS: Copyright (c) 1991-1997, 2004-2006, 2012 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 4.0.
10?RCS:
11?MAKE:intsize longsize shortsize: Assert Myread cat rm +cc +ccflags echo n c
12?MAKE: -pick add $@ %<
13?S:intsize:
14?S: This variable contains the value of the INTSIZE symbol, which
15?S: indicates to the C program how many bytes there are in an int.
16?S:.
17?S:longsize:
18?S: This variable contains the value of the LONGSIZE symbol, which
19?S: indicates to the C program how many bytes there are in a long.
20?S:.
21?S:shortsize:
22?S: This variable contains the value of the SHORTSIZE symbol which
23?S: indicates to the C program how many bytes there are in a short.
24?S:.
25?C:INTSIZE:
26?C: This symbol contains the value of sizeof(int) so that the C
27?C: preprocessor can make decisions based on it.
28?C:.
29?C:LONGSIZE:
30?C: This symbol contains the value of sizeof(long) so that the C
31?C: preprocessor can make decisions based on it.
32?C:.
33?C:SHORTSIZE:
34?C: This symbol contains the value of sizeof(short) so that the C
35?C: preprocessor can make decisions based on it.
36?C:.
37?H:#define INTSIZE $intsize
38?H:#define LONGSIZE $longsize
39?H:#define SHORTSIZE $shortsize
40?H:.
41?T:types t size var
42?LINT: set shortsize intsize longsize
43: check for lengths of integral types
44echo " "
45types=''
46@if SHORTSIZE || shortsize
47types="$types short"
48@end
49@if INTSIZE || intsize
50types="$types int"
51@end
52@if LONGSIZE || longsize
53types="$types long"
54@end
55for t in $types; do
56 $echo $n "Checking to see how big your ${t}s are...$c" >&4
57 for size in 2 4 8 16 error; do
58 $cat >try.c <<EOCP
59#include "static_assert.h"
60$t foo;
61int main()
62{
63 STATIC_ASSERT($size == sizeof(foo));
64 return 0;
65}
66EOCP
67 if $cc -c $ccflags try.c >/dev/null 2>&1; then break; fi
68 done
69 var=${t}size
70 case "$size" in
71 error)
72 echo " cannot compute it." >&4
73 case $t in
74 short) dflt=2;;
75 int) dflt=4;;
76 long) dflt=4;;
77 esac
78 rp="What is the size of the \"$t\" type (in bytes)?"
79 . ./myread
80 eval $var="$ans"
81 ;;
82 *)
83 echo " $size bytes." >&4
84 eval $var=$size
85 ;;
86 esac
87done
88$rm -f try.*
89