config revision 1.1.1.2 1 1.1 christos #!/bin/sh
2 1.1.1.2 christos # Copyright 1998-2022 The OpenSSL Project Authors. All Rights Reserved.
3 1.1 christos #
4 1.1.1.2 christos # Licensed under the OpenSSL license (the "License"). You may not use
5 1.1.1.2 christos # this file except in compliance with the License. You can obtain a copy
6 1.1.1.2 christos # in the file LICENSE in the source distribution or at
7 1.1.1.2 christos # https://www.openssl.org/source/license.html
8 1.1 christos
9 1.1.1.2 christos # OpenSSL config: determine the operating system and run ./Configure
10 1.1.1.2 christos # Derived from minarch and GuessOS from Apache.
11 1.1 christos #
12 1.1.1.2 christos # Do "config -h" for usage information.
13 1.1 christos SUFFIX=""
14 1.1.1.2 christos DRYRUN="false"
15 1.1.1.2 christos VERBOSE="false"
16 1.1 christos EXE=""
17 1.1.1.2 christos THERE=`dirname $0`
18 1.1 christos
19 1.1 christos # pick up any command line args to config
20 1.1 christos for i
21 1.1 christos do
22 1.1.1.2 christos case "$i" in
23 1.1.1.2 christos -d*) options=$options" --debug";;
24 1.1.1.2 christos -t*) DRYRUN="true" VERBOSE="true";;
25 1.1.1.2 christos -v*) VERBOSE="true";;
26 1.1.1.2 christos -h*) DRYRUN="true"; cat <<EOF
27 1.1 christos Usage: config [options]
28 1.1.1.2 christos -d Build with debugging when possible.
29 1.1 christos -t Test mode, do not run the Configure perl script.
30 1.1.1.2 christos -v Verbose mode, show the exact Configure call that is being made.
31 1.1 christos -h This help.
32 1.1 christos
33 1.1 christos Any other text will be passed to the Configure perl script.
34 1.1 christos See INSTALL for instructions.
35 1.1 christos
36 1.1 christos EOF
37 1.1 christos ;;
38 1.1.1.2 christos *) i=`echo "$i" | sed -e "s|'|'\\\\\\''|g"`
39 1.1.1.2 christos options="$options '$i'" ;;
40 1.1 christos esac
41 1.1 christos done
42 1.1 christos
43 1.1.1.2 christos # Environment that's being passed to Configure
44 1.1.1.2 christos __CNF_CPPDEFINES=
45 1.1.1.2 christos __CNF_CPPINCLUDES=
46 1.1.1.2 christos __CNF_CPPFLAGS=
47 1.1.1.2 christos __CNF_CFLAGS=
48 1.1.1.2 christos __CNF_CXXFLAGS=
49 1.1.1.2 christos __CNF_LDFLAGS=
50 1.1.1.2 christos __CNF_LDLIBS=
51 1.1.1.2 christos
52 1.1 christos # First get uname entries that we use below
53 1.1 christos
54 1.1 christos [ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
55 1.1 christos [ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
56 1.1 christos [ "$SYSTEM" ] || SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown"
57 1.1 christos [ "$BUILD" ] || VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
58 1.1 christos
59 1.1 christos
60 1.1 christos # Now test for ISC and SCO, since it is has a braindamaged uname.
61 1.1 christos #
62 1.1.1.2 christos # We need to work around FreeBSD 1.1.5.1
63 1.1 christos (
64 1.1 christos XREL=`uname -X 2>/dev/null | grep "^Release" | awk '{print $3}'`
65 1.1 christos if [ "x$XREL" != "x" ]; then
66 1.1 christos if [ -f /etc/kconfig ]; then
67 1.1 christos case "$XREL" in
68 1.1 christos 4.0|4.1)
69 1.1 christos echo "${MACHINE}-whatever-isc4"; exit 0
70 1.1 christos ;;
71 1.1 christos esac
72 1.1 christos else
73 1.1 christos case "$XREL" in
74 1.1 christos 3.2v4.2)
75 1.1 christos echo "whatever-whatever-sco3"; exit 0
76 1.1 christos ;;
77 1.1 christos 3.2v5.0*)
78 1.1 christos echo "whatever-whatever-sco5"; exit 0
79 1.1 christos ;;
80 1.1 christos 4.2MP)
81 1.1 christos case "x${VERSION}" in
82 1.1 christos x2.0*) echo "whatever-whatever-unixware20"; exit 0 ;;
83 1.1 christos x2.1*) echo "whatever-whatever-unixware21"; exit 0 ;;
84 1.1 christos x2*) echo "whatever-whatever-unixware2"; exit 0 ;;
85 1.1 christos esac
86 1.1 christos ;;
87 1.1 christos 4.2)
88 1.1 christos echo "whatever-whatever-unixware1"; exit 0
89 1.1 christos ;;
90 1.1 christos 5*)
91 1.1 christos case "x${VERSION}" in
92 1.1 christos # We hardcode i586 in place of ${MACHINE} for the
93 1.1 christos # following reason. The catch is that even though Pentium
94 1.1 christos # is minimum requirement for platforms in question,
95 1.1 christos # ${MACHINE} gets always assigned to i386. Now, problem
96 1.1 christos # with i386 is that it makes ./config pass 386 to
97 1.1 christos # ./Configure, which in turn makes make generate
98 1.1 christos # inefficient SHA-1 (for this moment) code.
99 1.1 christos x[678]*) echo "i586-sco-unixware7"; exit 0 ;;
100 1.1 christos esac
101 1.1 christos ;;
102 1.1 christos esac
103 1.1 christos fi
104 1.1 christos fi
105 1.1 christos # Now we simply scan though... In most cases, the SYSTEM info is enough
106 1.1 christos #
107 1.1 christos case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
108 1.1 christos A/UX:*)
109 1.1 christos echo "m68k-apple-aux3"; exit 0
110 1.1 christos ;;
111 1.1 christos
112 1.1 christos AIX:[3-9]:4:*)
113 1.1 christos echo "${MACHINE}-ibm-aix"; exit 0
114 1.1 christos ;;
115 1.1 christos
116 1.1 christos AIX:*:[5-9]:*)
117 1.1 christos echo "${MACHINE}-ibm-aix"; exit 0
118 1.1 christos ;;
119 1.1 christos
120 1.1 christos AIX:*)
121 1.1 christos echo "${MACHINE}-ibm-aix3"; exit 0
122 1.1 christos ;;
123 1.1 christos
124 1.1 christos HI-UX:*)
125 1.1 christos echo "${MACHINE}-hi-hiux"; exit 0
126 1.1 christos ;;
127 1.1 christos
128 1.1 christos HP-UX:*)
129 1.1 christos HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'`
130 1.1 christos case "$HPUXVER" in
131 1.1 christos 1[0-9].*) # HPUX 10 and 11 targets are unified
132 1.1 christos echo "${MACHINE}-hp-hpux1x"; exit 0
133 1.1 christos ;;
134 1.1 christos *)
135 1.1 christos echo "${MACHINE}-hp-hpux"; exit 0
136 1.1 christos ;;
137 1.1 christos esac
138 1.1 christos ;;
139 1.1 christos
140 1.1 christos IRIX:6.*)
141 1.1 christos echo "mips3-sgi-irix"; exit 0
142 1.1 christos ;;
143 1.1 christos
144 1.1 christos IRIX64:*)
145 1.1 christos echo "mips4-sgi-irix64"; exit 0
146 1.1 christos ;;
147 1.1 christos
148 1.1 christos Linux:[2-9].*)
149 1.1 christos echo "${MACHINE}-whatever-linux2"; exit 0
150 1.1 christos ;;
151 1.1 christos
152 1.1 christos Linux:1.*)
153 1.1 christos echo "${MACHINE}-whatever-linux1"; exit 0
154 1.1 christos ;;
155 1.1 christos
156 1.1 christos GNU*)
157 1.1 christos echo "hurd-x86"; exit 0;
158 1.1 christos ;;
159 1.1 christos
160 1.1 christos LynxOS:*)
161 1.1 christos echo "${MACHINE}-lynx-lynxos"; exit 0
162 1.1 christos ;;
163 1.1 christos
164 1.1 christos BSD/OS:4.*) # BSD/OS always says 386
165 1.1 christos echo "i486-whatever-bsdi4"; exit 0
166 1.1 christos ;;
167 1.1 christos
168 1.1 christos BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*)
169 1.1 christos case `/sbin/sysctl -n hw.model` in
170 1.1 christos Pentium*)
171 1.1 christos echo "i586-whatever-bsdi"; exit 0
172 1.1 christos ;;
173 1.1 christos *)
174 1.1 christos echo "i386-whatever-bsdi"; exit 0
175 1.1 christos ;;
176 1.1 christos esac;
177 1.1 christos ;;
178 1.1 christos
179 1.1 christos BSD/386:*|BSD/OS:*)
180 1.1 christos echo "${MACHINE}-whatever-bsdi"; exit 0
181 1.1 christos ;;
182 1.1 christos
183 1.1 christos FreeBSD:*:*:*386*)
184 1.1 christos VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'`
185 1.1 christos MACH=`sysctl -n hw.model`
186 1.1 christos ARCH='whatever'
187 1.1 christos case ${MACH} in
188 1.1 christos *386* ) MACH="i386" ;;
189 1.1 christos *486* ) MACH="i486" ;;
190 1.1 christos Pentium\ II*) MACH="i686" ;;
191 1.1 christos Pentium* ) MACH="i586" ;;
192 1.1 christos * ) MACH="$MACHINE" ;;
193 1.1 christos esac
194 1.1 christos case ${MACH} in
195 1.1 christos i[0-9]86 ) ARCH="pc" ;;
196 1.1 christos esac
197 1.1 christos echo "${MACH}-${ARCH}-freebsd${VERS}"; exit 0
198 1.1 christos ;;
199 1.1 christos
200 1.1.1.2 christos DragonFly:*)
201 1.1.1.2 christos echo "${MACHINE}-whatever-dragonfly"; exit 0
202 1.1.1.2 christos ;;
203 1.1.1.2 christos
204 1.1 christos FreeBSD:*)
205 1.1 christos echo "${MACHINE}-whatever-freebsd"; exit 0
206 1.1 christos ;;
207 1.1 christos
208 1.1.1.2 christos Haiku:*)
209 1.1.1.2 christos echo "${MACHINE}-whatever-haiku"; exit 0
210 1.1.1.2 christos ;;
211 1.1.1.2 christos
212 1.1 christos NetBSD:*:*:*386*)
213 1.1 christos echo "`(/usr/sbin/sysctl -n hw.model || /sbin/sysctl -n hw.model) | sed 's,.*\(.\)86-class.*,i\186,'`-whatever-netbsd"; exit 0
214 1.1 christos ;;
215 1.1 christos
216 1.1 christos NetBSD:*)
217 1.1 christos echo "${MACHINE}-whatever-netbsd"; exit 0
218 1.1 christos ;;
219 1.1 christos
220 1.1 christos OpenBSD:*)
221 1.1 christos echo "${MACHINE}-whatever-openbsd"; exit 0
222 1.1 christos ;;
223 1.1 christos
224 1.1 christos OpenUNIX:*)
225 1.1 christos echo "${MACHINE}-unknown-OpenUNIX${VERSION}"; exit 0
226 1.1 christos ;;
227 1.1 christos
228 1.1 christos OSF1:*:*:*alpha*)
229 1.1 christos OSFMAJOR=`echo ${RELEASE}| sed -e 's/^V\([0-9]*\)\..*$/\1/'`
230 1.1 christos case "$OSFMAJOR" in
231 1.1 christos 4|5)
232 1.1 christos echo "${MACHINE}-dec-tru64"; exit 0
233 1.1 christos ;;
234 1.1 christos 1|2|3)
235 1.1 christos echo "${MACHINE}-dec-osf"; exit 0
236 1.1 christos ;;
237 1.1 christos *)
238 1.1 christos echo "${MACHINE}-dec-osf"; exit 0
239 1.1 christos ;;
240 1.1 christos esac
241 1.1 christos ;;
242 1.1 christos
243 1.1 christos Paragon*:*:*:*)
244 1.1 christos echo "i860-intel-osf1"; exit 0
245 1.1 christos ;;
246 1.1 christos
247 1.1 christos Rhapsody:*)
248 1.1 christos echo "ppc-apple-rhapsody"; exit 0
249 1.1 christos ;;
250 1.1 christos
251 1.1 christos Darwin:*)
252 1.1 christos case "$MACHINE" in
253 1.1 christos Power*)
254 1.1 christos echo "ppc-apple-darwin${VERSION}"
255 1.1 christos ;;
256 1.1 christos *)
257 1.1.1.2 christos echo "${MACHINE}-apple-darwin${VERSION}"
258 1.1 christos ;;
259 1.1 christos esac
260 1.1 christos exit 0
261 1.1 christos ;;
262 1.1 christos
263 1.1 christos SunOS:5.*)
264 1.1 christos echo "${MACHINE}-whatever-solaris2"; exit 0
265 1.1 christos ;;
266 1.1 christos
267 1.1 christos SunOS:*)
268 1.1 christos echo "${MACHINE}-sun-sunos4"; exit 0
269 1.1 christos ;;
270 1.1 christos
271 1.1 christos UNIX_System_V:4.*:*)
272 1.1 christos echo "${MACHINE}-whatever-sysv4"; exit 0
273 1.1 christos ;;
274 1.1 christos
275 1.1 christos VOS:*:*:i786)
276 1.1 christos echo "i386-stratus-vos"; exit 0
277 1.1 christos ;;
278 1.1 christos
279 1.1 christos VOS:*:*:*)
280 1.1 christos echo "hppa1.1-stratus-vos"; exit 0
281 1.1 christos ;;
282 1.1 christos
283 1.1 christos *:4*:R4*:m88k)
284 1.1 christos echo "${MACHINE}-whatever-sysv4"; exit 0
285 1.1 christos ;;
286 1.1 christos
287 1.1 christos DYNIX/ptx:4*:*)
288 1.1 christos echo "${MACHINE}-whatever-sysv4"; exit 0
289 1.1 christos ;;
290 1.1 christos
291 1.1 christos *:4.0:3.0:3[34]?? | *:4.0:3.0:3[34]??,*)
292 1.1 christos echo "i486-ncr-sysv4"; exit 0
293 1.1 christos ;;
294 1.1 christos
295 1.1 christos ULTRIX:*)
296 1.1 christos echo "${MACHINE}-unknown-ultrix"; exit 0
297 1.1 christos ;;
298 1.1 christos
299 1.1 christos POSIX-BC*)
300 1.1 christos echo "${MACHINE}-siemens-sysv4"; exit 0 # Here, $MACHINE == "BS2000"
301 1.1 christos ;;
302 1.1 christos
303 1.1 christos machten:*)
304 1.1 christos echo "${MACHINE}-tenon-${SYSTEM}"; exit 0;
305 1.1 christos ;;
306 1.1 christos
307 1.1 christos library:*)
308 1.1 christos echo "${MACHINE}-ncr-sysv4"; exit 0
309 1.1 christos ;;
310 1.1 christos
311 1.1 christos ConvexOS:*:11.0:*)
312 1.1 christos echo "${MACHINE}-v11-${SYSTEM}"; exit 0;
313 1.1 christos ;;
314 1.1 christos
315 1.1.1.2 christos # The following combinations are supported
316 1.1.1.2 christos # MINGW64* on x86_64 => mingw64
317 1.1.1.2 christos # MINGW32* on x86_64 => mingw
318 1.1.1.2 christos # MINGW32* on i?86 => mingw
319 1.1.1.2 christos #
320 1.1.1.2 christos # MINGW64* on i?86 isn't expected to work...
321 1.1.1.2 christos MINGW64*:*:*:x86_64)
322 1.1.1.2 christos echo "${MACHINE}-whatever-mingw64"; exit 0;
323 1.1 christos ;;
324 1.1 christos MINGW*)
325 1.1 christos echo "${MACHINE}-whatever-mingw"; exit 0;
326 1.1 christos ;;
327 1.1 christos CYGWIN*)
328 1.1.1.2 christos echo "${MACHINE}-pc-cygwin"; exit 0
329 1.1 christos ;;
330 1.1 christos
331 1.1 christos vxworks*)
332 1.1 christos echo "${MACHINE}-whatever-vxworks"; exit 0;
333 1.1 christos ;;
334 1.1 christos esac
335 1.1 christos
336 1.1 christos #
337 1.1 christos # Ugg. These are all we can determine by what we know about
338 1.1 christos # the output of uname. Be more creative:
339 1.1 christos #
340 1.1 christos
341 1.1 christos # Do the Apollo stuff first. Here, we just simply assume
342 1.1.1.2 christos # that the existence of the /usr/apollo directory is proof
343 1.1 christos # enough
344 1.1 christos if [ -d /usr/apollo ]; then
345 1.1 christos echo "whatever-apollo-whatever"
346 1.1 christos exit 0
347 1.1 christos fi
348 1.1 christos
349 1.1 christos # Now NeXT
350 1.1 christos ISNEXT=`hostinfo 2>/dev/null`
351 1.1 christos case "$ISNEXT" in
352 1.1 christos *'NeXT Mach 3.3'*)
353 1.1 christos echo "whatever-next-nextstep3.3"; exit 0
354 1.1 christos ;;
355 1.1 christos *NeXT*)
356 1.1 christos echo "whatever-next-nextstep"; exit 0
357 1.1 christos ;;
358 1.1 christos esac
359 1.1 christos
360 1.1 christos # At this point we gone through all the one's
361 1.1 christos # we know of: Punt
362 1.1 christos
363 1.1.1.2 christos echo "${MACHINE}-whatever-${SYSTEM}"
364 1.1 christos exit 0
365 1.1 christos ) 2>/dev/null | (
366 1.1 christos
367 1.1 christos # ---------------------------------------------------------------------------
368 1.1 christos # this is where the translation occurs into SSLeay terms
369 1.1 christos # ---------------------------------------------------------------------------
370 1.1 christos
371 1.1 christos # Only set CC if not supplied already
372 1.1 christos if [ -z "$CROSS_COMPILE$CC" ]; then
373 1.1 christos GCCVER=`sh -c "gcc -dumpversion" 2>/dev/null`
374 1.1 christos if [ "$GCCVER" != "" ]; then
375 1.1 christos # then strip off whatever prefix egcs prepends the number with...
376 1.1 christos # Hopefully, this will work for any future prefixes as well.
377 1.1 christos GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'`
378 1.1 christos # Since gcc 3.1 gcc --version behaviour has changed. gcc -dumpversion
379 1.1 christos # does give us what we want though, so we use that. We just just the
380 1.1 christos # major and minor version numbers.
381 1.1 christos # peak single digit before and after first dot, e.g. 2.95.1 gives 29
382 1.1 christos GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'`
383 1.1 christos CC=gcc
384 1.1 christos else
385 1.1 christos CC=cc
386 1.1 christos fi
387 1.1 christos fi
388 1.1 christos GCCVER=${GCCVER:-0}
389 1.1 christos if [ "$SYSTEM" = "HP-UX" ];then
390 1.1 christos # By default gcc is a ILP32 compiler (with long long == 64).
391 1.1 christos GCC_BITS="32"
392 1.1 christos if [ $GCCVER -ge 30 ]; then
393 1.1 christos # PA64 support only came in with gcc 3.0.x.
394 1.1 christos # We check if the preprocessor symbol __LP64__ is defined...
395 1.1 christos if echo "__LP64__" | gcc -v -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null; then
396 1.1 christos : # __LP64__ has slipped through, it therefore is not defined
397 1.1 christos else
398 1.1 christos GCC_BITS="64"
399 1.1 christos fi
400 1.1 christos fi
401 1.1 christos fi
402 1.1 christos if [ "$SYSTEM" = "SunOS" ]; then
403 1.1 christos if [ $GCCVER -ge 30 ]; then
404 1.1 christos # 64-bit ABI isn't officially supported in gcc 3.0, but it appears
405 1.1 christos # to be working, at the very least 'make test' passes...
406 1.1 christos if gcc -v -E -x c /dev/null 2>&1 | grep __arch64__ > /dev/null; then
407 1.1 christos GCC_ARCH="-m64"
408 1.1 christos else
409 1.1 christos GCC_ARCH="-m32"
410 1.1 christos fi
411 1.1 christos fi
412 1.1 christos # check for WorkShop C, expected output is "cc: blah-blah C x.x"
413 1.1 christos CCVER=`(cc -V 2>&1) 2>/dev/null | \
414 1.1 christos egrep -e '^cc: .* C [0-9]\.[0-9]' | \
415 1.1 christos sed 's/.* C \([0-9]\)\.\([0-9]\).*/\1\2/'`
416 1.1 christos CCVER=${CCVER:-0}
417 1.1 christos if [ $MACHINE != i86pc -a $CCVER -gt 40 ]; then
418 1.1 christos CC=cc # overrides gcc!!!
419 1.1 christos if [ $CCVER -eq 50 ]; then
420 1.1 christos echo "WARNING! Detected WorkShop C 5.0. Do make sure you have"
421 1.1 christos echo " patch #107357-01 or later applied."
422 1.1 christos sleep 5
423 1.1 christos fi
424 1.1 christos fi
425 1.1 christos fi
426 1.1 christos
427 1.1 christos if [ "${SYSTEM}" = "AIX" ]; then # favor vendor cc over gcc
428 1.1 christos (cc) 2>&1 | grep -iv "not found" > /dev/null && CC=cc
429 1.1 christos fi
430 1.1 christos
431 1.1 christos CCVER=${CCVER:-0}
432 1.1 christos
433 1.1.1.2 christos # read the output of the embedded GuessOS
434 1.1 christos read GUESSOS
435 1.1 christos
436 1.1 christos echo Operating system: $GUESSOS
437 1.1 christos
438 1.1 christos # now map the output into SSLeay terms ... really should hack into the
439 1.1 christos # script above so we end up with values in vars but that would take
440 1.1 christos # more time that I want to waste at the moment
441 1.1 christos case "$GUESSOS" in
442 1.1 christos uClinux*64*)
443 1.1 christos OUT=uClinux-dist64
444 1.1 christos ;;
445 1.1 christos uClinux*)
446 1.1 christos OUT=uClinux-dist
447 1.1 christos ;;
448 1.1 christos mips3-sgi-irix)
449 1.1 christos OUT="irix-mips3-$CC"
450 1.1 christos ;;
451 1.1 christos mips4-sgi-irix64)
452 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
453 1.1.1.2 christos echo " invoke '$THERE/Configure irix64-mips4-$CC' *manually*."
454 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
455 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
456 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
457 1.1 christos fi
458 1.1 christos OUT="irix-mips3-$CC"
459 1.1 christos ;;
460 1.1 christos ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
461 1.1 christos ppc-apple-darwin*)
462 1.1 christos ISA64=`(sysctl -n hw.optional.64bitops) 2>/dev/null`
463 1.1 christos if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
464 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
465 1.1.1.2 christos echo " invoke '$THERE/Configure darwin64-ppc-cc' *manually*."
466 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
467 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
468 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
469 1.1 christos fi
470 1.1 christos fi
471 1.1 christos if [ "$ISA64" = "1" -a "$KERNEL_BITS" = "64" ]; then
472 1.1 christos OUT="darwin64-ppc-cc"
473 1.1 christos else
474 1.1 christos OUT="darwin-ppc-cc"
475 1.1 christos fi ;;
476 1.1 christos i?86-apple-darwin*)
477 1.1 christos ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
478 1.1 christos if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
479 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
480 1.1.1.2 christos echo " invoke 'KERNEL_BITS=64 $THERE/config $options'."
481 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
482 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
483 1.1.1.2 christos (trap "stty `stty -g`; exit 1" 2; stty -icanon min 0 time 50; read waste; exit 0) <&1 || exit
484 1.1 christos fi
485 1.1 christos fi
486 1.1 christos if [ "$ISA64" = "1" -a "$KERNEL_BITS" = "64" ]; then
487 1.1 christos OUT="darwin64-x86_64-cc"
488 1.1 christos else
489 1.1 christos OUT="darwin-i386-cc"
490 1.1 christos fi ;;
491 1.1.1.2 christos x86_64-apple-darwin*)
492 1.1.1.2 christos if [ "$KERNEL_BITS" = "32" ]; then
493 1.1.1.2 christos OUT="darwin-i386-cc"
494 1.1.1.2 christos else
495 1.1.1.2 christos OUT="darwin64-x86_64-cc"
496 1.1.1.2 christos fi ;;
497 1.1.1.2 christos $MACHINE-apple-darwin*)
498 1.1.1.2 christos OUT="darwin64-$MACHINE-cc"
499 1.1.1.2 christos ;;
500 1.1 christos armv6+7-*-iphoneos)
501 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -arch armv6 -arch armv7"
502 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch armv6 -arch armv7"
503 1.1 christos OUT="iphoneos-cross" ;;
504 1.1 christos *-*-iphoneos)
505 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -arch ${MACHINE}"
506 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch ${MACHINE}"
507 1.1 christos OUT="iphoneos-cross" ;;
508 1.1.1.2 christos arm64-*-iphoneos|*-*-ios64)
509 1.1.1.2 christos OUT="ios64-cross" ;;
510 1.1 christos alpha-*-linux2)
511 1.1 christos ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo`
512 1.1.1.2 christos OUT="linux-alpha-$CC"
513 1.1 christos if [ "$CC" = "gcc" ]; then
514 1.1 christos case ${ISA:-generic} in
515 1.1.1.2 christos EV5|EV45) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev5"
516 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CFLAGS -mcpu=ev5";;
517 1.1.1.2 christos EV56|PCA56) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev56"
518 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev56";;
519 1.1.1.2 christos *) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev6"
520 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev6";;
521 1.1 christos esac
522 1.1 christos fi
523 1.1 christos ;;
524 1.1 christos ppc64-*-linux2)
525 1.1 christos if [ -z "$KERNEL_BITS" ]; then
526 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
527 1.1.1.2 christos echo " invoke '$THERE/Configure linux-ppc64' *manually*."
528 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
529 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
530 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
531 1.1 christos fi
532 1.1 christos fi
533 1.1 christos if [ "$KERNEL_BITS" = "64" ]; then
534 1.1 christos OUT="linux-ppc64"
535 1.1 christos else
536 1.1 christos OUT="linux-ppc"
537 1.1.1.2 christos if (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null); then
538 1.1.1.2 christos :;
539 1.1.1.2 christos else
540 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -m32"
541 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -m32"
542 1.1.1.2 christos fi
543 1.1 christos fi
544 1.1 christos ;;
545 1.1 christos ppc64le-*-linux2) OUT="linux-ppc64le" ;;
546 1.1 christos ppc-*-linux2) OUT="linux-ppc" ;;
547 1.1 christos mips64*-*-linux2)
548 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
549 1.1.1.2 christos echo " invoke '$THERE/Configure linux64-mips64' *manually*."
550 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
551 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
552 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
553 1.1 christos fi
554 1.1 christos OUT="linux-mips64"
555 1.1 christos ;;
556 1.1 christos mips*-*-linux2) OUT="linux-mips32" ;;
557 1.1 christos ppc60x-*-vxworks*) OUT="vxworks-ppc60x" ;;
558 1.1 christos ppcgen-*-vxworks*) OUT="vxworks-ppcgen" ;;
559 1.1 christos pentium-*-vxworks*) OUT="vxworks-pentium" ;;
560 1.1 christos simlinux-*-vxworks*) OUT="vxworks-simlinux" ;;
561 1.1 christos mips-*-vxworks*) OUT="vxworks-mips";;
562 1.1 christos ia64-*-linux?) OUT="linux-ia64" ;;
563 1.1 christos sparc64-*-linux2)
564 1.1 christos echo "WARNING! If you *know* that your GNU C supports 64-bit/V9 ABI"
565 1.1 christos echo " and wish to build 64-bit library, then you have to"
566 1.1.1.2 christos echo " invoke '$THERE/Configure linux64-sparcv9' *manually*."
567 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
568 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
569 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
570 1.1 christos fi
571 1.1 christos OUT="linux-sparcv9" ;;
572 1.1 christos sparc-*-linux2)
573 1.1 christos KARCH=`awk '/^type/{print$3;exit(0);}' /proc/cpuinfo`
574 1.1 christos case ${KARCH:-sun4} in
575 1.1 christos sun4u*) OUT="linux-sparcv9" ;;
576 1.1 christos sun4m) OUT="linux-sparcv8" ;;
577 1.1 christos sun4d) OUT="linux-sparcv8" ;;
578 1.1.1.2 christos *) OUT="linux-generic32";
579 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
580 1.1 christos esac ;;
581 1.1 christos parisc*-*-linux2)
582 1.1 christos # 64-bit builds under parisc64 linux are not supported and
583 1.1 christos # compiler is expected to generate 32-bit objects...
584 1.1 christos CPUARCH=`awk '/cpu family/{print substr($5,1,3); exit(0);}' /proc/cpuinfo`
585 1.1 christos CPUSCHEDULE=`awk '/^cpu.[ ]*: PA/{print substr($3,3); exit(0);}' /proc/cpuinfo`
586 1.1 christos
587 1.1 christos # ??TODO ?? Model transformations
588 1.1 christos # 0. CPU Architecture for the 1.1 processor has letter suffixes. We strip that off
589 1.1 christos # assuming no further arch. identification will ever be used by GCC.
590 1.1 christos # 1. I'm most concerned about whether is a 7300LC is closer to a 7100 versus a 7100LC.
591 1.1 christos # 2. The variant 64-bit processors cause concern should GCC support explicit schedulers
592 1.1 christos # for these chips in the future.
593 1.1 christos # PA7300LC -> 7100LC (1.1)
594 1.1 christos # PA8200 -> 8000 (2.0)
595 1.1 christos # PA8500 -> 8000 (2.0)
596 1.1 christos # PA8600 -> 8000 (2.0)
597 1.1 christos
598 1.1 christos CPUSCHEDULE=`echo $CPUSCHEDULE|sed -e 's/7300LC/7100LC/' -e 's/8.00/8000/'`
599 1.1 christos # Finish Model transformations
600 1.1 christos
601 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN"
602 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
603 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
604 1.1 christos OUT="linux-generic32" ;;
605 1.1 christos armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
606 1.1.1.2 christos armv[7-9]*-*-linux2) OUT="linux-armv4"
607 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
608 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a"
609 1.1.1.2 christos ;;
610 1.1 christos arm*-*-linux2) OUT="linux-armv4" ;;
611 1.1 christos aarch64-*-linux2) OUT="linux-aarch64" ;;
612 1.1.1.2 christos sh*b-*-linux2) OUT="linux-generic32";
613 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
614 1.1.1.2 christos sh*-*-linux2) OUT="linux-generic32";
615 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
616 1.1.1.2 christos m68k*-*-linux2) OUT="linux-generic32";
617 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
618 1.1.1.2 christos s390-*-linux2) OUT="linux-generic32";
619 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
620 1.1 christos s390x-*-linux2)
621 1.1 christos # To be uncommented when glibc bug is fixed, see Configure...
622 1.1 christos #if egrep -e '^features.* highgprs' /proc/cpuinfo >/dev/null ; then
623 1.1 christos # echo "WARNING! If you wish to build \"highgprs\" 32-bit library, then you"
624 1.1 christos # echo " have to invoke './Configure linux32-s390x' *manually*."
625 1.1.1.2 christos # if [ "$DRYRUN" = "false" -a -t -1 ]; then
626 1.1 christos # echo " You have about 5 seconds to press Ctrl-C to abort."
627 1.1.1.2 christos # (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
628 1.1 christos # fi
629 1.1 christos #fi
630 1.1 christos OUT="linux64-s390x"
631 1.1 christos ;;
632 1.1.1.2 christos x86_64-*-linux?)
633 1.1.1.2 christos if $CC -dM -E -x c /dev/null 2>&1 | grep -q ILP32 > /dev/null; then
634 1.1.1.2 christos OUT="linux-x32"
635 1.1.1.2 christos else
636 1.1.1.2 christos OUT="linux-x86_64"
637 1.1.1.2 christos fi ;;
638 1.1.1.2 christos *86-*-linux2)
639 1.1.1.2 christos # On machines where the compiler understands -m32, prefer a
640 1.1.1.2 christos # config target that uses it
641 1.1.1.2 christos if $CC -m32 -E -x c /dev/null > /dev/null 2>&1; then
642 1.1.1.2 christos OUT="linux-x86"
643 1.1.1.2 christos else
644 1.1.1.2 christos OUT="linux-elf"
645 1.1 christos fi ;;
646 1.1.1.2 christos *86-*-linux1) OUT="linux-aout" ;;
647 1.1.1.2 christos *-*-linux?) OUT="linux-generic32" ;;
648 1.1 christos sun4[uv]*-*-solaris2)
649 1.1 christos OUT="solaris-sparcv9-$CC"
650 1.1.1.2 christos ISA64=`(isainfo) 2>/dev/null | grep sparcv9`
651 1.1 christos if [ "$ISA64" != "" -a "$KERNEL_BITS" = "" ]; then
652 1.1 christos if [ "$CC" = "cc" -a $CCVER -ge 50 ]; then
653 1.1 christos echo "WARNING! If you wish to build 64-bit library, then you have to"
654 1.1.1.2 christos echo " invoke '$THERE/Configure solaris64-sparcv9-cc' *manually*."
655 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
656 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
657 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
658 1.1 christos fi
659 1.1 christos elif [ "$CC" = "gcc" -a "$GCC_ARCH" = "-m64" ]; then
660 1.1 christos # $GCC_ARCH denotes default ABI chosen by compiler driver
661 1.1 christos # (first one found on the $PATH). I assume that user
662 1.1 christos # expects certain consistency with the rest of his builds
663 1.1 christos # and therefore switch over to 64-bit. <appro>
664 1.1 christos OUT="solaris64-sparcv9-gcc"
665 1.1 christos echo "WARNING! If you wish to build 32-bit library, then you have to"
666 1.1.1.2 christos echo " invoke '$THERE/Configure solaris-sparcv9-gcc' *manually*."
667 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
668 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
669 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
670 1.1 christos fi
671 1.1 christos elif [ "$GCC_ARCH" = "-m32" ]; then
672 1.1 christos echo "NOTICE! If you *know* that your GNU C supports 64-bit/V9 ABI"
673 1.1 christos echo " and wish to build 64-bit library, then you have to"
674 1.1.1.2 christos echo " invoke '$THERE/Configure solaris64-sparcv9-gcc' *manually*."
675 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
676 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
677 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
678 1.1 christos fi
679 1.1 christos fi
680 1.1 christos fi
681 1.1 christos if [ "$ISA64" != "" -a "$KERNEL_BITS" = "64" ]; then
682 1.1 christos OUT="solaris64-sparcv9-$CC"
683 1.1 christos fi
684 1.1 christos ;;
685 1.1 christos sun4m-*-solaris2) OUT="solaris-sparcv8-$CC" ;;
686 1.1 christos sun4d-*-solaris2) OUT="solaris-sparcv8-$CC" ;;
687 1.1 christos sun4*-*-solaris2) OUT="solaris-sparcv7-$CC" ;;
688 1.1 christos *86*-*-solaris2)
689 1.1.1.2 christos ISA64=`(isainfo) 2>/dev/null | grep amd64`
690 1.1 christos if [ "$ISA64" != "" -a ${KERNEL_BITS:-64} -eq 64 ]; then
691 1.1 christos OUT="solaris64-x86_64-$CC"
692 1.1 christos else
693 1.1 christos OUT="solaris-x86-$CC"
694 1.1 christos if [ `uname -r | sed -e 's/5\.//'` -lt 10 ]; then
695 1.1 christos options="$options no-sse2"
696 1.1 christos fi
697 1.1 christos fi
698 1.1 christos ;;
699 1.1 christos *-*-sunos4) OUT="sunos-$CC" ;;
700 1.1 christos
701 1.1.1.2 christos *86*-*-bsdi4) OUT="BSD-x86-elf"; options="$options no-sse2";
702 1.1.1.2 christos __CNF_LDFLAGS="$__CNF_LDFLAGS -ldl" ;;
703 1.1.1.2 christos alpha*-*-*bsd*) OUT="BSD-generic64";
704 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
705 1.1.1.2 christos powerpc64-*-*bsd*) OUT="BSD-generic64";
706 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
707 1.1.1.2 christos riscv64-*-*bsd*) OUT="BSD-riscv64" ;;
708 1.1 christos sparc64-*-*bsd*) OUT="BSD-sparc64" ;;
709 1.1 christos ia64-*-*bsd*) OUT="BSD-ia64" ;;
710 1.1.1.2 christos x86_64-*-dragonfly*) OUT="BSD-x86_64" ;;
711 1.1 christos amd64-*-*bsd*) OUT="BSD-x86_64" ;;
712 1.1.1.2 christos arm64-*-*bsd*) OUT="BSD-aarch64" ;;
713 1.1 christos *86*-*-*bsd*) # mimic ld behaviour when it's looking for libc...
714 1.1 christos if [ -L /usr/lib/libc.so ]; then # [Free|Net]BSD
715 1.1 christos libc=/usr/lib/libc.so
716 1.1 christos else # OpenBSD
717 1.1 christos # ld searches for highest libc.so.* and so do we
718 1.1 christos libc=`(ls /usr/lib/libc.so.* /lib/libc.so.* | tail -1) 2>/dev/null`
719 1.1 christos fi
720 1.1 christos case "`(file -L $libc) 2>/dev/null`" in
721 1.1 christos *ELF*) OUT="BSD-x86-elf" ;;
722 1.1 christos *) OUT="BSD-x86"; options="$options no-sse2" ;;
723 1.1 christos esac ;;
724 1.1 christos *-*-*bsd*) OUT="BSD-generic32" ;;
725 1.1 christos
726 1.1.1.2 christos x86_64-*-haiku) OUT="haiku-x86_64" ;;
727 1.1.1.2 christos *-*-haiku) OUT="haiku-x86" ;;
728 1.1.1.2 christos
729 1.1 christos *-*-osf) OUT="osf1-alpha-cc" ;;
730 1.1 christos *-*-tru64) OUT="tru64-alpha-cc" ;;
731 1.1 christos *-*-[Uu]nix[Ww]are7)
732 1.1 christos if [ "$CC" = "gcc" ]; then
733 1.1 christos OUT="unixware-7-gcc" ; options="$options no-sse2"
734 1.1.1.2 christos else
735 1.1.1.2 christos OUT="unixware-7" ; options="$options no-sse2"
736 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__"
737 1.1 christos fi
738 1.1 christos ;;
739 1.1 christos *-*-[Uu]nix[Ww]are20*) OUT="unixware-2.0"; options="$options no-sse2 no-sha512" ;;
740 1.1 christos *-*-[Uu]nix[Ww]are21*) OUT="unixware-2.1"; options="$options no-sse2 no-sha512" ;;
741 1.1 christos *-*-vos)
742 1.1 christos options="$options no-threads no-shared no-asm no-dso"
743 1.1 christos EXE=".pm"
744 1.1 christos OUT="vos-$CC" ;;
745 1.1 christos BS2000-siemens-sysv4) OUT="BS2000-OSD" ;;
746 1.1 christos *-hpux1*)
747 1.1 christos if [ $CC = "gcc" -a $GCC_BITS = "64" ]; then
748 1.1 christos OUT="hpux64-parisc2-gcc"
749 1.1 christos fi
750 1.1 christos [ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITS) 2>/dev/null`
751 1.1 christos KERNEL_BITS=${KERNEL_BITS:-32}
752 1.1 christos CPU_VERSION=`(getconf CPU_VERSION) 2>/dev/null`
753 1.1 christos CPU_VERSION=${CPU_VERSION:-0}
754 1.1 christos # See <sys/unistd.h> for further info on CPU_VERSION.
755 1.1 christos if [ $CPU_VERSION -ge 768 ]; then # IA-64 CPU
756 1.1 christos if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
757 1.1 christos OUT="hpux64-ia64-cc"
758 1.1 christos else
759 1.1 christos OUT="hpux-ia64-cc"
760 1.1 christos fi
761 1.1 christos elif [ $CPU_VERSION -ge 532 ]; then # PA-RISC 2.x CPU
762 1.1.1.2 christos # PA-RISC 2.0 is no longer supported as separate 32-bit
763 1.1.1.2 christos # target. This is compensated for by run-time detection
764 1.1.1.2 christos # in most critical assembly modules and taking advantage
765 1.1.1.2 christos # of 2.0 architecture in PA-RISC 1.1 build.
766 1.1.1.2 christos OUT=${OUT:-"hpux-parisc1_1-${CC}"}
767 1.1 christos if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
768 1.1 christos echo "WARNING! If you wish to build 64-bit library then you have to"
769 1.1.1.2 christos echo " invoke '$THERE/Configure hpux64-parisc2-cc' *manually*."
770 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
771 1.1 christos echo " You have about 5 seconds to press Ctrl-C to abort."
772 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
773 1.1 christos fi
774 1.1 christos fi
775 1.1 christos elif [ $CPU_VERSION -ge 528 ]; then # PA-RISC 1.1+ CPU
776 1.1.1.2 christos OUT="hpux-parisc1_1-${CC}"
777 1.1 christos elif [ $CPU_VERSION -ge 523 ]; then # PA-RISC 1.0 CPU
778 1.1 christos OUT="hpux-parisc-${CC}"
779 1.1 christos else # Motorola(?) CPU
780 1.1 christos OUT="hpux-$CC"
781 1.1 christos fi
782 1.1.1.2 christos __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D_REENTRANT" ;;
783 1.1 christos *-hpux) OUT="hpux-parisc-$CC" ;;
784 1.1 christos *-aix)
785 1.1 christos [ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITMODE) 2>/dev/null`
786 1.1 christos KERNEL_BITS=${KERNEL_BITS:-32}
787 1.1 christos OBJECT_MODE=${OBJECT_MODE:-32}
788 1.1 christos if [ "$CC" = "gcc" ]; then
789 1.1 christos OUT="aix-gcc"
790 1.1 christos if [ $OBJECT_MODE -eq 64 ]; then
791 1.1 christos echo 'Your $OBJECT_MODE was found to be set to 64'
792 1.1 christos OUT="aix64-gcc"
793 1.1 christos fi
794 1.1 christos elif [ $OBJECT_MODE -eq 64 ]; then
795 1.1.1.2 christos echo 'Your $OBJECT_MODE was found to be set to 64'
796 1.1 christos OUT="aix64-cc"
797 1.1 christos else
798 1.1 christos OUT="aix-cc"
799 1.1 christos if [ $KERNEL_BITS -eq 64 ]; then
800 1.1 christos echo "WARNING! If you wish to build 64-bit kit, then you have to"
801 1.1.1.2 christos echo " invoke '$THERE/Configure aix64-cc' *manually*."
802 1.1.1.2 christos if [ "$DRYRUN" = "false" -a -t 1 ]; then
803 1.1 christos echo " You have ~5 seconds to press Ctrl-C to abort."
804 1.1.1.2 christos (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
805 1.1 christos fi
806 1.1 christos fi
807 1.1 christos fi
808 1.1 christos if (lsattr -E -O -l `lsdev -c processor|awk '{print$1;exit}'` | grep -i powerpc) >/dev/null 2>&1; then
809 1.1 christos : # this applies even to Power3 and later, as they return PowerPC_POWER[345]
810 1.1 christos else
811 1.1 christos options="$options no-asm"
812 1.1 christos fi
813 1.1 christos ;;
814 1.1 christos # these are all covered by the catchall below
815 1.1.1.2 christos i[3456]86-*-cygwin) OUT="Cygwin-x86" ;;
816 1.1 christos *-*-cygwin) OUT="Cygwin-${MACHINE}" ;;
817 1.1 christos x86-*-android|i?86-*-android) OUT="android-x86" ;;
818 1.1.1.2 christos armv[7-9]*-*-android)
819 1.1.1.2 christos OUT="android-armeabi"
820 1.1.1.2 christos __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
821 1.1.1.2 christos __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a";;
822 1.1.1.2 christos arm*-*-android) OUT="android-armeabi" ;;
823 1.1 christos *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
824 1.1 christos esac
825 1.1 christos
826 1.1.1.2 christos # NB: This atalla support has been superseded by the ENGINE support
827 1.1 christos # That contains its own header and definitions anyway. Support can
828 1.1 christos # be enabled or disabled on any supported platform without external
829 1.1 christos # headers, eg. by adding the "hw-atalla" switch to ./config or
830 1.1 christos # perl Configure
831 1.1 christos #
832 1.1 christos # See whether we can compile Atalla support
833 1.1 christos #if [ -f /usr/include/atasi.h ]
834 1.1 christos #then
835 1.1.1.2 christos # __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DATALLA"
836 1.1 christos #fi
837 1.1 christos
838 1.1.1.2 christos if [ -n "$CONFIG_OPTIONS" ]; then
839 1.1.1.2 christos options="$options $CONFIG_OPTIONS"
840 1.1 christos fi
841 1.1 christos
842 1.1 christos # gcc < 2.8 does not support -march=ultrasparc
843 1.1 christos if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
844 1.1 christos then
845 1.1 christos echo "WARNING! Falling down to 'solaris-sparcv8-gcc'."
846 1.1 christos echo " Upgrade to gcc-2.8 or later."
847 1.1 christos sleep 5
848 1.1 christos OUT=solaris-sparcv8-gcc
849 1.1 christos fi
850 1.1 christos if [ "$OUT" = "linux-sparcv9" -a $GCCVER -lt 28 ]
851 1.1 christos then
852 1.1 christos echo "WARNING! Falling down to 'linux-sparcv8'."
853 1.1 christos echo " Upgrade to gcc-2.8 or later."
854 1.1 christos sleep 5
855 1.1 christos OUT=linux-sparcv8
856 1.1 christos fi
857 1.1 christos
858 1.1 christos case "$GUESSOS" in
859 1.1 christos i386-*) options="$options 386" ;;
860 1.1 christos esac
861 1.1 christos
862 1.1.1.2 christos for i in aes aria bf camellia cast des dh dsa ec hmac idea md2 md5 mdc2 rc2 rc4 rc5 ripemd rsa seed sha sm2 sm3 sm4
863 1.1 christos do
864 1.1.1.2 christos if [ ! -d $THERE/crypto/$i ]
865 1.1 christos then
866 1.1 christos options="$options no-$i"
867 1.1 christos fi
868 1.1 christos done
869 1.1 christos
870 1.1 christos if [ -z "$OUT" ]; then
871 1.1 christos OUT="$CC"
872 1.1 christos fi
873 1.1 christos
874 1.1 christos if [ ".$PERL" = . ] ; then
875 1.1 christos for i in . `echo $PATH | sed 's/:/ /g'`; do
876 1.1 christos if [ -f "$i/perl5$EXE" ] ; then
877 1.1 christos PERL="$i/perl5$EXE"
878 1.1 christos break;
879 1.1 christos fi;
880 1.1 christos done
881 1.1 christos fi
882 1.1 christos
883 1.1 christos if [ ".$PERL" = . ] ; then
884 1.1 christos for i in . `echo $PATH | sed 's/:/ /g'`; do
885 1.1 christos if [ -f "$i/perl$EXE" ] ; then
886 1.1 christos if "$i/perl$EXE" -e 'exit($]<5.0)'; then
887 1.1 christos PERL="$i/perl$EXE"
888 1.1 christos break;
889 1.1 christos fi;
890 1.1 christos fi;
891 1.1 christos done
892 1.1 christos fi
893 1.1 christos
894 1.1 christos if [ ".$PERL" = . ] ; then
895 1.1 christos echo "You need Perl 5."
896 1.1 christos exit 1
897 1.1 christos fi
898 1.1 christos
899 1.1.1.2 christos # run Configure to check to see if we need to specify the
900 1.1 christos # compiler for the platform ... in which case we add it on
901 1.1 christos # the end ... otherwise we leave it off
902 1.1 christos
903 1.1.1.2 christos $PERL $THERE/Configure LIST | grep "$OUT-$CC" > /dev/null
904 1.1 christos if [ $? = "0" ]; then
905 1.1 christos OUT="$OUT-$CC"
906 1.1 christos fi
907 1.1 christos
908 1.1.1.2 christos OUT="$OUT"
909 1.1 christos
910 1.1.1.2 christos if [ "$OUT" = "darwin64-x86_64-cc" ]; then
911 1.1.1.2 christos echo "WARNING! If you wish to build 32-bit libraries, then you have to"
912 1.1.1.2 christos echo " invoke 'KERNEL_BITS=32 $THERE/config $options'."
913 1.1.1.2 christos fi
914 1.1.1.2 christos
915 1.1.1.2 christos if $PERL $THERE/Configure LIST | grep "$OUT" > /dev/null; then
916 1.1.1.2 christos if [ "$VERBOSE" = "true" ]; then
917 1.1.1.2 christos echo /usr/bin/env \
918 1.1.1.2 christos __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
919 1.1.1.2 christos __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
920 1.1.1.2 christos __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
921 1.1.1.2 christos __CNF_CFLAGS="'$__CNF_CFLAGS'" \
922 1.1.1.2 christos __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
923 1.1.1.2 christos __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
924 1.1.1.2 christos __CNF_LDLIBS="'$__CNF_LDLIBS'" \
925 1.1.1.2 christos $PERL $THERE/Configure $OUT $options
926 1.1.1.2 christos fi
927 1.1.1.2 christos if [ "$DRYRUN" = "false" ]; then
928 1.1.1.2 christos # eval to make sure quoted options, possibly with spaces inside,
929 1.1.1.2 christos # are treated right
930 1.1.1.2 christos eval /usr/bin/env \
931 1.1.1.2 christos __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
932 1.1.1.2 christos __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
933 1.1.1.2 christos __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
934 1.1.1.2 christos __CNF_CFLAGS="'$__CNF_CFLAGS'" \
935 1.1.1.2 christos __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
936 1.1.1.2 christos __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
937 1.1.1.2 christos __CNF_LDLIBS="'$__CNF_LDLIBS'" \
938 1.1.1.2 christos $PERL $THERE/Configure $OUT $options
939 1.1 christos fi
940 1.1 christos else
941 1.1 christos echo "This system ($OUT) is not supported. See file INSTALL for details."
942 1.1.1.2 christos exit 1
943 1.1 christos fi
944 1.1.1.2 christos
945 1.1.1.2 christos # Do not add anothing from here on, so we don't lose the Configure exit code
946 1.1 christos )
947