| #!/bin/sh |
| # |
| # config - this is a merge of minarch and GuessOS from the Apache Group |
| # which then automatically runs Configure from SSLeay after |
| # mapping the Apache names for OSs into SSLeay names |
| # |
| # 29-May-97 eay Added no-asm option |
| # 27-May-97 eay Alpha linux mods |
| # ??-May-97 eay IRIX mods |
| # 16-Sep-97 tjh first cut of merged version |
| # |
| # Tim Hudson |
| # tjh@cryptsoft.com |
| # |
| |
| # Original Apache Group comments on GuessOS |
| |
| # Simple OS/Platform guesser. Similar to config.guess but |
| # much, much smaller. Since it was developed for use with |
| # Apache, it follows under Apache's regular licensing |
| # with one specific addition: Any changes or additions |
| # to this script should be Emailed to the Apache |
| # group (apache@apache.org) in general and to |
| # Jim Jagielski (jim@jaguNET.com) in specific. |
| # |
| # Be as similar to the output of config.guess/config.sub |
| # as possible. |
| |
| # First get uname entries that we use below |
| |
| MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown" |
| RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown" |
| SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown" |
| VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" |
| |
| # Now test for ISC and SCO, since it is has a braindamaged uname. |
| # |
| # We need to work around FreeBSD 1.1.5.1 |
| ( |
| XREL=`uname -X 2>/dev/null | grep "^Release" | awk '{print $3}'` |
| if [ "x$XREL" != "x" ]; then |
| if [ -f /etc/kconfig ]; then |
| case "$XREL" in |
| 4.0|4.1) |
| echo "${MACHINE}-whatever-isc4"; exit 0 |
| ;; |
| esac |
| else |
| case "$XREL" in |
| 3.2v4.2) |
| echo "whatever-whatever-sco3"; exit 0 |
| ;; |
| 3.2v5.0*) |
| echo "whatever-whatever-sco5"; exit 0 |
| ;; |
| 4.2MP) |
| if [ "x$VERSION" = "x2.1.1" ]; then |
| echo "${MACHINE}-whatever-unixware211"; exit 0 |
| else |
| echo "${MACHINE}-whatever-unixware2"; exit 0 |
| fi |
| ;; |
| 4.2) |
| echo "whatever-whatever-unixware1"; exit 0 |
| ;; |
| esac |
| fi |
| fi |
| # Now we simply scan though... In most cases, the SYSTEM info is enough |
| # |
| case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in |
| A/UX:*) |
| echo "m68k-apple-aux3"; exit 0 |
| ;; |
| |
| AIX:*) |
| echo "${MACHINE}-ibm-aix"; exit 0 |
| ;; |
| |
| dgux:*) |
| echo "${MACHINE}-dg-dgux"; exit 0 |
| ;; |
| |
| HI-UX:*) |
| echo "${MACHINE}-hi-hiux"; exit 0 |
| ;; |
| |
| HP-UX:*) |
| HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'` |
| case "$HPUXVER" in |
| 10.*) |
| echo "${MACHINE}-hp-hpux10."; exit 0 |
| ;; |
| *) |
| echo "${MACHINE}-hp-hpux"; exit 0 |
| ;; |
| esac |
| ;; |
| |
| IRIX:*) |
| echo "${MACHINE}-sgi-irix"; exit 0 |
| ;; |
| |
| IRIX64:*) |
| echo "${MACHINE}-sgi-irix64"; exit 0 |
| ;; |
| |
| Linux:[2-9].*) |
| echo "${MACHINE}-whatever-linux2"; exit 0 |
| ;; |
| |
| Linux:1.*) |
| echo "${MACHINE}-whatever-linux1"; exit 0 |
| ;; |
| |
| LynxOS:*) |
| echo "${MACHINE}-lynx-lynxos"; exit 0 |
| ;; |
| |
| BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*) |
| echo "i486-whatever-bsdi"; exit 0 |
| ;; |
| |
| BSD/386:*|BSD/OS:*) |
| echo "${MACHINE}-whatever-bsdi"; exit 0 |
| ;; |
| |
| FreeBSD:3*:*:*) |
| echo "${MACHINE}-whatever-freebsd3"; exit 0 |
| ;; |
| |
| FreeBSD:*:*:*486*) |
| echo "i486-whatever-freebsd"; exit 0 |
| ;; |
| |
| FreeBSD:*) |
| echo "${MACHINE}-whatever-freebsd"; exit 0 |
| ;; |
| |
| NetBSD:*:*:*486*) |
| echo "i486-whatever-netbsd"; exit 0 |
| ;; |
| |
| NetBSD:*) |
| echo "${MACHINE}-whatever-netbsd"; exit 0 |
| ;; |
| |
| OpenBSD:*) |
| echo "${MACHINE}-whatever-openbsd"; exit 0 |
| ;; |
| |
| OSF1:*:*:*alpha*) |
| echo "${MACHINE}-dec-osf"; exit 0 |
| ;; |
| |
| QNX:*) |
| case "$VERSION" in |
| 423) |
| echo "${MACHINE}-qssl-qnx32" |
| ;; |
| *) |
| echo "${MACHINE}-qssl-qnx" |
| ;; |
| esac |
| exit 0 |
| ;; |
| |
| Paragon*:*:*:*) |
| echo "i860-intel-osf1"; exit 0 |
| ;; |
| |
| SunOS:5.*) |
| echo "${MACHINE}-sun-solaris2"; exit 0 |
| ;; |
| |
| SunOS:*) |
| echo "${MACHINE}-sun-sunos4"; exit 0 |
| ;; |
| |
| UNIX_System_V:4.*:*) |
| echo "${MACHINE}-whatever-sysv4"; exit 0 |
| ;; |
| |
| *:4*:R4*:m88k) |
| echo "${MACHINE}-whatever-sysv4"; exit 0 |
| ;; |
| |
| DYNIX/ptx:4*:*) |
| echo "${MACHINE}-whatever-sysv4"; exit 0 |
| ;; |
| |
| *:4.0:3.0:3[34]?? | *:4.0:3.0:3[34]??,*) |
| echo "i486-ncr-sysv4"; exit 0 |
| ;; |
| |
| ULTRIX:*) |
| echo "${MACHINE}-unknown-ultrix"; exit 0 |
| ;; |
| |
| SINIX*) |
| echo "${MACHINE}-sni-sysv4"; exit 0 |
| ;; |
| |
| machten:*) |
| echo "${MACHINE}-tenon-${SYSTEM}"; exit 0; |
| ;; |
| |
| library:*) |
| echo "${MACHINE}-ncr-sysv4"; exit 0 |
| ;; |
| |
| ConvexOS:*:11.0:*) |
| echo "${MACHINE}-v11-${SYSTEM}"; exit 0; |
| ;; |
| |
| esac |
| |
| # |
| # Ugg. These are all we can determine by what we know about |
| # the output of uname. Be more creative: |
| # |
| |
| # Do the Apollo stuff first. Here, we just simply assume |
| # that the existance of the /usr/apollo directory is proof |
| # enough |
| if [ -d /usr/apollo ]; then |
| echo "whatever-apollo-whatever" |
| exit 0 |
| fi |
| |
| # Now NeXT |
| ISNEXT=`hostinfo 2>/dev/null` |
| case "$ISNEXT" in |
| *NeXT*) |
| echo "whatever-next-nextstep"; exit 0 |
| ;; |
| esac |
| |
| # At this point we gone through all the one's |
| # we know of: Punt |
| |
| echo "${MACHINE}-whatever-${SYSTEM}|${RELEASE}|${VERSION}" |
| exit 0 |
| ) 2>/dev/null | ( |
| |
| # --------------------------------------------------------------------------- |
| # this is where the translation occurs into SSLeay terms |
| # --------------------------------------------------------------------------- |
| |
| PREFIX="" |
| SUFFIX="" |
| VERBOSE="false" |
| TEST="false" |
| |
| # pick up any command line args to config |
| for i |
| do |
| case "$i" in |
| -d*) PREFIX="debug-";; |
| -v*) VERBOSE="true";; |
| -t*) TEST="true";; |
| -h*) cat <<EOF |
| usage: config [options] |
| -d Add a debug- prefix to machine choice. |
| -v Verbose mode. |
| -t Test mode, do not run the Configure perl script. |
| -h This help. |
| |
| Any other text will be passed to ther Configure perl script. |
| Usefull options include |
| no-asm Build with no assember code. |
| -Dxxx Add xxx define to compilation. |
| -Lxxx Add xxx library include path to build. |
| -lxxx Add xxx library to build. |
| |
| eg, to build using RSAref, without assember, building to allow anon-DH |
| ciphers and null encryption ciphers, |
| config no-asm -DRSAref -DSSL_ALLOW_ADH -DSSL_ALLOW_ENULL -lrsaref |
| EOF |
| ;; |
| *) options=$options" $i" ;; |
| esac |
| done |
| |
| # figure out if gcc is available and if so we use it otherwise |
| # we fallback to whatever cc does on the system |
| GCCVER=`gcc -v 2>&1` |
| if [ $? = "0" ]; then |
| CC=gcc |
| else |
| CC=cc |
| fi |
| |
| # read the output of the embedded GuessOS |
| read GUESSOS |
| |
| if [ "$VERBOSE" = "true" ]; then |
| echo GUESSOS $GUESSOS |
| fi |
| |
| # now map the output into SSLeay terms ... really should hack into the |
| # script above so we end up with values in vars but that would take |
| # more time that I want to waste at the moment |
| case "$GUESSOS" in |
| alpha-*-linux2) OUT="alpha-gcc" ;; |
| *-*-linux2) OUT="linux-elf" ;; |
| *-*-linux1) OUT="linux-aout" ;; |
| sun4*-sun-solaris2) OUT="solaris-sparc-$CC" ;; |
| *86*-sun-solaris2) OUT="solaris-x86-$CC" ;; |
| *-*-sunos4) OUT="sunos-$CC" ;; |
| *-freebsd3) OUT="FreeBSD-elf" ;; |
| *-freebsd) OUT="FreeBSD" ;; |
| *86*-*-netbsd) OUT="NetBSD-x86" ;; |
| sun3*-*-netbsd) OUT="NetBSD-m68" ;; |
| *-*-netbsd) OUT="NetBSD-sparc" ;; |
| *86*-*-openbsd) OUT="OpenBSD-x86" ;; |
| alpha*-*-openbsd) OUT="OpenBSD-alpha" ;; |
| pmax*-*-openbsd) OUT="OpenBSD-mips" ;; |
| *-*-openbsd) OUT="OpenBSD" ;; |
| *-*-osf) OUT="alpha-cc" ;; |
| *-*-unixware*) OUT="unixware-2.0" ;; |
| *-sni-sysv4) OUT="SINIX" ;; |
| *-hpux*) OUT="hpux-$CC" ;; |
| # these are all covered by the catchall below |
| # *-aix) OUT="aix-$CC" ;; |
| # *-dgux) OUT="dgux" ;; |
| *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;; |
| esac |
| |
| if [ -z "$OUT" ]; then |
| OUT="$CC" |
| fi |
| |
| # run Configure to check to see if we need to specify the |
| # compiler for the platform ... in which case we add it on |
| # the end ... otherwise we leave it off |
| perl ./Configure 2>&1 | grep "$OUT-$CC" > /dev/null |
| if [ $? = "0" ]; then |
| OUT="$OUT-$CC" |
| fi |
| |
| OUT="$PREFIX$OUT" |
| |
| # at this point we have the answer ... which we could check again |
| # and then fallback to a vanilla SSLeay build but then this script |
| # wouldn't get updated |
| echo Configuring for $OUT |
| |
| if [ "$TEST" = "true" ]; then |
| echo ./Configure $OUT $options |
| else |
| perl ./Configure $OUT $options |
| fi |
| |
| ) |
| |