This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Part 3 of a big cleanup action based on the upcoming dist-4.0
[metaconfig.git] / U / perl / use64bits.U
1 ?RCS: $Id$
2 ?RCS:
3 ?RCS: Copyright (c) 1998 Andy Dougherty
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:use64bitint use64bitall archname64: Myread Oldconfig Setvar test \
9         usemorebits longsize ccflags d_quad
10 ?MAKE:  -pick add $@ %<
11 ?Y:TOP
12 ?S:use64bitint:
13 ?S:     This variable conditionally defines the USE_64_BIT_INT symbol,
14 ?S:     and indicates that 64-bit integer types should be used
15 ?S:     when available.  The minimal possible 64-bitness
16 ?S:     is employed, just enough to get 64-bit integers into Perl.
17 ?S:     This may mean using for example "long longs", while your memory
18 ?S:     may still be limited to 2 gigabytes.
19 ?S:.
20 ?S:use64bitall:
21 ?S:     This variable conditionally defines the USE_64_BIT_ALL symbol,
22 ?S:     and indicates that 64-bit integer types should be used
23 ?S:     when available.  The maximal possible
24 ?S:     64-bitness is employed: LP64 or ILP64, meaning that you will
25 ?S:     be able to use more than 2 gigabytes of memory.  This mode is
26 ?S:     even more binary incompatible than USE_64_BIT_INT. You may not
27 ?S:     be able to run the resulting executable in a 32-bit CPU at all or
28 ?S:     you may need at least to reboot your OS to 64-bit mode.
29 ?S:.
30 ?S:archname64:
31 ?S:     This variable is used for the 64-bitness part of $archname.
32 ?S:.
33 ?C:USE_64_BIT_INT:
34 ?C:     This symbol, if defined, indicates that 64-bit integers should
35 ?C:     be used when available.  If not defined, the native integers
36 ?C:     will be employed (be they 32 or 64 bits).  The minimal possible
37 ?C:     64-bitness is used, just enough to get 64-bit integers into Perl.
38 ?C:     This may mean using for example "long longs", while your memory
39 ?C:     may still be limited to 2 gigabytes.
40 ?C:.
41 ?C:USE_64_BIT_ALL:
42 ?C:     This symbol, if defined, indicates that 64-bit integers should
43 ?C:     be used when available.  If not defined, the native integers
44 ?C:     will be used (be they 32 or 64 bits).  The maximal possible
45 ?C:     64-bitness is employed: LP64 or ILP64, meaning that you will
46 ?C:     be able to use more than 2 gigabytes of memory.  This mode is
47 ?C:     even more binary incompatible than USE_64_BIT_INT. You may not
48 ?C:     be able to run the resulting executable in a 32-bit CPU at all or
49 ?C:     you may need at least to reboot your OS to 64-bit mode.
50 ?C:.
51 ?H:?%<:#ifndef USE_64_BIT_INT
52 ?H:?%<:#$use64bitint    USE_64_BIT_INT          /**/
53 ?H:?%<:#endif
54 ?H:.
55 ?H:?%<:#ifndef USE_64_BIT_ALL
56 ?H:?%<:#$use64bitall    USE_64_BIT_ALL          /**/
57 ?H:?%<:#endif
58 ?H:.
59 ?INIT:archname64=''
60 ?LINT:extern ccflags
61 ?LINT:use usemorebits
62 ?LINT:extern use64bits
63 ?LINT:extern uselonglong
64 ?LINT:extern uselonglongs
65 ?LINT:extern use64bitints
66 ?LINT:extern use64bitsint
67 ?LINT:extern use64bitsall
68 ?F:!use64bitint.cbu
69 ?F:!use64bitall.cbu
70
71 case "$uselonglong" in
72 "$define"|true|[yY]*)
73         cat <<EOM >&4
74
75 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
76 EOM
77         use64bitint="$define"
78         ;;
79 esac
80 case "$use64bits" in
81 "$define"|true|[yY]*)
82         cat <<EOM >&4
83
84 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
85 EOM
86         use64bitint="$define"
87         ;;
88 esac
89 case "$use64bitints" in
90 "$define"|true|[yY]*)
91         cat <<EOM >&4
92
93 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
94 EOM
95         use64bitint="$define"
96         ;;
97 esac
98 case "$use64bitsint" in
99 "$define"|true|[yY]*)
100         cat <<EOM >&4
101
102 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
103 EOM
104         use64bitint="$define"
105         ;;
106 esac
107 case "$uselonglongs" in
108 "$define"|true|[yY]*)
109         cat <<EOM >&4
110
111 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
112 EOM
113         use64bitint="$define"
114         ;;
115 esac
116 case "$use64bitsall" in
117 "$define"|true|[yY]*)
118         cat <<EOM >&4
119
120 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
121 EOM
122         use64bitall="$define"
123         ;;
124 esac
125
126 case "$ccflags" in
127 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
128 esac
129 case "$use64bitall" in
130 "$define"|true|[yY]*) use64bitint="$define" ;;
131 esac
132
133 case "$longsize" in
134 8) cat <<EOM
135
136 You have natively 64-bit long integers.
137 EOM
138    val="$define"
139    ;;
140 *) case "$use64bitint" in
141    "$define"|true|[yY]*) dflt='y';;
142    *) dflt='n';;
143    esac
144    case "$d_quad" in
145    "$define") ;;
146    *) dflt='n' ;;
147    esac
148    cat <<EOM
149
150 Perl can be built to take advantage of 64-bit integer types
151 on some systems.  To do so, Configure can be run with -Duse64bitint.
152 Choosing this option will most probably introduce binary incompatibilities.
153
154 If this doesn't make any sense to you, just accept the default '$dflt'.
155 (The default has been chosen based on your configuration.)
156 EOM
157    rp='Try to use 64-bit integers, if available?'
158    . ./myread
159    case "$ans" in
160    [yY]*) val="$define" ;;
161    *)     val="$undef"  ;;
162    esac
163    ;;
164 esac
165 set use64bitint
166 eval $setvar
167
168 case "$use64bitall" in
169 "$define"|true|[yY]*) dflt='y' ;;
170 *) case "$longsize" in
171    8) dflt='y' ;;
172    *) dflt='n' ;;
173    esac
174    ;;
175 esac
176 cat <<EOM
177
178 You may also choose to try maximal 64-bitness.  It means using as much
179 64-bitness as possible on the platform.  This in turn means even more
180 binary incompatibilities.  On the other hand, your platform may not
181 have any more 64-bitness available than what you already have chosen.
182
183 If this doesn't make any sense to you, just accept the default '$dflt'.
184 (The default has been chosen based on your configuration.)
185 EOM
186 rp='Try to use maximal 64-bit support, if available?'
187 . ./myread
188 case "$ans" in
189 [yY]*) val="$define" ;;
190 *)     val="$undef"  ;;
191 esac
192 set use64bitall
193 eval $setvar
194 case "$use64bitall" in
195 "$define")
196         case "$use64bitint" in
197         "$undef")
198                 cat <<EOM
199
200 Since you have chosen a maximally 64-bit build, I'm also turning on
201 the use of 64-bit integers.
202 EOM
203                 use64bitint="$define" ;;
204         esac
205         ;;
206 esac
207
208 : Look for a hint-file generated 'call-back-unit'.  If the
209 : user has specified that a 64-bit perl is to be built,
210 : we may need to set or change some other defaults.
211 if $test -f use64bitint.cbu; then
212         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
213         . ./use64bitint.cbu
214 fi
215 case "$use64bitint" in
216 "$define"|true|[yY]*)
217         case "$longsize" in
218         4) case "$archname64" in
219            '') archname64=64int ;;
220            esac
221            ;;
222         esac
223         ;;
224 esac
225
226 : Look for a hint-file generated 'call-back-unit'.  If the
227 : user has specified that a maximally 64-bit perl is to be built,
228 : we may need to set or change some other defaults.
229 if $test -f use64bitall.cbu; then
230         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
231         . ./use64bitall.cbu
232 fi
233 case "$use64bitall" in
234 "$define"|true|[yY]*)
235         case "$longsize" in
236         4) case "$archname64" in
237            ''|64int) archname64=64all ;;
238            esac
239            ;;
240         esac
241         ;;
242 esac
243
244 case "$d_quad:$use64bitint" in
245 $undef:$define)
246         cat >&4 <<EOF
247
248 *** You have chosen to use 64-bit integers,
249 *** but none can be found.
250 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
251 *** Cannot continue, aborting.
252
253 EOF
254         exit 1
255         ;;
256 esac
257