| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | set -e |
| 4 | |
| 5 | name=`basename "$0"` |
| 6 | dir=`dirname "$0"` |
| 7 | bin=`cd "$dir" && pwd` |
| 8 | |
| 9 | die () { |
| 10 | echo >&2 "$1" |
| 11 | exit 1 |
| 12 | } |
| 13 | |
| 14 | usage () { |
| 15 | die "usage: $name" |
| 16 | } |
| 17 | |
| 18 | case "$#" in |
| 19 | 0) |
| 20 | ;; |
| 21 | *) |
| 22 | usage |
| 23 | ;; |
| 24 | esac |
| 25 | |
| 26 | uname=`uname` |
| 27 | arch= |
| 28 | |
| 29 | case "$uname" in |
| 30 | AIX) |
| 31 | HOST_OS='aix' |
| 32 | arch=`/usr/sbin/lsattr -a type -F deflt -l proc0` |
| 33 | case $arch in |
| 34 | POWER) arch=powerpc64 ;; |
| 35 | esac |
| 36 | ;; |
| 37 | CYGWIN*) |
| 38 | HOST_OS='cygwin' |
| 39 | ;; |
| 40 | Darwin) |
| 41 | HOST_OS='darwin' |
| 42 | ;; |
| 43 | *FreeBSD*) |
| 44 | HOST_OS='freebsd' |
| 45 | ;; |
| 46 | GNU) |
| 47 | HOST_OS='hurd' |
| 48 | ;; |
| 49 | HP-UX) |
| 50 | HOST_OS='hpux' |
| 51 | ;; |
| 52 | Linux) |
| 53 | HOST_OS='linux' |
| 54 | ;; |
| 55 | MINGW*) |
| 56 | HOST_OS='mingw' |
| 57 | ;; |
| 58 | NetBSD*) |
| 59 | HOST_OS='netbsd' |
| 60 | ;; |
| 61 | OpenBSD*) |
| 62 | HOST_OS='openbsd' |
| 63 | ;; |
| 64 | SunOS) |
| 65 | HOST_OS='solaris' |
| 66 | for arch in sparc amd64 i386 `uname -m`; do |
| 67 | optisa $arch > /dev/null && break |
| 68 | done |
| 69 | ;; |
| 70 | *) |
| 71 | die "Unknown OS $uname." |
| 72 | ;; |
| 73 | esac |
| 74 | |
| 75 | if [ -z "$arch" ]; then |
| 76 | arch=`uname -m` |
| 77 | fi |
| 78 | |
| 79 | case "$arch" in |
| 80 | alpha*) |
| 81 | # not certain about this one; no alpha access |
| 82 | HOST_ARCH=alpha |
| 83 | ;; |
| 84 | x86_64*) |
| 85 | HOST_ARCH=amd64 |
| 86 | ;; |
| 87 | i?86_64) |
| 88 | HOST_ARCH=amd64 |
| 89 | ;; |
| 90 | amd64) |
| 91 | HOST_ARCH=amd64 |
| 92 | ;; |
| 93 | arm*) |
| 94 | HOST_ARCH=arm |
| 95 | ;; |
| 96 | aarch64) |
| 97 | HOST_ARCH=arm64 |
| 98 | ;; |
| 99 | parisc*) |
| 100 | HOST_ARCH=hppa |
| 101 | ;; |
| 102 | 9000/*) |
| 103 | HOST_ARCH=hppa |
| 104 | ;; |
| 105 | ia64*) |
| 106 | HOST_ARCH=ia64 |
| 107 | ;; |
| 108 | m68k*) |
| 109 | HOST_ARCH=m68k |
| 110 | ;; |
| 111 | mips*) |
| 112 | # big-endian and little-endian detect via headers |
| 113 | HOST_ARCH=mips |
| 114 | ;; |
| 115 | powerpc64) |
| 116 | HOST_ARCH=powerpc64 |
| 117 | ;; |
| 118 | ppc64) |
| 119 | HOST_ARCH=powerpc64 |
| 120 | ;; |
| 121 | powerpc) |
| 122 | HOST_ARCH=powerpc |
| 123 | ;; |
| 124 | ppc*) |
| 125 | HOST_ARCH=powerpc |
| 126 | ;; |
| 127 | Power*) |
| 128 | HOST_ARCH=powerpc |
| 129 | ;; |
| 130 | s390*) |
| 131 | HOST_ARCH=s390 |
| 132 | ;; |
| 133 | sparc*) |
| 134 | HOST_ARCH=sparc |
| 135 | ;; |
| 136 | sun*) |
| 137 | HOST_ARCH=sparc |
| 138 | ;; |
| 139 | i?86*) |
| 140 | HOST_ARCH=x86 |
| 141 | ;; |
| 142 | *) |
| 143 | die "Unknown arch $arch." |
| 144 | ;; |
| 145 | esac |
| 146 | |
| 147 | echo "HOST_OS=$HOST_OS HOST_ARCH=$HOST_ARCH" |