This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
0b5e97195d47c07fefa3a9db528f200d850c6e1f
[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:?%<:#ifndef USE_64_BIT_ALL
55 ?H:?%<:#$use64bitall    USE_64_BIT_ALL          /**/
56 ?H:?%<:#endif
57 ?H:.
58 ?INIT:archname64=''
59 ?LINT:extern ccflags
60 ?LINT:use usemorebits
61 ?LINT:extern use64bits
62 ?LINT:extern uselonglong
63 ?LINT:extern uselonglongs
64 ?LINT:extern use64bitints
65 ?LINT:extern use64bitsint
66 ?LINT:extern use64bitsall
67 ?F:!use64bitint.cbu
68 ?F:!use64bitall.cbu
69 : Do we want 64bit support
70 case "$uselonglong" in
71 "$define"|true|[yY]*)
72         cat <<EOM >&4
73
74 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
75 EOM
76         use64bitint="$define"
77         ;;
78 esac
79 case "$use64bits" in
80 "$define"|true|[yY]*)
81         cat <<EOM >&4
82
83 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
84 EOM
85         use64bitint="$define"
86         ;;
87 esac
88 case "$use64bitints" in
89 "$define"|true|[yY]*)
90         cat <<EOM >&4
91
92 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
93 EOM
94         use64bitint="$define"
95         ;;
96 esac
97 case "$use64bitsint" in
98 "$define"|true|[yY]*)
99         cat <<EOM >&4
100
101 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
102 EOM
103         use64bitint="$define"
104         ;;
105 esac
106 case "$uselonglongs" in
107 "$define"|true|[yY]*)
108         cat <<EOM >&4
109
110 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
111 EOM
112         use64bitint="$define"
113         ;;
114 esac
115 case "$use64bitsall" in
116 "$define"|true|[yY]*)
117         cat <<EOM >&4
118
119 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
120 EOM
121         use64bitall="$define"
122         ;;
123 esac
124
125 case "$ccflags" in
126 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
127 esac
128 case "$use64bitall" in
129 "$define"|true|[yY]*) use64bitint="$define" ;;
130 esac
131
132 case "$longsize" in
133 8) cat <<EOM
134
135 You have natively 64-bit long integers.
136 EOM
137    val="$define"
138    ;;
139 *) case "$use64bitint" in
140    "$define"|true|[yY]*) dflt='y';;
141    *) dflt='n';;
142    esac
143    case "$d_quad" in
144    "$define") ;;
145    *) dflt='n' ;;
146    esac
147    cat <<EOM
148
149 Perl can be built to take advantage of 64-bit integer types
150 on some systems.  To do so, Configure can be run with -Duse64bitint.
151 Choosing this option will most probably introduce binary incompatibilities.
152
153 If this doesn't make any sense to you, just accept the default '$dflt'.
154 (The default has been chosen based on your configuration.)
155 EOM
156    rp='Try to use 64-bit integers, if available?'
157    . ./myread
158    case "$ans" in
159    [yY]*) val="$define" ;;
160    *)     val="$undef"  ;;
161    esac
162    ;;
163 esac
164 set use64bitint
165 eval $setvar
166
167 case "$use64bitall" in
168 "$define"|true|[yY]*) dflt='y' ;;
169 *) case "$longsize" in
170    8) dflt='y' ;;
171    *) dflt='n' ;;
172    esac
173    ;;
174 esac
175 cat <<EOM
176
177 You may also choose to try maximal 64-bitness.  It means using as much
178 64-bitness as possible on the platform.  This in turn means even more
179 binary incompatibilities.  On the other hand, your platform may not
180 have any more 64-bitness available than what you already have chosen.
181
182 If this doesn't make any sense to you, just accept the default '$dflt'.
183 (The default has been chosen based on your configuration.)
184 EOM
185 rp='Try to use maximal 64-bit support, if available?'
186 . ./myread
187 case "$ans" in
188 [yY]*) val="$define" ;;
189 *)     val="$undef"  ;;
190 esac
191 set use64bitall
192 eval $setvar
193 case "$use64bitall" in
194 "$define")
195         case "$use64bitint" in
196         "$undef")
197                 cat <<EOM
198
199 Since you have chosen a maximally 64-bit build, I'm also turning on
200 the use of 64-bit integers.
201 EOM
202                 use64bitint="$define" ;;
203         esac
204         ;;
205 esac
206
207 : Look for a hint-file generated 'call-back-unit'.  If the
208 : user has specified that a 64-bit perl is to be built,
209 : we may need to set or change some other defaults.
210 if $test -f use64bitint.cbu; then
211         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
212         . ./use64bitint.cbu
213 fi
214 case "$use64bitint" in
215 "$define"|true|[yY]*)
216         case "$longsize" in
217         4) case "$archname64" in
218            '') archname64=64int ;;
219            esac
220            ;;
221         esac
222         ;;
223 esac
224
225 : Look for a hint-file generated 'call-back-unit'.  If the
226 : user has specified that a maximally 64-bit perl is to be built,
227 : we may need to set or change some other defaults.
228 if $test -f use64bitall.cbu; then
229         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
230         . ./use64bitall.cbu
231 fi
232 case "$use64bitall" in
233 "$define"|true|[yY]*)
234         case "$longsize" in
235         4) case "$archname64" in
236            ''|64int) archname64=64all ;;
237            esac
238            ;;
239         esac
240         ;;
241 esac
242
243 case "$d_quad:$use64bitint" in
244 $undef:$define)
245         cat >&4 <<EOF
246
247 *** You have chosen to use 64-bit integers,
248 *** but none can be found.
249 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
250 *** Cannot continue, aborting.
251
252 EOF
253         exit 1
254         ;;
255 esac
256