This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
4386b9b78cb24840d885d83f589aef74ca0df6a5
[metaconfig.git] / U / a_dvisory / quadtype.U
1 ?RCS: $Id$
2 ?RCS:
3 ?RCS: Copyright (c) 1999 Jarkko Hietaniemi
4 ?RCS:
5 ?RCS: You may distribute under the terms of either the GNU General Public
6 ?RCS: License or the Artistic License, as specified in the README file.
7 ?RCS:
8 ?MAKE:quadtype uquadtype quadcase: \
9         longsize intsize d_longlong longlongsize uselonglong d_int64t \
10         Inhdr Setvar
11 ?MAKE:  -pick add $@ %<
12 ?S:quadtype:
13 ?S:     This variable defines Quad_t to be something like long, int, 
14 ?S:     long long, int64_t, or whatever type is used for 64-bit integers.
15 ?S:.
16 ?S:quadcase:
17 ?S:     This variable, if defined, encodes the type of a quad:
18 ?S:     1 = int, 2 = long, 3 = long long, 4 = int64_t.
19 ?S:.
20 ?S:uquadtype:
21 ?S:     This variable defines Uquad_t to be something like unsigned long,
22 ?S:     unsigned int, unsigned long long, uint64_t, or whatever type is
23 ?S:     used for 64-bit integers.
24 ?S:.
25 ?C:Quad_t:
26 ?C:     This symbol holds the type used for 64-bit integers.
27 ?C:     It can be int, long, long long, int64_t etc...
28 ?C:.
29 ?C:QUADCASE:
30 ?C:     This symbol, if defined, encodes the type of a quad:
31 ?C:     1 = int, 2 = long, 3 = long long, 4 = int64_t.
32 ?C:.
33 ?C:Uquad_t:
34 ?C:     This symbol holds the type used for unsigned 64-bit integers.
35 ?C:     It can be unsigned int, unsigned long, unsigned long long,
36 ?C:     uint64_t etc...
37 ?C:.
38 ?H:#define Quad_t $quadtype
39 ?H:#define Uquad_t $uquadtype
40 ?H:#define QUADCASE $quadcase
41 ?H:.
42 ?LINT:set quadtype
43 ?LINT:set uquadtype
44
45 echo " "
46 echo "Checking which 64-bit integer type to use..." >&4
47
48 case "$intsize" in
49 8) val=int
50    set quadtype
51    eval $setvar
52    val='"unsigned int"'
53    set uquadtype
54    eval $setvar
55    quadcase=1
56    ;;
57 *) case "$longsize" in
58    8) val=long
59       set quadtype
60       eval $setvar
61       val='"unsigned long"'
62       set uquadtype
63       eval $setvar
64       quadcase=2
65       ;;
66    *) case "$uselonglong:$d_longlong:$longlongsize" in
67       define:define:8)
68         val='"long long"'
69         set quadtype
70         eval $setvar
71         val='"unsigned long long"'
72         set uquadtype
73         eval $setvar
74         quadcase=3
75         ;;
76       *) case "$d_int64t" in
77          define)
78            val=int64_t
79            set quadtype
80            eval $setvar
81            val=uint64_t
82            set uquadtype
83            eval $setvar
84            quadcase=4
85            ;;
86          esac
87          ;;
88       esac
89       ;;
90    esac
91    ;;
92 esac
93
94 case "$quadtype" in
95 '') echo "Alas, no 64-bit integer types in sight."    >&4 ;;
96 *)  echo "Using '$quadtype' for 64-bit integers." >&4 ;;
97 esac
98