Home | History | Annotate | Line # | Download | only in dist
config revision 1.1.1.9.2.2
      1          1.1  christos #!/bin/sh
      2  1.1.1.9.2.2    martin # Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved.
      3          1.1  christos #
      4      1.1.1.7  christos # Licensed under the OpenSSL license (the "License").  You may not use
      5      1.1.1.7  christos # this file except in compliance with the License.  You can obtain a copy
      6      1.1.1.7  christos # in the file LICENSE in the source distribution or at
      7      1.1.1.7  christos # https://www.openssl.org/source/license.html
      8          1.1  christos 
      9      1.1.1.7  christos # OpenSSL config: determine the operating system and run ./Configure
     10      1.1.1.7  christos # Derived from minarch and GuessOS from Apache.
     11          1.1  christos #
     12      1.1.1.7  christos # Do "config -h" for usage information.
     13          1.1  christos SUFFIX=""
     14      1.1.1.7  christos DRYRUN="false"
     15      1.1.1.7  christos VERBOSE="false"
     16          1.1  christos EXE=""
     17      1.1.1.7  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.9  christos case "$i" in
     23      1.1.1.7  christos -d*) options=$options" --debug";;
     24      1.1.1.7  christos -t*) DRYRUN="true" VERBOSE="true";;
     25      1.1.1.7  christos -v*) VERBOSE="true";;
     26      1.1.1.7  christos -h*) DRYRUN="true"; cat <<EOF
     27          1.1  christos Usage: config [options]
     28      1.1.1.7  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.7  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.8  christos *)  i=`echo "$i" | sed -e "s|'|'\\\\\\''|g"`
     39      1.1.1.8  christos     options="$options '$i'" ;;
     40          1.1  christos esac
     41          1.1  christos done
     42          1.1  christos 
     43      1.1.1.8  christos # Environment that's being passed to Configure
     44      1.1.1.8  christos __CNF_CPPDEFINES=
     45      1.1.1.8  christos __CNF_CPPINCLUDES=
     46      1.1.1.8  christos __CNF_CPPFLAGS=
     47      1.1.1.8  christos __CNF_CFLAGS=
     48      1.1.1.8  christos __CNF_CXXFLAGS=
     49      1.1.1.8  christos __CNF_LDFLAGS=
     50      1.1.1.8  christos __CNF_LDLIBS=
     51      1.1.1.8  christos 
     52          1.1  christos # First get uname entries that we use below
     53          1.1  christos 
     54      1.1.1.2  christos [ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
     55      1.1.1.2  christos [ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
     56      1.1.1.2  christos [ "$SYSTEM" ] || SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
     57      1.1.1.2  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.9  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.8  christos     DragonFly:*)
    201      1.1.1.8  christos 	echo "${MACHINE}-whatever-dragonfly"; exit 0
    202      1.1.1.8  christos 	;;
    203      1.1.1.8  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.7  christos     Haiku:*)
    209      1.1.1.7  christos 	echo "${MACHINE}-whatever-haiku"; exit 0
    210      1.1.1.7  christos 	;;
    211      1.1.1.7  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.1.7  christos 	    x86_64)
    257      1.1.1.7  christos 		echo "x86_64-apple-darwin${VERSION}"
    258      1.1.1.7  christos 		;;
    259          1.1  christos 	    *)
    260          1.1  christos 		echo "i686-apple-darwin${VERSION}"
    261          1.1  christos 		;;
    262          1.1  christos 	esac
    263          1.1  christos 	exit 0
    264          1.1  christos 	;;
    265          1.1  christos 
    266          1.1  christos     SunOS:5.*)
    267          1.1  christos 	echo "${MACHINE}-whatever-solaris2"; exit 0
    268          1.1  christos 	;;
    269          1.1  christos 
    270          1.1  christos     SunOS:*)
    271          1.1  christos 	echo "${MACHINE}-sun-sunos4"; exit 0
    272          1.1  christos 	;;
    273          1.1  christos 
    274          1.1  christos     UNIX_System_V:4.*:*)
    275          1.1  christos 	echo "${MACHINE}-whatever-sysv4"; exit 0
    276          1.1  christos 	;;
    277          1.1  christos 
    278          1.1  christos     VOS:*:*:i786)
    279          1.1  christos      echo "i386-stratus-vos"; exit 0
    280          1.1  christos      ;;
    281          1.1  christos 
    282          1.1  christos     VOS:*:*:*)
    283          1.1  christos      echo "hppa1.1-stratus-vos"; exit 0
    284          1.1  christos      ;;
    285          1.1  christos 
    286          1.1  christos     *:4*:R4*:m88k)
    287          1.1  christos 	echo "${MACHINE}-whatever-sysv4"; exit 0
    288          1.1  christos 	;;
    289          1.1  christos 
    290          1.1  christos     DYNIX/ptx:4*:*)
    291          1.1  christos 	echo "${MACHINE}-whatever-sysv4"; exit 0
    292          1.1  christos 	;;
    293          1.1  christos 
    294          1.1  christos     *:4.0:3.0:3[34]?? | *:4.0:3.0:3[34]??,*)
    295          1.1  christos 	echo "i486-ncr-sysv4"; exit 0
    296          1.1  christos 	;;
    297          1.1  christos 
    298          1.1  christos     ULTRIX:*)
    299          1.1  christos 	echo "${MACHINE}-unknown-ultrix"; exit 0
    300          1.1  christos 	;;
    301          1.1  christos 
    302          1.1  christos     POSIX-BC*)
    303          1.1  christos 	echo "${MACHINE}-siemens-sysv4"; exit 0   # Here, $MACHINE == "BS2000"
    304          1.1  christos 	;;
    305          1.1  christos 
    306          1.1  christos     machten:*)
    307          1.1  christos        echo "${MACHINE}-tenon-${SYSTEM}"; exit 0;
    308          1.1  christos        ;;
    309          1.1  christos 
    310          1.1  christos     library:*)
    311          1.1  christos 	echo "${MACHINE}-ncr-sysv4"; exit 0
    312          1.1  christos 	;;
    313          1.1  christos 
    314          1.1  christos     ConvexOS:*:11.0:*)
    315          1.1  christos 	echo "${MACHINE}-v11-${SYSTEM}"; exit 0;
    316          1.1  christos 	;;
    317          1.1  christos 
    318      1.1.1.7  christos     # The following combinations are supported
    319      1.1.1.7  christos     # MINGW64* on x86_64 => mingw64
    320      1.1.1.7  christos     # MINGW32* on x86_64 => mingw
    321      1.1.1.7  christos     # MINGW32* on i?86 => mingw
    322      1.1.1.7  christos     #
    323      1.1.1.7  christos     # MINGW64* on i?86 isn't expected to work...
    324      1.1.1.7  christos     MINGW64*:*:*:x86_64)
    325      1.1.1.7  christos 	echo "${MACHINE}-whatever-mingw64"; exit 0;
    326          1.1  christos 	;;
    327          1.1  christos     MINGW*)
    328          1.1  christos 	echo "${MACHINE}-whatever-mingw"; exit 0;
    329          1.1  christos 	;;
    330          1.1  christos     CYGWIN*)
    331      1.1.1.7  christos 	echo "${MACHINE}-pc-cygwin"; exit 0
    332          1.1  christos 	;;
    333          1.1  christos 
    334      1.1.1.4  christos     vxworks*)
    335      1.1.1.4  christos        echo "${MACHINE}-whatever-vxworks"; exit 0;
    336      1.1.1.4  christos        ;;
    337          1.1  christos esac
    338          1.1  christos 
    339          1.1  christos #
    340          1.1  christos # Ugg. These are all we can determine by what we know about
    341          1.1  christos # the output of uname. Be more creative:
    342          1.1  christos #
    343          1.1  christos 
    344          1.1  christos # Do the Apollo stuff first. Here, we just simply assume
    345      1.1.1.7  christos # that the existence of the /usr/apollo directory is proof
    346          1.1  christos # enough
    347          1.1  christos if [ -d /usr/apollo ]; then
    348          1.1  christos     echo "whatever-apollo-whatever"
    349          1.1  christos     exit 0
    350          1.1  christos fi
    351          1.1  christos 
    352          1.1  christos # Now NeXT
    353          1.1  christos ISNEXT=`hostinfo 2>/dev/null`
    354          1.1  christos case "$ISNEXT" in
    355          1.1  christos     *'NeXT Mach 3.3'*)
    356          1.1  christos 	echo "whatever-next-nextstep3.3"; exit 0
    357          1.1  christos 	;;
    358          1.1  christos     *NeXT*)
    359          1.1  christos 	echo "whatever-next-nextstep"; exit 0
    360          1.1  christos 	;;
    361          1.1  christos esac
    362          1.1  christos 
    363          1.1  christos # At this point we gone through all the one's
    364          1.1  christos # we know of: Punt
    365          1.1  christos 
    366      1.1.1.9  christos echo "${MACHINE}-whatever-${SYSTEM}"
    367          1.1  christos exit 0
    368          1.1  christos ) 2>/dev/null | (
    369          1.1  christos 
    370          1.1  christos # ---------------------------------------------------------------------------
    371          1.1  christos # this is where the translation occurs into SSLeay terms
    372          1.1  christos # ---------------------------------------------------------------------------
    373          1.1  christos 
    374          1.1  christos # Only set CC if not supplied already
    375      1.1.1.4  christos if [ -z "$CROSS_COMPILE$CC" ]; then
    376      1.1.1.4  christos   GCCVER=`sh -c "gcc -dumpversion" 2>/dev/null`
    377          1.1  christos   if [ "$GCCVER" != "" ]; then
    378      1.1.1.4  christos     # then strip off whatever prefix egcs prepends the number with...
    379      1.1.1.4  christos     # Hopefully, this will work for any future prefixes as well.
    380      1.1.1.4  christos     GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'`
    381      1.1.1.4  christos     # Since gcc 3.1 gcc --version behaviour has changed.  gcc -dumpversion
    382      1.1.1.4  christos     # does give us what we want though, so we use that.  We just just the
    383      1.1.1.4  christos     # major and minor version numbers.
    384      1.1.1.4  christos     # peak single digit before and after first dot, e.g. 2.95.1 gives 29
    385      1.1.1.4  christos     GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'`
    386          1.1  christos     CC=gcc
    387          1.1  christos   else
    388          1.1  christos     CC=cc
    389          1.1  christos   fi
    390          1.1  christos fi
    391          1.1  christos GCCVER=${GCCVER:-0}
    392          1.1  christos if [ "$SYSTEM" = "HP-UX" ];then
    393          1.1  christos   # By default gcc is a ILP32 compiler (with long long == 64).
    394          1.1  christos   GCC_BITS="32"
    395          1.1  christos   if [ $GCCVER -ge 30 ]; then
    396          1.1  christos     # PA64 support only came in with gcc 3.0.x.
    397          1.1  christos     # We check if the preprocessor symbol __LP64__ is defined...
    398          1.1  christos     if echo "__LP64__" | gcc -v -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null; then
    399          1.1  christos       : # __LP64__ has slipped through, it therefore is not defined
    400          1.1  christos     else
    401          1.1  christos       GCC_BITS="64"
    402          1.1  christos     fi
    403          1.1  christos   fi
    404          1.1  christos fi
    405          1.1  christos if [ "$SYSTEM" = "SunOS" ]; then
    406          1.1  christos   if [ $GCCVER -ge 30 ]; then
    407          1.1  christos     # 64-bit ABI isn't officially supported in gcc 3.0, but it appears
    408          1.1  christos     # to be working, at the very least 'make test' passes...
    409          1.1  christos     if gcc -v -E -x c /dev/null 2>&1 | grep __arch64__ > /dev/null; then
    410          1.1  christos       GCC_ARCH="-m64"
    411          1.1  christos     else
    412          1.1  christos       GCC_ARCH="-m32"
    413          1.1  christos     fi
    414          1.1  christos   fi
    415          1.1  christos   # check for WorkShop C, expected output is "cc: blah-blah C x.x"
    416          1.1  christos   CCVER=`(cc -V 2>&1) 2>/dev/null | \
    417          1.1  christos   	egrep -e '^cc: .* C [0-9]\.[0-9]' | \
    418          1.1  christos 	sed 's/.* C \([0-9]\)\.\([0-9]\).*/\1\2/'`
    419          1.1  christos   CCVER=${CCVER:-0}
    420          1.1  christos   if [ $MACHINE != i86pc -a $CCVER -gt 40 ]; then
    421          1.1  christos     CC=cc	# overrides gcc!!!
    422          1.1  christos     if [ $CCVER -eq 50 ]; then
    423          1.1  christos       echo "WARNING! Detected WorkShop C 5.0. Do make sure you have"
    424          1.1  christos       echo "         patch #107357-01 or later applied."
    425          1.1  christos       sleep 5
    426          1.1  christos     fi
    427          1.1  christos   fi
    428          1.1  christos fi
    429          1.1  christos 
    430          1.1  christos if [ "${SYSTEM}" = "AIX" ]; then	# favor vendor cc over gcc
    431          1.1  christos     (cc) 2>&1 | grep -iv "not found" > /dev/null && CC=cc
    432          1.1  christos fi
    433          1.1  christos 
    434          1.1  christos CCVER=${CCVER:-0}
    435          1.1  christos 
    436      1.1.1.9  christos # read the output of the embedded GuessOS
    437          1.1  christos read GUESSOS
    438          1.1  christos 
    439          1.1  christos echo Operating system: $GUESSOS
    440          1.1  christos 
    441          1.1  christos # now map the output into SSLeay terms ... really should hack into the
    442          1.1  christos # script above so we end up with values in vars but that would take
    443          1.1  christos # more time that I want to waste at the moment
    444          1.1  christos case "$GUESSOS" in
    445          1.1  christos   uClinux*64*)
    446          1.1  christos     OUT=uClinux-dist64
    447          1.1  christos 	;;
    448          1.1  christos   uClinux*)
    449          1.1  christos     OUT=uClinux-dist
    450          1.1  christos 	;;
    451          1.1  christos   mips3-sgi-irix)
    452          1.1  christos 	OUT="irix-mips3-$CC"
    453          1.1  christos 	;;
    454          1.1  christos   mips4-sgi-irix64)
    455          1.1  christos 	echo "WARNING! If you wish to build 64-bit library, then you have to"
    456      1.1.1.7  christos 	echo "         invoke '$THERE/Configure irix64-mips4-$CC' *manually*."
    457      1.1.1.7  christos 	if [ "$DRYRUN" = "false" -a -t 1 ]; then
    458          1.1  christos 	  echo "         You have about 5 seconds to press Ctrl-C to abort."
    459      1.1.1.7  christos 	  (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    460          1.1  christos 	fi
    461          1.1  christos 	OUT="irix-mips3-$CC"
    462          1.1  christos 	;;
    463          1.1  christos   ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
    464          1.1  christos   ppc-apple-darwin*)
    465          1.1  christos 	ISA64=`(sysctl -n hw.optional.64bitops) 2>/dev/null`
    466      1.1.1.4  christos 	if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
    467          1.1  christos 	    echo "WARNING! If you wish to build 64-bit library, then you have to"
    468      1.1.1.7  christos 	    echo "         invoke '$THERE/Configure darwin64-ppc-cc' *manually*."
    469      1.1.1.7  christos 	    if [ "$DRYRUN" = "false" -a -t 1 ]; then
    470          1.1  christos 	      echo "         You have about 5 seconds to press Ctrl-C to abort."
    471      1.1.1.7  christos 	      (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    472          1.1  christos 	    fi
    473          1.1  christos 	fi
    474      1.1.1.4  christos 	if [ "$ISA64" = "1" -a "$KERNEL_BITS" = "64" ]; then
    475      1.1.1.4  christos 	    OUT="darwin64-ppc-cc"
    476      1.1.1.4  christos 	else
    477      1.1.1.4  christos 	    OUT="darwin-ppc-cc"
    478      1.1.1.4  christos 	fi ;;
    479          1.1  christos   i?86-apple-darwin*)
    480          1.1  christos 	ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
    481      1.1.1.4  christos 	if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
    482          1.1  christos 	    echo "WARNING! If you wish to build 64-bit library, then you have to"
    483      1.1.1.7  christos 	    echo "         invoke 'KERNEL_BITS=64 $THERE/config $options'."
    484      1.1.1.7  christos 	    if [ "$DRYRUN" = "false" -a -t 1 ]; then
    485          1.1  christos 	      echo "         You have about 5 seconds to press Ctrl-C to abort."
    486      1.1.1.8  christos 	      (trap "stty `stty -g`; exit 1" 2; stty -icanon min 0 time 50; read waste; exit 0) <&1 || exit
    487          1.1  christos 	    fi
    488          1.1  christos 	fi
    489      1.1.1.4  christos 	if [ "$ISA64" = "1" -a "$KERNEL_BITS" = "64" ]; then
    490      1.1.1.4  christos 	    OUT="darwin64-x86_64-cc"
    491      1.1.1.4  christos 	else
    492      1.1.1.4  christos 	    OUT="darwin-i386-cc"
    493      1.1.1.4  christos 	fi ;;
    494      1.1.1.7  christos   x86_64-apple-darwin*)
    495      1.1.1.7  christos 	if [ "$KERNEL_BITS" = "32" ]; then
    496      1.1.1.7  christos 	    OUT="darwin-i386-cc"
    497      1.1.1.7  christos 	else
    498      1.1.1.7  christos 	    OUT="darwin64-x86_64-cc"
    499      1.1.1.7  christos 	fi ;;
    500      1.1.1.4  christos   armv6+7-*-iphoneos)
    501  1.1.1.9.2.1    martin 	__CNF_CFLAGS="$__CNF_CFLAGS -arch armv6 -arch armv7"
    502  1.1.1.9.2.1    martin 	__CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch armv6 -arch armv7"
    503      1.1.1.4  christos 	OUT="iphoneos-cross" ;;
    504      1.1.1.4  christos   *-*-iphoneos)
    505  1.1.1.9.2.1    martin 	__CNF_CFLAGS="$__CNF_CFLAGS -arch ${MACHINE}"
    506  1.1.1.9.2.1    martin 	__CNF_CXXFLAGS="$__CNF_CXXFLAGS -arch ${MACHINE}"
    507      1.1.1.4  christos 	OUT="iphoneos-cross" ;;
    508      1.1.1.7  christos   arm64-*-iphoneos|*-*-ios64)
    509      1.1.1.7  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.9.2.2    martin 	OUT="linux-alpha-$CC"
    513          1.1  christos 	if [ "$CC" = "gcc" ]; then
    514          1.1  christos 	    case ${ISA:-generic} in
    515      1.1.1.8  christos 	    EV5|EV45)		__CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev5"
    516      1.1.1.8  christos 				__CNF_CXXFLAGS="$__CNF_CFLAGS -mcpu=ev5";;
    517      1.1.1.8  christos 	    EV56|PCA56)		__CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev56"
    518      1.1.1.8  christos 				__CNF_CXXFLAGS="$__CNF_CXXFLAGS -mcpu=ev56";;
    519      1.1.1.8  christos 	    *)			__CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev6"
    520      1.1.1.8  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.1.6       spz 	if [ -z "$KERNEL_BITS" ]; then
    526      1.1.1.6       spz 	    echo "WARNING! If you wish to build 64-bit library, then you have to"
    527      1.1.1.7  christos 	    echo "         invoke '$THERE/Configure linux-ppc64' *manually*."
    528      1.1.1.7  christos 	    if [ "$DRYRUN" = "false" -a -t 1 ]; then
    529      1.1.1.6       spz 		echo "         You have about 5 seconds to press Ctrl-C to abort."
    530      1.1.1.7  christos 		(trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    531      1.1.1.6       spz 	    fi
    532      1.1.1.6       spz 	fi
    533      1.1.1.6       spz 	if [ "$KERNEL_BITS" = "64" ]; then
    534      1.1.1.6       spz 	    OUT="linux-ppc64"
    535      1.1.1.6       spz 	else
    536      1.1.1.6       spz 	    OUT="linux-ppc"
    537      1.1.1.8  christos 	    if (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null); then
    538      1.1.1.8  christos 		:;
    539      1.1.1.8  christos 	    else
    540      1.1.1.8  christos 		__CNF_CFLAGS="$__CNF_CFLAGS -m32"
    541      1.1.1.8  christos 		__CNF_CXXFLAGS="$__CNF_CXXFLAGS -m32"
    542      1.1.1.8  christos 	    fi
    543      1.1.1.6       spz 	fi
    544      1.1.1.6       spz 	;;
    545      1.1.1.6       spz   ppc64le-*-linux2) OUT="linux-ppc64le" ;;
    546      1.1.1.6       spz   ppc-*-linux2) OUT="linux-ppc" ;;
    547      1.1.1.6       spz   mips64*-*-linux2)
    548          1.1  christos 	echo "WARNING! If you wish to build 64-bit library, then you have to"
    549      1.1.1.7  christos 	echo "         invoke '$THERE/Configure linux64-mips64' *manually*."
    550      1.1.1.7  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.7  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.1.6       spz 	OUT="linux-mips64"
    555          1.1  christos 	;;
    556      1.1.1.6       spz   mips*-*-linux2) OUT="linux-mips32" ;;
    557      1.1.1.4  christos   ppc60x-*-vxworks*) OUT="vxworks-ppc60x" ;;
    558      1.1.1.4  christos   ppcgen-*-vxworks*) OUT="vxworks-ppcgen" ;;
    559      1.1.1.4  christos   pentium-*-vxworks*) OUT="vxworks-pentium" ;;
    560      1.1.1.4  christos   simlinux-*-vxworks*) OUT="vxworks-simlinux" ;;
    561      1.1.1.4  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.7  christos 	echo "         invoke '$THERE/Configure linux64-sparcv9' *manually*."
    567      1.1.1.7  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.7  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.8  christos 	*)	OUT="linux-generic32";
    579      1.1.1.8  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.8  christos 	__CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN"
    602      1.1.1.8  christos 	__CNF_CFLAGS="$__CNF_CFLAGS -mschedule=$CPUSCHEDULE -march=$CPUARCH"
    603      1.1.1.8  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.8  christos   armv[7-9]*-*-linux2) OUT="linux-armv4"
    607      1.1.1.8  christos 		       __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
    608      1.1.1.8  christos 		       __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a"
    609      1.1.1.8  christos 		       ;;
    610          1.1  christos   arm*-*-linux2) OUT="linux-armv4" ;;
    611      1.1.1.6       spz   aarch64-*-linux2) OUT="linux-aarch64" ;;
    612      1.1.1.8  christos   sh*b-*-linux2) OUT="linux-generic32";
    613      1.1.1.8  christos 		 __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
    614      1.1.1.8  christos   sh*-*-linux2)	 OUT="linux-generic32";
    615      1.1.1.8  christos 		 __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
    616      1.1.1.8  christos   m68k*-*-linux2) OUT="linux-generic32";
    617      1.1.1.8  christos 		  __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
    618      1.1.1.8  christos   s390-*-linux2) OUT="linux-generic32";
    619      1.1.1.8  christos 		 __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
    620      1.1.1.4  christos   s390x-*-linux2)
    621      1.1.1.4  christos 	# To be uncommented when glibc bug is fixed, see Configure...
    622      1.1.1.4  christos 	#if egrep -e '^features.* highgprs' /proc/cpuinfo >/dev/null ; then
    623      1.1.1.4  christos 	#  echo "WARNING! If you wish to build \"highgprs\" 32-bit library, then you"
    624      1.1.1.4  christos 	#  echo "         have to invoke './Configure linux32-s390x' *manually*."
    625      1.1.1.7  christos 	#  if [ "$DRYRUN" = "false" -a -t -1 ]; then
    626      1.1.1.4  christos 	#    echo "         You have about 5 seconds to press Ctrl-C to abort."
    627      1.1.1.7  christos 	#    (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    628      1.1.1.4  christos 	#  fi
    629      1.1.1.4  christos 	#fi
    630      1.1.1.4  christos 	OUT="linux64-s390x"
    631      1.1.1.4  christos 	;;
    632      1.1.1.7  christos   x86_64-*-linux?)
    633      1.1.1.7  christos 	if $CC -dM -E -x c /dev/null 2>&1 | grep -q ILP32 > /dev/null; then
    634      1.1.1.7  christos 	    OUT="linux-x32"
    635      1.1.1.7  christos 	else
    636      1.1.1.7  christos 	    OUT="linux-x86_64"
    637      1.1.1.7  christos 	fi ;;
    638      1.1.1.7  christos   *86-*-linux2)
    639      1.1.1.7  christos         # On machines where the compiler understands -m32, prefer a
    640      1.1.1.7  christos         # config target that uses it
    641      1.1.1.7  christos         if $CC -m32 -E -x c /dev/null > /dev/null 2>&1; then
    642      1.1.1.7  christos             OUT="linux-x86"
    643      1.1.1.7  christos         else
    644      1.1.1.7  christos             OUT="linux-elf"
    645          1.1  christos         fi ;;
    646      1.1.1.7  christos   *86-*-linux1) OUT="linux-aout" ;;
    647      1.1.1.7  christos   *-*-linux?) OUT="linux-generic32" ;;
    648          1.1  christos   sun4[uv]*-*-solaris2)
    649          1.1  christos 	OUT="solaris-sparcv9-$CC"
    650      1.1.1.7  christos 	ISA64=`(isainfo) 2>/dev/null | grep sparcv9`
    651      1.1.1.4  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.7  christos 		echo "         invoke '$THERE/Configure solaris64-sparcv9-cc' *manually*."
    655      1.1.1.7  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.7  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.7  christos 		echo "         invoke '$THERE/Configure solaris-sparcv9-gcc' *manually*."
    667      1.1.1.7  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.7  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.7  christos 		echo "        invoke '$THERE/Configure solaris64-sparcv9-gcc' *manually*."
    675      1.1.1.7  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.7  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.1.4  christos 	if [ "$ISA64" != "" -a "$KERNEL_BITS" = "64" ]; then
    682      1.1.1.4  christos 	    OUT="solaris64-sparcv9-$CC"
    683      1.1.1.4  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.7  christos 	ISA64=`(isainfo) 2>/dev/null | grep amd64`
    690      1.1.1.4  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.8  christos   *86*-*-bsdi4)		OUT="BSD-x86-elf"; options="$options no-sse2";
    702      1.1.1.8  christos 			__CNF_LDFLAGS="$__CNF_LDFLAGS -ldl" ;;
    703      1.1.1.8  christos   alpha*-*-*bsd*)	OUT="BSD-generic64";
    704      1.1.1.8  christos 			__CNF_CPPFLAGS="$__CNF_CPPFLAGS -DL_ENDIAN" ;;
    705      1.1.1.8  christos   powerpc64-*-*bsd*)	OUT="BSD-generic64";
    706      1.1.1.8  christos 			__CNF_CPPFLAGS="$__CNF_CPPFLAGS -DB_ENDIAN" ;;
    707          1.1  christos   sparc64-*-*bsd*)	OUT="BSD-sparc64" ;;
    708          1.1  christos   ia64-*-*bsd*)		OUT="BSD-ia64" ;;
    709      1.1.1.8  christos   x86_64-*-dragonfly*)  OUT="BSD-x86_64" ;;
    710          1.1  christos   amd64-*-*bsd*)	OUT="BSD-x86_64" ;;
    711          1.1  christos   *86*-*-*bsd*)		# mimic ld behaviour when it's looking for libc...
    712          1.1  christos 			if [ -L /usr/lib/libc.so ]; then	# [Free|Net]BSD
    713          1.1  christos 			    libc=/usr/lib/libc.so
    714          1.1  christos 			else					# OpenBSD
    715          1.1  christos 			    # ld searches for highest libc.so.* and so do we
    716      1.1.1.5  christos 			    libc=`(ls /usr/lib/libc.so.* /lib/libc.so.* | tail -1) 2>/dev/null`
    717          1.1  christos 			fi
    718          1.1  christos 			case "`(file -L $libc) 2>/dev/null`" in
    719          1.1  christos 			*ELF*)	OUT="BSD-x86-elf" ;;
    720          1.1  christos 			*)	OUT="BSD-x86"; options="$options no-sse2" ;;
    721          1.1  christos 			esac ;;
    722          1.1  christos   *-*-*bsd*)		OUT="BSD-generic32" ;;
    723          1.1  christos 
    724      1.1.1.7  christos   x86_64-*-haiku)	OUT="haiku-x86_64" ;;
    725      1.1.1.7  christos   *-*-haiku)		OUT="haiku-x86" ;;
    726      1.1.1.7  christos 
    727          1.1  christos   *-*-osf)		OUT="osf1-alpha-cc" ;;
    728          1.1  christos   *-*-tru64)		OUT="tru64-alpha-cc" ;;
    729          1.1  christos   *-*-[Uu]nix[Ww]are7)
    730          1.1  christos 	if [ "$CC" = "gcc" ]; then
    731          1.1  christos 	  OUT="unixware-7-gcc" ; options="$options no-sse2"
    732      1.1.1.9  christos 	else
    733      1.1.1.8  christos 	  OUT="unixware-7" ; options="$options no-sse2"
    734      1.1.1.8  christos 	  __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__"
    735          1.1  christos 	fi
    736          1.1  christos 	;;
    737          1.1  christos   *-*-[Uu]nix[Ww]are20*) OUT="unixware-2.0"; options="$options no-sse2 no-sha512" ;;
    738          1.1  christos   *-*-[Uu]nix[Ww]are21*) OUT="unixware-2.1"; options="$options no-sse2 no-sha512" ;;
    739          1.1  christos   *-*-vos)
    740          1.1  christos 	options="$options no-threads no-shared no-asm no-dso"
    741          1.1  christos 	EXE=".pm"
    742          1.1  christos 	OUT="vos-$CC" ;;
    743          1.1  christos   BS2000-siemens-sysv4) OUT="BS2000-OSD" ;;
    744          1.1  christos   *-hpux1*)
    745          1.1  christos 	if [ $CC = "gcc" -a $GCC_BITS = "64" ]; then
    746          1.1  christos 	    OUT="hpux64-parisc2-gcc"
    747          1.1  christos 	fi
    748      1.1.1.4  christos 	[ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITS) 2>/dev/null`
    749          1.1  christos 	KERNEL_BITS=${KERNEL_BITS:-32}
    750          1.1  christos 	CPU_VERSION=`(getconf CPU_VERSION) 2>/dev/null`
    751          1.1  christos 	CPU_VERSION=${CPU_VERSION:-0}
    752          1.1  christos 	# See <sys/unistd.h> for further info on CPU_VERSION.
    753          1.1  christos 	if   [ $CPU_VERSION -ge 768 ]; then	# IA-64 CPU
    754      1.1.1.4  christos 	     if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
    755      1.1.1.4  christos 	        OUT="hpux64-ia64-cc"
    756      1.1.1.4  christos              else
    757      1.1.1.4  christos 	        OUT="hpux-ia64-cc"
    758      1.1.1.4  christos              fi
    759          1.1  christos 	elif [ $CPU_VERSION -ge 532 ]; then	# PA-RISC 2.x CPU
    760      1.1.1.8  christos 	     # PA-RISC 2.0 is no longer supported as separate 32-bit
    761      1.1.1.8  christos 	     # target. This is compensated for by run-time detection
    762      1.1.1.8  christos 	     # in most critical assembly modules and taking advantage
    763      1.1.1.8  christos 	     # of 2.0 architecture in PA-RISC 1.1 build.
    764      1.1.1.8  christos 	     OUT=${OUT:-"hpux-parisc1_1-${CC}"}
    765          1.1  christos 	     if [ $KERNEL_BITS -eq 64 -a "$CC" = "cc" ]; then
    766          1.1  christos 		echo "WARNING! If you wish to build 64-bit library then you have to"
    767      1.1.1.7  christos 		echo "         invoke '$THERE/Configure hpux64-parisc2-cc' *manually*."
    768      1.1.1.7  christos 		if [ "$DRYRUN" = "false" -a -t 1 ]; then
    769          1.1  christos 		  echo "         You have about 5 seconds to press Ctrl-C to abort."
    770      1.1.1.7  christos 		  (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    771          1.1  christos 		fi
    772          1.1  christos 	     fi
    773          1.1  christos 	elif [ $CPU_VERSION -ge 528 ]; then	# PA-RISC 1.1+ CPU
    774      1.1.1.7  christos 	     OUT="hpux-parisc1_1-${CC}"
    775          1.1  christos 	elif [ $CPU_VERSION -ge 523 ]; then	# PA-RISC 1.0 CPU
    776          1.1  christos 	     OUT="hpux-parisc-${CC}"
    777          1.1  christos 	else					# Motorola(?) CPU
    778          1.1  christos 	     OUT="hpux-$CC"
    779          1.1  christos 	fi
    780      1.1.1.8  christos 	__CNF_CPPFLAGS="$__CNF_CPPFLAGS -D_REENTRANT" ;;
    781          1.1  christos   *-hpux)	OUT="hpux-parisc-$CC" ;;
    782          1.1  christos   *-aix)
    783      1.1.1.4  christos 	[ "$KERNEL_BITS" ] || KERNEL_BITS=`(getconf KERNEL_BITMODE) 2>/dev/null`
    784          1.1  christos 	KERNEL_BITS=${KERNEL_BITS:-32}
    785          1.1  christos 	OBJECT_MODE=${OBJECT_MODE:-32}
    786          1.1  christos 	if [ "$CC" = "gcc" ]; then
    787          1.1  christos 	    OUT="aix-gcc"
    788      1.1.1.3       spz           if [ $OBJECT_MODE -eq 64 ]; then
    789      1.1.1.3       spz             echo 'Your $OBJECT_MODE was found to be set to 64'
    790      1.1.1.3       spz             OUT="aix64-gcc"
    791      1.1.1.3       spz           fi
    792          1.1  christos 	elif [ $OBJECT_MODE -eq 64 ]; then
    793      1.1.1.9  christos 	    echo 'Your $OBJECT_MODE was found to be set to 64'
    794          1.1  christos 	    OUT="aix64-cc"
    795          1.1  christos 	else
    796          1.1  christos 	    OUT="aix-cc"
    797          1.1  christos 	    if [ $KERNEL_BITS -eq 64 ]; then
    798          1.1  christos 		echo "WARNING! If you wish to build 64-bit kit, then you have to"
    799      1.1.1.7  christos 		echo "         invoke '$THERE/Configure aix64-cc' *manually*."
    800      1.1.1.7  christos 		if [ "$DRYRUN" = "false" -a -t 1 ]; then
    801          1.1  christos 		    echo "         You have ~5 seconds to press Ctrl-C to abort."
    802      1.1.1.7  christos 		    (trap "stty `stty -g`; exit 0" 2 0; stty -icanon min 0 time 50; read waste) <&1
    803          1.1  christos 		fi
    804          1.1  christos 	    fi
    805          1.1  christos 	fi
    806          1.1  christos 	if (lsattr -E -O -l `lsdev -c processor|awk '{print$1;exit}'` | grep -i powerpc) >/dev/null 2>&1; then
    807          1.1  christos 	    :	# this applies even to Power3 and later, as they return PowerPC_POWER[345]
    808          1.1  christos 	else
    809          1.1  christos 	    options="$options no-asm"
    810          1.1  christos 	fi
    811          1.1  christos 	;;
    812          1.1  christos   # these are all covered by the catchall below
    813      1.1.1.7  christos   i[3456]86-*-cygwin) OUT="Cygwin-x86" ;;
    814      1.1.1.6       spz   *-*-cygwin) OUT="Cygwin-${MACHINE}" ;;
    815      1.1.1.4  christos   x86-*-android|i?86-*-android) OUT="android-x86" ;;
    816      1.1.1.7  christos   armv[7-9]*-*-android)
    817      1.1.1.8  christos       OUT="android-armeabi"
    818      1.1.1.8  christos       __CNF_CFLAGS="$__CNF_CFLAGS -march=armv7-a"
    819      1.1.1.8  christos       __CNF_CXXFLAGS="$__CNF_CXXFLAGS -march=armv7-a";;
    820      1.1.1.7  christos   arm*-*-android) OUT="android-armeabi" ;;
    821          1.1  christos   *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
    822          1.1  christos esac
    823          1.1  christos 
    824      1.1.1.7  christos # NB: This atalla support has been superseded by the ENGINE support
    825          1.1  christos # That contains its own header and definitions anyway. Support can
    826          1.1  christos # be enabled or disabled on any supported platform without external
    827          1.1  christos # headers, eg. by adding the "hw-atalla" switch to ./config or
    828          1.1  christos # perl Configure
    829          1.1  christos #
    830          1.1  christos # See whether we can compile Atalla support
    831          1.1  christos #if [ -f /usr/include/atasi.h ]
    832          1.1  christos #then
    833      1.1.1.8  christos #  __CNF_CPPFLAGS="$__CNF_CPPFLAGS -DATALLA"
    834          1.1  christos #fi
    835          1.1  christos 
    836      1.1.1.7  christos if [ -n "$CONFIG_OPTIONS" ]; then
    837      1.1.1.7  christos   options="$options $CONFIG_OPTIONS"
    838      1.1.1.7  christos fi
    839      1.1.1.7  christos 
    840          1.1  christos # gcc < 2.8 does not support -march=ultrasparc
    841          1.1  christos if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
    842          1.1  christos then
    843          1.1  christos   echo "WARNING! Falling down to 'solaris-sparcv8-gcc'."
    844          1.1  christos   echo "         Upgrade to gcc-2.8 or later."
    845          1.1  christos   sleep 5
    846          1.1  christos   OUT=solaris-sparcv8-gcc
    847          1.1  christos fi
    848          1.1  christos if [ "$OUT" = "linux-sparcv9" -a $GCCVER -lt 28 ]
    849          1.1  christos then
    850          1.1  christos   echo "WARNING! Falling down to 'linux-sparcv8'."
    851          1.1  christos   echo "         Upgrade to gcc-2.8 or later."
    852          1.1  christos   sleep 5
    853          1.1  christos   OUT=linux-sparcv8
    854          1.1  christos fi
    855          1.1  christos 
    856          1.1  christos case "$GUESSOS" in
    857          1.1  christos   i386-*) options="$options 386" ;;
    858          1.1  christos esac
    859          1.1  christos 
    860      1.1.1.8  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
    861          1.1  christos do
    862      1.1.1.7  christos   if [ ! -d $THERE/crypto/$i ]
    863          1.1  christos   then
    864          1.1  christos     options="$options no-$i"
    865          1.1  christos   fi
    866          1.1  christos done
    867          1.1  christos 
    868          1.1  christos if [ -z "$OUT" ]; then
    869          1.1  christos   OUT="$CC"
    870          1.1  christos fi
    871          1.1  christos 
    872          1.1  christos if [ ".$PERL" = . ] ; then
    873          1.1  christos 	for i in . `echo $PATH | sed 's/:/ /g'`; do
    874          1.1  christos 		if [ -f "$i/perl5$EXE" ] ; then
    875          1.1  christos 			PERL="$i/perl5$EXE"
    876          1.1  christos 			break;
    877          1.1  christos 		fi;
    878          1.1  christos 	done
    879          1.1  christos fi
    880          1.1  christos 
    881          1.1  christos if [ ".$PERL" = . ] ; then
    882          1.1  christos 	for i in . `echo $PATH | sed 's/:/ /g'`; do
    883          1.1  christos 		if [ -f "$i/perl$EXE" ] ; then
    884          1.1  christos 			if "$i/perl$EXE" -e 'exit($]<5.0)'; then
    885          1.1  christos 				PERL="$i/perl$EXE"
    886          1.1  christos 				break;
    887          1.1  christos 			fi;
    888          1.1  christos 		fi;
    889          1.1  christos 	done
    890          1.1  christos fi
    891          1.1  christos 
    892          1.1  christos if [ ".$PERL" = . ] ; then
    893          1.1  christos 	echo "You need Perl 5."
    894          1.1  christos 	exit 1
    895          1.1  christos fi
    896          1.1  christos 
    897      1.1.1.9  christos # run Configure to check to see if we need to specify the
    898          1.1  christos # compiler for the platform ... in which case we add it on
    899          1.1  christos # the end ... otherwise we leave it off
    900          1.1  christos 
    901      1.1.1.7  christos $PERL $THERE/Configure LIST | grep "$OUT-$CC" > /dev/null
    902          1.1  christos if [ $? = "0" ]; then
    903          1.1  christos   OUT="$OUT-$CC"
    904          1.1  christos fi
    905          1.1  christos 
    906      1.1.1.7  christos OUT="$OUT"
    907          1.1  christos 
    908  1.1.1.9.2.2    martin if [ "$OUT" = "darwin64-x86_64-cc" ]; then
    909  1.1.1.9.2.2    martin     echo "WARNING! If you wish to build 32-bit libraries, then you have to"
    910  1.1.1.9.2.2    martin     echo "         invoke 'KERNEL_BITS=32 $THERE/config $options'."
    911  1.1.1.9.2.2    martin fi
    912  1.1.1.9.2.2    martin 
    913  1.1.1.9.2.2    martin if $PERL $THERE/Configure LIST | grep "$OUT" > /dev/null; then
    914      1.1.1.7  christos   if [ "$VERBOSE" = "true" ]; then
    915      1.1.1.8  christos     echo /usr/bin/env \
    916      1.1.1.8  christos 	 __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
    917      1.1.1.8  christos 	 __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
    918      1.1.1.8  christos 	 __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
    919      1.1.1.8  christos 	 __CNF_CFLAGS="'$__CNF_CFLAGS'" \
    920      1.1.1.8  christos 	 __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
    921      1.1.1.8  christos 	 __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
    922      1.1.1.8  christos 	 __CNF_LDLIBS="'$__CNF_LDLIBS'" \
    923      1.1.1.8  christos 	 $PERL $THERE/Configure $OUT $options
    924      1.1.1.9  christos   fi
    925      1.1.1.7  christos   if [ "$DRYRUN" = "false" ]; then
    926      1.1.1.8  christos     # eval to make sure quoted options, possibly with spaces inside,
    927      1.1.1.8  christos     # are treated right
    928      1.1.1.8  christos     eval /usr/bin/env \
    929      1.1.1.8  christos 	 __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \
    930      1.1.1.8  christos 	 __CNF_CPPINCLUDES="'$__CNF_CPPINCLUDES'" \
    931      1.1.1.8  christos 	 __CNF_CPPFLAGS="'$__CNF_CPPFLAGS'" \
    932      1.1.1.8  christos 	 __CNF_CFLAGS="'$__CNF_CFLAGS'" \
    933      1.1.1.8  christos 	 __CNF_CXXFLAGS="'$__CNF_CXXFLAGS'" \
    934      1.1.1.8  christos 	 __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \
    935      1.1.1.8  christos 	 __CNF_LDLIBS="'$__CNF_LDLIBS'" \
    936      1.1.1.8  christos 	 $PERL $THERE/Configure $OUT $options
    937          1.1  christos   fi
    938          1.1  christos else
    939          1.1  christos   echo "This system ($OUT) is not supported. See file INSTALL for details."
    940      1.1.1.8  christos   exit 1
    941      1.1.1.8  christos fi
    942      1.1.1.8  christos 
    943  1.1.1.9.2.2    martin # Do not add anothing from here on, so we don't lose the Configure exit code
    944          1.1  christos )
    945