config revision 101613
155714Skris#!/bin/sh
255714Skris#
355714Skris# OpenSSL config: determine the operating system and run ./Configure
455714Skris#
555714Skris# "config -h" for usage information.
655714Skris#
755714Skris#          this is a merge of minarch and GuessOS from the Apache Group.
855714Skris#          Originally written by Tim Hudson <tjh@cryptsoft.com>.
955714Skris
1055714Skris# Original Apache Group comments on GuessOS
1155714Skris
1255714Skris# Simple OS/Platform guesser. Similar to config.guess but
1355714Skris# much, much smaller. Since it was developed for use with
1455714Skris# Apache, it follows under Apache's regular licensing
1555714Skris# with one specific addition: Any changes or additions
1655714Skris# to this script should be Emailed to the Apache
1755714Skris# group (apache@apache.org) in general and to
1855714Skris# Jim Jagielski (jim@jaguNET.com) in specific.
1955714Skris#
2055714Skris# Be as similar to the output of config.guess/config.sub
2155714Skris# as possible.
2255714Skris
2355714Skris# First get uname entries that we use below
2455714Skris
2555714SkrisMACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
2655714SkrisRELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
2755714SkrisSYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
2855714SkrisVERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
2955714Skris
3059191Skris
3155714Skris# Now test for ISC and SCO, since it is has a braindamaged uname.
3255714Skris#
3355714Skris# We need to work around FreeBSD 1.1.5.1 
3455714Skris(
3555714SkrisXREL=`uname -X 2>/dev/null | grep "^Release" | awk '{print $3}'`
3655714Skrisif [ "x$XREL" != "x" ]; then
3755714Skris    if [ -f /etc/kconfig ]; then
3855714Skris	case "$XREL" in
3955714Skris	    4.0|4.1)
4055714Skris		    echo "${MACHINE}-whatever-isc4"; exit 0
4155714Skris		;;
4255714Skris	esac
4355714Skris    else
4455714Skris	case "$XREL" in
4555714Skris	    3.2v4.2)
4655714Skris		echo "whatever-whatever-sco3"; exit 0
4755714Skris		;;
4855714Skris	    3.2v5.0*)
4955714Skris		echo "whatever-whatever-sco5"; exit 0
5055714Skris		;;
5155714Skris	    4.2MP)
5276866Skris		if [ "x$VERSION" = "x2.01" ]; then
5376866Skris		    echo "${MACHINE}-whatever-unixware201"; exit 0
5476866Skris		elif [ "x$VERSION" = "x2.02" ]; then
5576866Skris		    echo "${MACHINE}-whatever-unixware202"; exit 0
5676866Skris		elif [ "x$VERSION" = "x2.03" ]; then
5776866Skris		    echo "${MACHINE}-whatever-unixware203"; exit 0
5876866Skris		elif [ "x$VERSION" = "x2.1.1" ]; then
5955714Skris		    echo "${MACHINE}-whatever-unixware211"; exit 0
6059191Skris		elif [ "x$VERSION" = "x2.1.2" ]; then
6159191Skris		    echo "${MACHINE}-whatever-unixware212"; exit 0
6276866Skris		elif [ "x$VERSION" = "x2.1.3" ]; then
6376866Skris		    echo "${MACHINE}-whatever-unixware213"; exit 0
6455714Skris		else
6555714Skris		    echo "${MACHINE}-whatever-unixware2"; exit 0
6655714Skris		fi
6755714Skris		;;
6855714Skris	    4.2)
6955714Skris		echo "whatever-whatever-unixware1"; exit 0
7055714Skris		;;
7189837Skris     OpenUNIX)
7289837Skris		if [ "`echo x$VERSION | sed -e 's/\..*//'`" = "x8" ]; then
7389837Skris		    echo "${MACHINE}-unknown-OpenUNIX${VERSION}"; exit 0
7489837Skris		fi
7589837Skris		;;
7659191Skris	    5)
7759191Skris		if [ "`echo x$VERSION | sed -e 's/\..*//'`" = "x7" ]; then
7859191Skris		    echo "${MACHINE}-sco-unixware7"; exit 0
7959191Skris		fi
8059191Skris		;;
8155714Skris	esac
8255714Skris    fi
8355714Skrisfi
8455714Skris# Now we simply scan though... In most cases, the SYSTEM info is enough
8555714Skris#
8655714Skriscase "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
8768651Skris    MPE/iX:*)
8868651Skris	MACHINE=`echo "$MACHINE" | sed -e 's/-/_/g'`
8968651Skris	echo "parisc-hp-MPE/iX"; exit 0
9068651Skris	;;
9155714Skris    A/UX:*)
9255714Skris	echo "m68k-apple-aux3"; exit 0
9355714Skris	;;
9455714Skris
9576866Skris    AIX:[3456789]:4:*)
9676866Skris	echo "${MACHINE}-ibm-aix43"; exit 0
9776866Skris	;;
9876866Skris
9976866Skris    AIX:*:[56789]:*)
10076866Skris	echo "${MACHINE}-ibm-aix43"; exit 0
10176866Skris	;;
10276866Skris
10355714Skris    AIX:*)
10455714Skris	echo "${MACHINE}-ibm-aix"; exit 0
10555714Skris	;;
10655714Skris
10755714Skris    dgux:*)
10855714Skris	echo "${MACHINE}-dg-dgux"; exit 0
10955714Skris	;;
11055714Skris
11155714Skris    HI-UX:*)
11255714Skris	echo "${MACHINE}-hi-hiux"; exit 0
11355714Skris	;;
11455714Skris
11555714Skris    HP-UX:*)
11655714Skris	HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'`
11755714Skris	case "$HPUXVER" in
11855714Skris	    11.*)
11955714Skris		echo "${MACHINE}-hp-hpux11"; exit 0
12055714Skris		;;
12155714Skris	    10.*)
12255714Skris		echo "${MACHINE}-hp-hpux10"; exit 0
12355714Skris		;;
12455714Skris	    *)
12555714Skris		echo "${MACHINE}-hp-hpux"; exit 0
12655714Skris		;;
12755714Skris	esac
12855714Skris	;;
12955714Skris
13055714Skris    IRIX:5.*)
13155714Skris	echo "mips2-sgi-irix"; exit 0
13255714Skris	;;
13355714Skris
13455714Skris    IRIX:6.*)
13555714Skris	echo "mips3-sgi-irix"; exit 0
13655714Skris	;;
13755714Skris
13855714Skris    IRIX64:*)
13955714Skris	echo "mips4-sgi-irix64"; exit 0
14055714Skris	;;
14155714Skris
14255714Skris    Linux:[2-9].*)
14355714Skris	echo "${MACHINE}-whatever-linux2"; exit 0
14455714Skris	;;
14555714Skris
14655714Skris    Linux:1.*)
14755714Skris	echo "${MACHINE}-whatever-linux1"; exit 0
14855714Skris	;;
14955714Skris
15055714Skris    LynxOS:*)
15155714Skris	echo "${MACHINE}-lynx-lynxos"; exit 0
15255714Skris	;;
15355714Skris
15455714Skris    BSD/OS:4.*)  # BSD/OS always says 386
15555714Skris	echo "i486-whatever-bsdi4"; exit 0
15655714Skris	;;
15755714Skris
15855714Skris    BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*)
15955714Skris        case `/sbin/sysctl -n hw.model` in
16055714Skris	    Pentium*)
16155714Skris                echo "i586-whatever-bsdi"; exit 0
16255714Skris                ;;
16355714Skris            *)
16455714Skris                echo "i386-whatever-bsdi"; exit 0
16555714Skris                ;;
16655714Skris            esac;
16755714Skris	;;
16855714Skris
16955714Skris    BSD/386:*|BSD/OS:*)
17055714Skris	echo "${MACHINE}-whatever-bsdi"; exit 0
17155714Skris	;;
17255714Skris
17355714Skris    FreeBSD:*)
17455714Skris        VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'`
17555714Skris        MACH=`sysctl -n hw.model`
17655714Skris        ARCH='whatever'
17755714Skris        case ${MACH} in
17855714Skris           *386*       ) MACH="i386"     ;;
17955714Skris           *486*       ) MACH="i486"     ;;
18055714Skris           Pentium\ II*) MACH="i686"     ;;
18155714Skris           Pentium*    ) MACH="i586"     ;;
18255714Skris           Alpha*      ) MACH="alpha"    ;;
18355714Skris           *           ) MACH="$MACHINE" ;;
18455714Skris        esac
18555714Skris        case ${MACH} in
18655714Skris           i[0-9]86 ) ARCH="pc" ;;
18755714Skris        esac
18855714Skris        echo "${MACH}-${ARCH}-freebsd${VERS}"; exit 0
18955714Skris        ;;
19055714Skris
19155714Skris    NetBSD:*:*:*386*)
19272613Skris        echo "`(/usr/sbin/sysctl -n hw.model || /sbin/sysctl -n hw.model) | sed 's,.*\(.\)86-class.*,i\186,'`-whatever-netbsd"; exit 0
19355714Skris	;;
19455714Skris
19555714Skris    NetBSD:*)
19655714Skris	echo "${MACHINE}-whatever-netbsd"; exit 0
19755714Skris	;;
19855714Skris
19955714Skris    OpenBSD:*)
20055714Skris	echo "${MACHINE}-whatever-openbsd"; exit 0
20155714Skris	;;
20255714Skris
20389837Skris    OpenUNIX:*)
20489837Skris	echo "${MACHINE}-unknown-OpenUNIX${VERSION}"; exit 0
20589837Skris	;;
20689837Skris
20755714Skris    OSF1:*:*:*alpha*)
20889837Skris	OSFMAJOR=`echo ${RELEASE}| sed -e 's/^V\([0-9]*\)\..*$/\1/'`
20989837Skris	case "$OSFMAJOR" in
21089837Skris	    4|5)
21189837Skris		echo "${MACHINE}-dec-tru64"; exit 0
21289837Skris		;;
21389837Skris	    1|2|3)
21489837Skris		echo "${MACHINE}-dec-osf"; exit 0
21589837Skris		;;
21689837Skris	    *)
21789837Skris		echo "${MACHINE}-dec-osf"; exit 0
21889837Skris		;;
21989837Skris	esac
22055714Skris	;;
22155714Skris
22255714Skris    QNX:*)
22389837Skris	case "$RELEASE" in
22468651Skris	    4*)
22568651Skris		echo "${MACHINE}-whatever-qnx4"
22655714Skris		;;
22789837Skris	    6*)
22889837Skris		echo "${MACHINE}-whatever-qnx6"
22989837Skris		;;
23055714Skris	    *)
23168651Skris		echo "${MACHINE}-whatever-qnx"
23255714Skris		;;
23355714Skris	esac
23455714Skris	exit 0
23555714Skris	;;
23655714Skris
23755714Skris    Paragon*:*:*:*)
23855714Skris	echo "i860-intel-osf1"; exit 0
23955714Skris	;;
24055714Skris
24159191Skris    Rhapsody:*)
24259191Skris	echo "ppc-apple-rhapsody"; exit 0
24359191Skris	;;
24459191Skris
24589837Skris    Darwin:*)
24689837Skris	echo "ppc-apple-darwin"; exit 0
24789837Skris	;;
24889837Skris
24955714Skris    SunOS:5.*)
25068651Skris	echo "${MACHINE}-whatever-solaris2"; exit 0
25155714Skris	;;
25255714Skris
25355714Skris    SunOS:*)
25455714Skris	echo "${MACHINE}-sun-sunos4"; exit 0
25555714Skris	;;
25655714Skris
25755714Skris    UNIX_System_V:4.*:*)
25855714Skris	echo "${MACHINE}-whatever-sysv4"; exit 0
25955714Skris	;;
26055714Skris
26155714Skris    *:4*:R4*:m88k)
26255714Skris	echo "${MACHINE}-whatever-sysv4"; exit 0
26355714Skris	;;
26455714Skris
26555714Skris    DYNIX/ptx:4*:*)
26655714Skris	echo "${MACHINE}-whatever-sysv4"; exit 0
26755714Skris	;;
26855714Skris
26955714Skris    *:4.0:3.0:3[34]?? | *:4.0:3.0:3[34]??,*)
27055714Skris	echo "i486-ncr-sysv4"; exit 0
27155714Skris	;;
27255714Skris
27355714Skris    ULTRIX:*)
27455714Skris	echo "${MACHINE}-unknown-ultrix"; exit 0
27555714Skris	;;
27655714Skris
27755714Skris    SINIX*|ReliantUNIX*)
27855714Skris	echo "${MACHINE}-siemens-sysv4"; exit 0
27955714Skris	;;
28055714Skris
28155714Skris    POSIX-BC*)
28255714Skris	echo "${MACHINE}-siemens-sysv4"; exit 0   # Here, $MACHINE == "BS2000"
28355714Skris	;;
28455714Skris
28555714Skris    machten:*)
28655714Skris       echo "${MACHINE}-tenon-${SYSTEM}"; exit 0;
28755714Skris       ;;
28855714Skris
28955714Skris    library:*)
29055714Skris	echo "${MACHINE}-ncr-sysv4"; exit 0
29155714Skris	;;
29255714Skris
29355714Skris    ConvexOS:*:11.0:*)
29455714Skris	echo "${MACHINE}-v11-${SYSTEM}"; exit 0;
29555714Skris	;;
29655714Skris
29768651Skris    NEWS-OS:4.*)
29868651Skris	echo "mips-sony-newsos4"; exit 0;
29968651Skris	;;
30068651Skris
30189837Skris    CYGWIN*)
302100928Snectar	case "$RELEASE" in
303100928Snectar	    [bB]*|1.0|1.[12].*)
304100928Snectar		echo "${MACHINE}-whatever-cygwin_pre1.3"
305100928Snectar		;;
306100928Snectar	    *)
307100928Snectar		echo "${MACHINE}-whatever-cygwin"
308100928Snectar		;;
309100928Snectar	esac
310100928Snectar	exit 0
31189837Skris	;;
31289837Skris
313100928Snectar    *"CRAY T3E")
314100928Snectar       echo "t3e-cray-unicosmk"; exit 0;
315100928Snectar       ;;
316100928Snectar
317100928Snectar    *CRAY*)
318100928Snectar       echo "j90-cray-unicos"; exit 0;
319100928Snectar       ;;
32055714Skrisesac
32155714Skris
32255714Skris#
32355714Skris# Ugg. These are all we can determine by what we know about
32455714Skris# the output of uname. Be more creative:
32555714Skris#
32655714Skris
32755714Skris# Do the Apollo stuff first. Here, we just simply assume
32855714Skris# that the existance of the /usr/apollo directory is proof
32955714Skris# enough
33055714Skrisif [ -d /usr/apollo ]; then
33155714Skris    echo "whatever-apollo-whatever"
33255714Skris    exit 0
33355714Skrisfi
33455714Skris
33555714Skris# Now NeXT
33655714SkrisISNEXT=`hostinfo 2>/dev/null`
33755714Skriscase "$ISNEXT" in
33855714Skris    *'NeXT Mach 3.3'*)
33955714Skris	echo "whatever-next-nextstep3.3"; exit 0
34055714Skris	;;
34155714Skris    *NeXT*)
34255714Skris	echo "whatever-next-nextstep"; exit 0
34355714Skris	;;
34455714Skrisesac
34555714Skris
34655714Skris# At this point we gone through all the one's
34755714Skris# we know of: Punt
34855714Skris
34955714Skrisecho "${MACHINE}-whatever-${SYSTEM}" 
35055714Skrisexit 0
35155714Skris) 2>/dev/null | (
35255714Skris
35355714Skris# ---------------------------------------------------------------------------
35455714Skris# this is where the translation occurs into SSLeay terms
35555714Skris# ---------------------------------------------------------------------------
35655714Skris
35755714SkrisPREFIX=""
35855714SkrisSUFFIX=""
35955714SkrisTEST="false"
36055714Skris
36155714Skris# pick up any command line args to config
36255714Skrisfor i
36355714Skrisdo
36455714Skriscase "$i" in 
36555714Skris-d*) PREFIX="debug-";;
36655714Skris-t*) TEST="true";;
36755714Skris-h*) TEST="true"; cat <<EOF
36855714SkrisUsage: config [options]
36955714Skris -d	Add a debug- prefix to machine choice.
37055714Skris -t	Test mode, do not run the Configure perl script.
37155714Skris -h	This help.
37255714Skris
37355714SkrisAny other text will be passed to the Configure perl script.
37455714SkrisSee INSTALL for instructions.
37555714Skris
37655714SkrisEOF
37755714Skris;;
37855714Skris*) options=$options" $i" ;;
37955714Skrisesac
38055714Skrisdone
38155714Skris
38255714Skris# figure out if gcc is available and if so we use it otherwise
38355714Skris# we fallback to whatever cc does on the system
384100936SnectarGCCVER=`(gcc -dumpversion) 2>/dev/null`
38555714Skrisif [ "$GCCVER" != "" ]; then
38655714Skris  CC=gcc
387100936Snectar  # Since gcc 3.1 gcc --version behaviour has changed.  gcc -dumpversion
388100936Snectar  # does give us what we want though, so we use that.  We just just the
389100936Snectar  # major and minor version numbers.
39055714Skris  # peak single digit before and after first dot, e.g. 2.95.1 gives 29
39155714Skris  GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'`
39255714Skriselse
39355714Skris  CC=cc
39455714Skrisfi
395101613SnectarGCCVER=${GCCVER:-0}
396100936Snectarif [ "$SYSTEM" = "HP-UX" ];then
397100936Snectar  # By default gcc is a ILP32 compiler (with long long == 64).
398100936Snectar  GCC_BITS="32"
399100936Snectar  if [ $GCCVER -ge 30 ]; then
400100936Snectar    # PA64 support only came in with gcc 3.0.x.
401100936Snectar    # We look for the preprocessor symbol __LP64__ indicating
402100936Snectar    # 64bit bit long and pointer.  sizeof(int) == 32 on HPUX64.
403100936Snectar    if gcc -v -E -x c /dev/null 2>&1 | grep __LP64__ > /dev/null; then
404100936Snectar      GCC_BITS="64"
405100936Snectar    fi
406100936Snectar  fi
407100936Snectarfi
40855714Skrisif [ "$SYSTEM" = "SunOS" ]; then
40959191Skris  # check for WorkShop C, expected output is "cc: blah-blah C x.x"
41055714Skris  CCVER=`(cc -V 2>&1) 2>/dev/null | \
41155714Skris  	egrep -e '^cc: .* C [0-9]\.[0-9]' | \
41255714Skris	sed 's/.* C \([0-9]\)\.\([0-9]\).*/\1\2/'`
41355714Skris  CCVER=${CCVER:-0}
41455714Skris  if [ $CCVER -gt 40 ]; then
41555714Skris    CC=cc	# overrides gcc!!!
41655714Skris    if [ $CCVER -eq 50 ]; then
41755714Skris      echo "WARNING! Detected WorkShop C 5.0. Do make sure you have"
41855714Skris      echo "         patch #107357-01 or later applied."
41955714Skris      sleep 5
42055714Skris    fi
42155714Skris  elif [ "$CC" = "cc" -a $CCVER -gt 0 ]; then
42255714Skris    CC=sc3
42355714Skris  fi
42455714Skrisfi
42555714Skris
42659191Skrisif [ "${SYSTEM}-${MACHINE}" = "Linux-alpha" ]; then
42759191Skris  # check for Compaq C, expected output is "blah-blah C Vx.x"
42859191Skris  CCCVER=`(ccc -V 2>&1) 2>/dev/null | \
42959191Skris	egrep -e '.* C V[0-9]\.[0-9]' | \
43059191Skris	sed 's/.* C V\([0-9]\)\.\([0-9]\).*/\1\2/'`
43159191Skris  CCCVER=${CCCVER:-0}
43259191Skris  if [ $CCCVER -gt 60 ]; then
43359191Skris    CC=ccc	# overrides gcc!!! well, ccc outperforms inoticeably
43459191Skris		# only on hash routines and des, otherwise gcc (2.95)
43559191Skris		# keeps along rather tight...
43659191Skris  fi
43759191Skrisfi
43859191Skris
43955714SkrisGCCVER=${GCCVER:-0}
44055714SkrisCCVER=${CCVER:-0}
44155714Skris
44255714Skris# read the output of the embedded GuessOS 
44355714Skrisread GUESSOS
44455714Skris
44555714Skrisecho Operating system: $GUESSOS
44655714Skris
44755714Skris# now map the output into SSLeay terms ... really should hack into the
44855714Skris# script above so we end up with values in vars but that would take
44955714Skris# more time that I want to waste at the moment
45055714Skriscase "$GUESSOS" in
45155714Skris  mips2-sgi-irix)
45255714Skris	CPU=`(hinv -t cpu) 2>/dev/null | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
45355714Skris	CPU=${CPU:-0}
45455714Skris	if [ $CPU -ge 4000 ]; then
45555714Skris		options="$options -mips2"
45655714Skris	fi
45755714Skris	OUT="irix-$CC"
45855714Skris	;;
45955714Skris  mips3-sgi-irix)
46055714Skris	CPU=`(hinv -t cpu) 2>/dev/null | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
46155714Skris	CPU=${CPU:-0}
46255714Skris	if [ $CPU -ge 5000 ]; then
46355714Skris		options="$options -mips4"
46455714Skris	else
46555714Skris		options="$options -mips3"
46655714Skris	fi
46755714Skris	OUT="irix-mips3-$CC"
46855714Skris	;;
46955714Skris  mips4-sgi-irix64)
47055714Skris	echo "WARNING! If you wish to build 64-bit library, then you have to"
47176866Skris	echo "         invoke './Configure irix64-mips4-$CC' *manually*."
47272613Skris	echo "         Type return if you want to continue, Ctrl-C to abort."
47355714Skris	read waste < /dev/tty
47476866Skris        CPU=`(hinv -t cpu) 2>/dev/null | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
47576866Skris        CPU=${CPU:-0}
47676866Skris        if [ $CPU -ge 5000 ]; then
47776866Skris                options="$options -mips4"
47876866Skris        else
47976866Skris                options="$options -mips3"
48076866Skris        fi
48155714Skris	OUT="irix-mips3-$CC"
48255714Skris	;;
48359191Skris  alpha-*-linux2)
48459191Skris        ISA=`awk '/cpu model/{print$4}' /proc/cpuinfo`
48559191Skris	case ${ISA:-generic} in
48659191Skris	*[67])	OUT="linux-alpha+bwx-$CC" ;;
48759191Skris	*)	OUT="linux-alpha-$CC" ;;
48859191Skris	esac
48959191Skris	if [ "$CC" = "gcc" ]; then
49059191Skris	    case ${ISA:-generic} in
49159191Skris	    EV5|EV45)		options="$options -mcpu=ev5";;
49259191Skris	    EV56|PCA56)		options="$options -mcpu=ev56";;
49359191Skris	    EV6|EV67|PCA57)	options="$options -mcpu=ev6";;
49459191Skris	    esac
49559191Skris	fi
49659191Skris	;;
49789837Skris  mips-*-linux?)
49889837Skris          cat >dummy.c <<EOF
49989837Skris#include <stdio.h>  /* for printf() prototype */
50089837Skris        int main (argc, argv) int argc; char *argv[]; {
50189837Skris#ifdef __MIPSEB__
50289837Skris  printf ("linux-%s\n", argv[1]);
50389837Skris#endif
50489837Skris#ifdef __MIPSEL__
50589837Skris  printf ("linux-%sel\n", argv[1]);
50689837Skris#endif
50789837Skris  return 0;
50889837Skris}
50989837SkrisEOF
51089837Skris	${CC} -o dummy dummy.c && OUT=`./dummy ${MACHINE}`
51189837Skris	rm dummy dummy.c
51289837Skris	;;
513100936Snectar  ppc64-*-linux2)
514100936Snectar	#Use the standard target for PPC architecture until we create a
515100936Snectar	#special one for the 64bit architecture.
516100936Snectar	OUT="linux-ppc" ;;
51759191Skris  ppc-*-linux2) OUT="linux-ppc" ;;
51868651Skris  m68k-*-linux*) OUT="linux-m68k" ;;
51959191Skris  ia64-*-linux?) OUT="linux-ia64" ;;
52059191Skris  ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
52189837Skris  ppc-apple-darwin) OUT="darwin-ppc-cc" ;;
52255714Skris  sparc64-*-linux2)
52355714Skris	#Before we can uncomment following lines we have to wait at least
52455714Skris	#till 64-bit glibc for SPARC is operational:-(
52555714Skris	#echo "WARNING! If you wish to build 64-bit library, then you have to"
52655714Skris	#echo "         invoke './Configure linux64-sparcv9' *manually*."
52772613Skris	#echo "         Type return if you want to continue, Ctrl-C to abort."
52855714Skris	#read waste < /dev/tty
52955714Skris	OUT="linux-sparcv9" ;;
53055714Skris  sparc-*-linux2)
53172613Skris	KARCH=`awk '/^type/{print$3}' /proc/cpuinfo`
53255714Skris	case ${KARCH:-sun4} in
53355714Skris	sun4u*)	OUT="linux-sparcv9" ;;
53455714Skris	sun4m)	OUT="linux-sparcv8" ;;
53555714Skris	sun4d)	OUT="linux-sparcv8" ;;
53655714Skris	*)	OUT="linux-sparcv7" ;;
53755714Skris	esac ;;
538100928Snectar  parisc-*-linux2)
539100928Snectar        CPUARCH=`awk '/cpu family/{print substr($5,1,3)}' /proc/cpuinfo`
540100928Snectar	CPUSCHEDULE=`awk '/^cpu.[ 	]: PA/{print substr($3,3)}' /proc/cpuinfo`
541100928Snectar
542100928Snectar	# ??TODO ??  Model transformations
543100928Snectar	# 0. CPU Architecture for the 1.1 processor has letter suffixes. We strip that off
544100928Snectar	#    assuming no further arch. identification will ever be used by GCC.
545100928Snectar	# 1. I'm most concerned about whether is a 7300LC is closer to a 7100 versus a 7100LC.
546100928Snectar	# 2. The variant 64-bit processors cause concern should GCC support explicit schedulers
547100928Snectar	#    for these chips in the future.
548100928Snectar	#         PA7300LC -> 7100LC (1.1)
549100928Snectar	#         PA8200   -> 8000   (2.0)
550100928Snectar	#         PA8500   -> 8000   (2.0)
551100928Snectar	#         PA8600   -> 8000   (2.0)
552100928Snectar
553100928Snectar	CPUSCHEDULE=`echo $CPUSCHEDULE|sed -e 's/7300LC/7100LC/' -e 's/8?00/8000/'`
554100928Snectar	# Finish Model transformations
555100928Snectar
556100928Snectar	options="$options -mschedule=$CPUSCHEDULE -march=$CPUARCH"
557100928Snectar	OUT="linux-parisc" ;;
55868651Skris  arm*-*-linux2) OUT="linux-elf-arm" ;;
55972613Skris  s390-*-linux2) OUT="linux-s390" ;;
560100928Snectar  s390x-*-linux?) OUT="linux-s390x" ;;
56155714Skris  *-*-linux2) OUT="linux-elf" ;;
56255714Skris  *-*-linux1) OUT="linux-aout" ;;
56368651Skris  sun4u*-*-solaris2)
56455714Skris	ISA64=`(isalist) 2>/dev/null | grep sparcv9`
56555714Skris	if [ "$ISA64" != "" -a "$CC" = "cc" -a $CCVER -ge 50 ]; then
56655714Skris		echo "WARNING! If you wish to build 64-bit library, then you have to"
56755714Skris		echo "         invoke './Configure solaris64-sparcv9-cc' *manually*."
56872613Skris		echo "         Type return if you want to continue, Ctrl-C to abort."
56955714Skris		read waste < /dev/tty
57055714Skris	fi
57155714Skris	OUT="solaris-sparcv9-$CC" ;;
57268651Skris  sun4m-*-solaris2)	OUT="solaris-sparcv8-$CC" ;;
57368651Skris  sun4d-*-solaris2)	OUT="solaris-sparcv8-$CC" ;;
57468651Skris  sun4*-*-solaris2)	OUT="solaris-sparcv7-$CC" ;;
57568651Skris  *86*-*-solaris2) OUT="solaris-x86-$CC" ;;
57655714Skris  *-*-sunos4) OUT="sunos-$CC" ;;
57755714Skris  alpha*-*-freebsd*) OUT="FreeBSD-alpha" ;;
57855714Skris  *-freebsd[3-9]*) OUT="FreeBSD-elf" ;;
57955714Skris  *-freebsd[1-2]*) OUT="FreeBSD" ;;
58055714Skris  *86*-*-netbsd) OUT="NetBSD-x86" ;;
58155714Skris  sun3*-*-netbsd) OUT="NetBSD-m68" ;;
58255714Skris  *-*-netbsd) OUT="NetBSD-sparc" ;;
58355714Skris  *86*-*-openbsd) OUT="OpenBSD-x86" ;;
58455714Skris  alpha*-*-openbsd) OUT="OpenBSD-alpha" ;;
58555714Skris  pmax*-*-openbsd) OUT="OpenBSD-mips" ;;
58655714Skris  *-*-openbsd) OUT="OpenBSD" ;;
58755714Skris  *86*-*-bsdi4) OUT="bsdi-elf-gcc" ;;
58889837Skris  *-*-osf) OUT="alphaold-cc" ;;
58989837Skris  *-*-tru64) OUT="alpha-cc" ;;
59089837Skris  *-*-OpenUNIX*)
59189837Skris	if [ "$CC" = "gcc" ]; then
59289837Skris	  OUT="OpenUNIX-8-gcc" 
59389837Skris	else    
59489837Skris	  OUT="OpenUNIX-8" 
59589837Skris	fi
59689837Skris	;;
59759191Skris  *-*-unixware7) OUT="unixware-7" ;;
59859191Skris  *-*-UnixWare7) OUT="unixware-7" ;;
59959191Skris  *-*-Unixware7) OUT="unixware-7" ;;
60076866Skris  *-*-unixware20*) OUT="unixware-2.0" ;;
60176866Skris  *-*-unixware21*) OUT="unixware-2.1" ;;
60276866Skris  *-*-UnixWare20*) OUT="unixware-2.0" ;;
60376866Skris  *-*-UnixWare21*) OUT="unixware-2.1" ;;
60476866Skris  *-*-Unixware20*) OUT="unixware-2.0" ;;
60576866Skris  *-*-Unixware21*) OUT="unixware-2.1" ;;
60655714Skris  BS2000-siemens-sysv4) OUT="BS2000-OSD" ;;
60755714Skris  RM*-siemens-sysv4) OUT="ReliantUNIX" ;;
60855714Skris  *-siemens-sysv4) OUT="SINIX" ;;
609100936Snectar  *-hpux1*)
610100936Snectar	if [ $CC = "gcc" ];
611100936Snectar	then
612100936Snectar	  if [ $GCC_BITS = "64" ]; then
613100936Snectar	    OUT="hpux64-parisc-gcc"
614100936Snectar	  else
615100936Snectar	    OUT="hpux-parisc-gcc"
616100936Snectar	  fi
617100936Snectar	else
618100936Snectar	  OUT="hpux-parisc-$CC"
619100936Snectar	fi
620100936Snectar	options="$options -D_REENTRANT" ;;
62159191Skris  *-hpux)	OUT="hpux-parisc-$CC" ;;
62255714Skris  # these are all covered by the catchall below
62355714Skris  # *-aix) OUT="aix-$CC" ;;
62455714Skris  # *-dgux) OUT="dgux" ;;
62568651Skris  mips-sony-newsos4) OUT="newsos4-gcc" ;;
626100928Snectar  *-*-cygwin_pre1.3) OUT="Cygwin-pre1.3" ;;
627100928Snectar  *-*-cygwin) OUT="Cygwin" ;;
628100928Snectar  t3e-cray-unicosmk) OUT="cray-t3e" ;;
629100928Snectar  j90-cray-unicos) OUT="cray-j90" ;;
63055714Skris  *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
63155714Skrisesac
63255714Skris
63359191Skris# See whether we can compile Atalla support
63459191Skrisif [ -f /usr/include/atasi.h ]
63559191Skristhen
63659191Skris  options="$options -DATALLA"
63759191Skrisfi
63859191Skris
63955714Skris# gcc < 2.8 does not support -mcpu=ultrasparc
64055714Skrisif [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
64155714Skristhen
64255714Skris  echo "WARNING! Do consider upgrading to gcc-2.8 or later."
64355714Skris  sleep 5
64455714Skris  OUT=solaris-sparcv9-gcc27
64555714Skrisfi
64655714Skrisif [ "$OUT" = "linux-sparcv9" -a $GCCVER -lt 28 ]
64755714Skristhen
64855714Skris  echo "WARNING! Falling down to 'linux-sparcv8'."
64955714Skris  echo "         Upgrade to gcc-2.8 or later."
65055714Skris  sleep 5
65155714Skris  OUT=linux-sparcv8
65255714Skrisfi
65355714Skris
65455714Skriscase "$GUESSOS" in
65555714Skris  i386-*) options="$options 386" ;;
65655714Skrisesac
65755714Skris
65889837Skrisfor i in bf cast des dh dsa hmac idea md2 md5 mdc2 rc2 rc4 rc5 ripemd rsa sha
65955714Skrisdo
66055714Skris  if [ ! -d crypto/$i ]
66155714Skris  then
66255714Skris    options="$options no-$i"
66355714Skris  fi
66455714Skrisdone
66555714Skris
66655714Skrisif [ -z "$OUT" ]; then
66755714Skris  OUT="$CC"
66855714Skrisfi
66955714Skris
67055714Skrisif [ ".$PERL" = . ] ; then
67155714Skris	for i in . `echo $PATH | sed 's/:/ /g'`; do
67255714Skris		if [ -f "$i/perl5" ] ; then
67355714Skris			PERL="$i/perl5"
67455714Skris			break;
67555714Skris		fi;
67655714Skris	done
67755714Skrisfi
67855714Skris
67955714Skrisif [ ".$PERL" = . ] ; then
68055714Skris	for i in . `echo $PATH | sed 's/:/ /g'`; do
68155714Skris		if [ -f "$i/perl" ] ; then
68255714Skris			if "$i/perl" -e 'exit($]<5.0)'; then
68355714Skris				PERL="$i/perl"
68455714Skris				break;
68555714Skris			fi;
68655714Skris		fi;
68755714Skris	done
68855714Skrisfi
68955714Skris
69055714Skrisif [ ".$PERL" = . ] ; then
69155714Skris	echo "You need Perl 5."
69255714Skris	exit 1
69355714Skrisfi
69455714Skris
69555714Skris# run Configure to check to see if we need to specify the 
69655714Skris# compiler for the platform ... in which case we add it on
69755714Skris# the end ... otherwise we leave it off
69855714Skris
69959191Skris$PERL ./Configure LIST | grep "$OUT-$CC" > /dev/null
70055714Skrisif [ $? = "0" ]; then
70155714Skris  OUT="$OUT-$CC"
70255714Skrisfi
70355714Skris
70455714SkrisOUT="$PREFIX$OUT"
70555714Skris
70659191Skris$PERL ./Configure LIST | grep "$OUT" > /dev/null
70755714Skrisif [ $? = "0" ]; then
70872613Skris  echo Configuring for $OUT
70955714Skris
71055714Skris  if [ "$TEST" = "true" ]; then
71155714Skris    echo $PERL ./Configure $OUT $options
71255714Skris  else
71355714Skris    $PERL ./Configure $OUT $options
71455714Skris  fi
71555714Skriselse
71655714Skris  echo "This system ($OUT) is not supported. See file INSTALL for details."
71755714Skrisfi
71855714Skris)
719