This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add HAS_QUAD ($Config{d_quad}); use it.
[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:d_quad quadtype uquadtype quadcase: \
9         longsize intsize d_longlong longlongsize uselonglong d_int64t \
10         Inhdr Setvar
11 ?MAKE:  -pick add $@ %<
12 ?S:d_quad:
13 ?S:     This variable, if defined, tells that there's a 64-bit integer type,
14 ?S:     quadtype.
15 ?S:.
16 ?S:quadtype:
17 ?S:     This variable defines Quad_t to be something like long, int, 
18 ?S:     long long, int64_t, or whatever type is used for 64-bit integers.
19 ?S:.
20 ?S:quadcase:
21 ?S:     This variable, if defined, encodes the type of a quad:
22 ?S:     1 = int, 2 = long, 3 = long long, 4 = int64_t.
23 ?S:.
24 ?S:uquadtype:
25 ?S:     This variable defines Uquad_t to be something like unsigned long,
26 ?S:     unsigned int, unsigned long long, uint64_t, or whatever type is
27 ?S:     used for 64-bit integers.
28 ?S:.
29 ?C:HAS_QUAD:
30 ?C:     This symbol, if defined, tells that there's a 64-bit integer type,
31 ?C:     Quad_t.
32 ?C:.
33 ?C:Quad_t:
34 ?C:     This symbol holds the type used for 64-bit integers.
35 ?C:     It can be int, long, long long, int64_t etc...
36 ?C:.
37 ?C:QUADCASE:
38 ?C:     This symbol, if defined, encodes the type of a quad:
39 ?C:     1 = int, 2 = long, 3 = long long, 4 = int64_t.
40 ?C:.
41 ?C:Uquad_t:
42 ?C:     This symbol holds the type used for unsigned 64-bit integers.
43 ?C:     It can be unsigned int, unsigned long, unsigned long long,
44 ?C:     uint64_t etc...
45 ?C:.
46 ?H:#$d_quad HAS_QUAD    /**/
47 ?H:#$d_quad Quad_t $quadtype    /**/
48 ?H:#$d_quad Uquad_t $uquadtype  /**/
49 ?H:#$d_quad QUADCASE $quadcase  /**/
50 ?H:.
51 ?LINT:set quadtype
52 ?LINT:set uquadtype
53
54 echo " "
55 echo "Checking which 64-bit integer type to use..." >&4
56
57 case "$intsize" in
58 8) val=int
59    set quadtype
60    eval $setvar
61    val='"unsigned int"'
62    set uquadtype
63    eval $setvar
64    quadcase=1
65    ;;
66 *) case "$longsize" in
67    8) val=long
68       set quadtype
69       eval $setvar
70       val='"unsigned long"'
71       set uquadtype
72       eval $setvar
73       quadcase=2
74       ;;
75    *) case "$uselonglong:$d_longlong:$longlongsize" in
76       define:define:8)
77         val='"long long"'
78         set quadtype
79         eval $setvar
80         val='"unsigned long long"'
81         set uquadtype
82         eval $setvar
83         quadcase=3
84         ;;
85       *) case "$d_int64t" in
86          define)
87            val=int64_t
88            set quadtype
89            eval $setvar
90            val=uint64_t
91            set uquadtype
92            eval $setvar
93            quadcase=4
94            ;;
95          esac
96          ;;
97       esac
98       ;;
99    esac
100    ;;
101 esac
102
103 case "$quadtype" in
104 '')     echo "Alas, no 64-bit integer types in sight." >&4
105         d_quad="$undef"
106         ;;
107 *)      echo "Using '$quadtype' for 64-bit integers." >&4
108         d_quad="$define"
109         ;;
110 esac
111