This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
metaconfig unit change for #18932.
[metaconfig.git] / U / a_dvisory / intsize.U
CommitLineData
959f3c4c
JH
1?RCS: $Id: intsize.U,v 3.0.1.2 1997/02/28 15:55:26 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: intsize.U,v $
12?RCS: Revision 3.0.1.2 1997/02/28 15:55:26 ram
13?RCS: patch61: avoid prompting the user if the test runs ok
14?RCS: patch61: moved code from longsize.U into there
15?RCS: patch61: new tests for shortsize as well
16?RCS:
17?RCS: Revision 3.0.1.1 1994/10/29 16:21:06 ram
18?RCS: patch36: added ?F: line for metalint file checking
19?RCS:
20?RCS: Revision 3.0 1993/08/18 12:08:52 ram
21?RCS: Baseline for dist 3.0 netwide release.
22?RCS:
3b148aa9 23?MAKE:intsize longsize shortsize: Compile Myread cat rm run i_stdlib
959f3c4c
JH
24?MAKE: -pick add $@ %<
25?S:intsize:
26?S: This variable contains the value of the INTSIZE symbol, which
27?S: indicates to the C program how many bytes there are in an int.
28?S:.
29?S:longsize:
30?S: This variable contains the value of the LONGSIZE symbol, which
31?S: indicates to the C program how many bytes there are in a long.
32?S:.
33?S:shortsize:
34?S: This variable contains the value of the SHORTSIZE symbol which
35?S: indicates to the C program how many bytes there are in a short.
36?S:.
37?C:INTSIZE:
38?C: This symbol contains the value of sizeof(int) so that the C
39?C: preprocessor can make decisions based on it.
40?C:.
41?C:LONGSIZE:
42?C: This symbol contains the value of sizeof(long) so that the C
43?C: preprocessor can make decisions based on it.
44?C:.
45?C:SHORTSIZE:
46?C: This symbol contains the value of sizeof(short) so that the C
47?C: preprocessor can make decisions based on it.
48?C:.
49?H:#define INTSIZE $intsize /**/
50?H:#define LONGSIZE $longsize /**/
51?H:#define SHORTSIZE $shortsize /**/
52?H:.
959f3c4c
JH
53: check for lengths of integral types
54echo " "
55case "$intsize" in
56'')
57 echo "Checking to see how big your integers are..." >&4
d687b8cb 58 $cat >try.c <<EOCP
959f3c4c 59#include <stdio.h>
3b148aa9
JH
60#$i_stdlib I_STDLIB
61#ifdef I_STDLIB
62#include <stdlib.h>
63#endif
959f3c4c
JH
64int main()
65{
66@if INTSIZE || intsize
37a56d0d 67 printf("intsize=%d;\n", (int)sizeof(int));
959f3c4c
JH
68@end
69@if LONGSIZE || longsize
37a56d0d 70 printf("longsize=%d;\n", (int)sizeof(long));
959f3c4c
JH
71@end
72@if SHORTSIZE || shortsize
37a56d0d 73 printf("shortsize=%d;\n", (int)sizeof(short));
959f3c4c
JH
74@end
75 exit(0);
76}
77EOCP
0f00356b
JH
78 set try
79 if eval $compile_ok && $run ./try > /dev/null; then
80 eval `$run ./try`
959f3c4c
JH
81@if INTSIZE || intsize
82 echo "Your integers are $intsize bytes long."
83@end
84@if LONGSIZE || longsize
85 echo "Your long integers are $longsize bytes long."
86@end
87@if SHORTSIZE || shortsize
88 echo "Your short integers are $shortsize bytes long."
89@end
90 else
91 $cat >&4 <<EOM
92!
93Help! I can't compile and run the intsize test program: please enlighten me!
94(This is probably a misconfiguration in your system or libraries, and
95you really ought to fix it. Still, I'll try anyway.)
96!
97EOM
98@if INTSIZE || intsize
99 dflt=4
100 rp="What is the size of an integer (in bytes)?"
101 . ./myread
102 intsize="$ans"
103@end
104@if LONGSIZE || longsize
105 dflt=$intsize
106 rp="What is the size of a long integer (in bytes)?"
107 . ./myread
108 longsize="$ans"
109@end
110@if SHORTSIZE || shortsize
111 dflt=2
112 rp="What is the size of a short integer (in bytes)?"
113 . ./myread
114 shortsize="$ans"
115@end
116 fi
117 ;;
118esac
0f00356b 119$rm -f try try.*
959f3c4c 120