| #!/bin/sh |
| # |
| # OpenSSL config: determine the operating system and run ./Configure |
| # |
| # "config -h" for usage information. |
| # |
| # this is a merge of minarch and GuessOS from the Apache Group. |
| # Originally written by 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 |
| 11.*) |
| echo "${MACHINE}-hp-hpux11"; exit 0 |
| ;; |
| 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/OS:4.*) |
| echo "${MACHINE}-whatever-bsdi4"; 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:*:*:*386*) |
| case `sysctl -n hw.model` in |
| Pentium*) |
| echo "i586-whatever-freebsd"; exit 0 |
| ;; |
| *) |
| echo "i386-whatever-freebsd"; exit 0 |
| ;; |
| esac; |
| ;; |
| |
| FreeBSD:*) |
| echo "${MACHINE}-whatever-freebsd"; exit 0 |
| ;; |
| |
| NetBSD:*:*:*386*) |
| echo "`sysctl -n hw.model | sed 's,.*\(.\)86-class.*,i\186,'`-whateve\r-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*|ReliantUNIX*) |
| echo "${MACHINE}-siemens-sysv4"; exit 0 |
| ;; |
| |
| POSIX-BC*) |
| echo "${MACHINE}-siemens-sysv4"; exit 0 # Here, $MACHINE == "BS2000" |
| ;; |
| |
| 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}" |
| exit 0 |
| ) 2>/dev/null | ( |
| |
| # --------------------------------------------------------------------------- |
| # this is where the translation occurs into SSLeay terms |
| # --------------------------------------------------------------------------- |
| |
| PREFIX="" |
| SUFFIX="" |
| TEST="false" |
| |
| # pick up any command line args to config |
| for i |
| do |
| case "$i" in |
| -d*) PREFIX="debug-";; |
| -t*) TEST="true";; |
| -h*) TEST="true"; cat <<EOF |
| Usage: config [options] |
| -d Add a debug- prefix to machine choice. |
| -t Test mode, do not run the Configure perl script. |
| -h This help. |
| |
| Any other text will be passed to the Configure perl script. |
| See INSTALL for instructions. |
| |
| 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 |
| if [ "$SYSTEM" = "SunOS" ] |
| then |
| case `cc -V 2>&1` in |
| *4*) CC=cc;; |
| *5*) CC=cc;; |
| *) CC=sc3;; |
| esac |
| fi |
| fi |
| |
| # read the output of the embedded GuessOS |
| read GUESSOS |
| |
| echo Operating system: $GUESSOS |
| |
| # 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" ;; |
| ppc-*-linux2) OUT="linux-ppc" ;; |
| mips-*-linux?) OUT="linux-mips" ;; |
| sparc-*-linux2) OUT="linux-sparc" ;; |
| sparc64-*-linux2) OUT="linux-sparc64" ;; |
| *-*-linux2) OUT="linux-elf" ;; |
| *-*-linux1) OUT="linux-aout" ;; |
| sun4u-sun-solaris2) OUT="solaris-usparc-$CC" ;; |
| sun4*-sun-solaris2) OUT="solaris-sparc-$CC" ;; |
| *86*-sun-solaris2) OUT="solaris-x86-$CC" ;; |
| *-*-sunos4) OUT="sunos-$CC" ;; |
| alpha*-*-freebsd3) OUT="FreeBSD-alpha" ;; |
| *-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" ;; |
| *86*-*-bsdi4) OUT="bsdi-elf-gcc" ;; |
| *-*-osf) OUT="alpha-cc" ;; |
| *-*-unixware*) OUT="unixware-2.0" ;; |
| BS2000-siemens-sysv4) OUT="BS2000-OSD" ;; |
| RM*-siemens-sysv4) OUT="ReliantUNIX" ;; |
| *-siemens-sysv4) OUT="SINIX" ;; |
| # these are all covered by the catchall below |
| # *-hpux*) OUT="hpux-$CC" ;; |
| # *-aix) OUT="aix-$CC" ;; |
| # *-dgux) OUT="dgux" ;; |
| *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;; |
| esac |
| |
| # gcc < 2.8 does not support -mcpu=ultrasparc |
| if [ "$OUT" = solaris-usparc-gcc ] |
| then |
| GCCVERMAJOR="`echo $GCCVER | sed 's/.*version \([^.]*\).*/\1/`" |
| GCCVERMINOR="`echo $GCCVER | sed 's/.*version[^.]*\.\([^.]*\).*/\1/`" |
| echo "gcc version $GCCVERMAJOR.$GCCVERMINOR.x" |
| if [ $GCCVERMAJOR$GCCVERMINOR -lt 28 ] |
| then |
| OUT=solaris-usparc-oldgcc |
| fi |
| fi |
| |
| case "$GUESSOS" in |
| i386-*) options="$options 386" ;; |
| esac |
| |
| for i in bf cast des dh dsa hmac md2 md5 mdc2 rc2 rc4 rc5 rsa sha |
| do |
| if [ ! -d crypto/$i ] |
| then |
| options="$options no-$i" |
| fi |
| done |
| |
| if [ -z "$OUT" ]; then |
| OUT="$CC" |
| fi |
| |
| if [ ".$PERL" = . ] ; then |
| for i in . `echo $PATH | sed 's/:/ /g'`; do |
| if [ -f "$i/perl5" ] ; then |
| PERL="$i/perl5" |
| break; |
| fi; |
| done |
| fi |
| |
| if [ ".$PERL" = . ] ; then |
| for i in . `echo $PATH | sed 's/:/ /g'`; do |
| if [ -f "$i/perl" ] ; then |
| if "$i/perl" -e 'exit($]<5.0)'; then |
| PERL="$i/perl" |
| break; |
| fi; |
| fi; |
| done |
| fi |
| |
| if [ ".$PERL" = . ] ; then |
| echo "You need Perl 5." |
| exit 1 |
| 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" |
| |
| $PERL ./Configure 2>&1 | grep "$OUT" > /dev/null |
| if [ $? = "0" ]; then |
| echo Configuring for $OUT |
| |
| if [ "$TEST" = "true" ]; then |
| echo $PERL ./Configure $OUT $options |
| else |
| $PERL ./Configure $OUT $options |
| fi |
| else |
| echo "This system ($OUT) is not supported. See file INSTALL for details." |
| fi |
| ) |