1#!/bin/sh 2# This script attempts to guess a canonical system name. 3# Copyright (C) 1992, 1993 Free Software Foundation, Inc. 4# 5# This file is free software; you can redistribute it and/or modify it 6# under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, but 11# WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 18 19# 20# This script attempts to guess a canonical system name similar to 21# config.sub. If it succeeds, it prints the system name on stdout, and 22# exits with 0. Otherwise, it exits with 1. 23# 24# The plan is that this can be called by configure scripts if you 25# don't specify an explicit system type (host/target name). 26# 27# Only a few systems have been added to this list; please add others 28# (but try to keep the structure clean). 29# 30 31UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown 32UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown 33UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown 34UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown 35 36# Note: order is significant - the case branches are not exclusive. 37 38case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 39 alpha:OSF1:1.*:*) 40 # 1.2 uses "1.2" for uname -r. 41 echo alpha-dec-osf${UNAME_RELEASE} 42 exit 0 ;; 43 alpha:OSF1:V1.*:*) 44 # 1.3 uses "V1.3" for uname -r. 45 echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'` 46 exit 0 ;; 47 arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) 48 echo arm-acorn-riscix${UNAME_RELEASE} 49 exit 0;; 50 sun4*:SunOS:5.*:*) 51 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` 52 exit 0 ;; 53 sun4*:SunOS:6*:*) 54 # According to config.sub, this is the proper way to canonicalize 55 # SunOS6. Hard to guess exactly what SunOS6 will be like, but 56 # it's likely to be more like Solaris than SunOS4. 57 echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` 58 exit 0 ;; 59 sun4*:SunOS:*:*) 60 echo sparc-sun-sunos${UNAME_RELEASE} 61 exit 0 ;; 62 sun3*:SunOS:*:*) 63 echo m68k-sun-sunos${UNAME_RELEASE} 64 exit 0 ;; 65 RISC*:ULTRIX:*:*) 66 echo mips-dec-ultrix${UNAME_RELEASE} 67 exit 0 ;; 68 VAX*:ULTRIX*:*:*) 69 echo vax-dec-ultrix${UNAME_RELEASE} 70 exit 0 ;; 71 mips:*:5*:RISCos) 72 echo mips-mips-riscos${UNAME_RELEASE} 73 exit 0 ;; 74 m88k:*:4*:R4*) 75 echo m88k-motorola-sysv4 76 exit 0 ;; 77 m88k:*:3*:R3*) 78 echo m88k-motorola-sysv3 79 exit 0 ;; 80 AViiON:dgux:*:*) 81 echo m88k-dg-dgux${UNAME_RELEASE} 82 exit 0 ;; 83 M88*:*:R3*:*) 84 # Delta 88k system running SVR3 85 echo m88k-motorola-sysv3 86 exit 0 ;; 87 XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) 88 echo m88k-tektronix-sysv3 89 exit 0 ;; 90 Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) 91 echo m68k-tektronix-bsd 92 exit 0 ;; 93 *:IRIX:*:*) 94 echo mips-sgi-irix${UNAME_RELEASE} 95 exit 0 ;; 96 i[34]86:AIX:*:*) 97 echo i386-ibm-aix 98 exit 0 ;; 99 *:AIX:2:3) 100 echo rs6000-ibm-aix3.2 101 exit 0 ;; 102 *:AIX:*:*) 103 echo rs6000-ibm-aix 104 exit 0 ;; 105 *:BOSX:*:*) 106 echo rs6000-bull-bosx 107 exit 0 ;; 108 DPX/2?00:B.O.S.:*:*) 109 echo m68k-bull-sysv3 110 exit 0 ;; 111 9000/31?:HP-UX:*:*) 112 echo m68000-hp-hpux 113 exit 0 ;; 114 9000/[34]??:HP-UX:*:*) 115 echo m68k-hp-hpux 116 exit 0 ;; 117 9000/[34]??:4.3bsd:1.*:*) 118 echo m68k-hp-bsd 119 exit 0 ;; 120 hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) 121 echo m68k-hp-bsd4.4 122 exit 0 ;; 123 9000/7??:HP-UX:*:* | 9000/8?7:HP-UX:*:* ) 124 echo hppa1.1-hp-hpux 125 exit 0 ;; 126 9000/8??:HP-UX:*:*) 127 echo hppa1.0-hp-hpux 128 exit 0 ;; 129 3050*:HI-UX:*:*) 130 sed 's/^ //' << EOF >dummy.c 131 #include <unistd.h> 132 int 133 main () 134 { 135 long cpu = sysconf (_SC_CPU_VERSION); 136 /* The order matters, because CPU_IS_HP_MC68K erroneously returns 137 true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct 138 results, however. */ 139 if (CPU_IS_PA_RISC (cpu)) 140 { 141 switch (cpu) 142 { 143 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; 144 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; 145 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; 146 default: puts ("hppa-hitachi-hiuxwe2"); break; 147 } 148 } 149 else if (CPU_IS_HP_MC68K (cpu)) 150 puts ("m68k-hitachi-hiuxwe2"); 151 else puts ("unknown-hitachi-hiuxwe2"); 152 exit (0); 153 } 154EOF 155 ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 156 rm -f dummy.c dummy 157 echo unknown-hitachi-hiuxwe2 158 exit 0 ;; 159 9000/7??:4.3bsd:*:* | 9000/8?7:4.3bsd:*:* ) 160 echo hppa1.1-hp-bsd 161 exit 0 ;; 162 9000/8??:4.3bsd:*:*) 163 echo hppa1.0-hp-bsd 164 exit 0 ;; 165 hp7??:OSF1:*:* | hp8?7:OSF1:*:* ) 166 echo hppa1.1-hp-osf 167 exit 0 ;; 168 hp8??:OSF1:*:*) 169 echo hppa1.0-hp-osf 170 exit 0 ;; 171 C1*:ConvexOS:*:* | convex:ConvexOS:C1:*) 172 echo c1-convex-bsd 173 exit 0 ;; 174 C2*:ConvexOS:*:* | convex:ConvexOS:C2:*) 175 echo c2-convex-bsd 176 exit 0 ;; 177 CRAY*X-MP:UNICOS:*:*) 178 echo xmp-cray-unicos 179 exit 0 ;; 180 CRAY*Y-MP:UNICOS:*:*) 181 echo ymp-cray-unicos 182 exit 0 ;; 183 CRAY-2:UNICOS:*:*) 184 echo cray2-cray-unicos 185 exit 0 ;; 186 hp3[0-9][05]:NetBSD:*:*) 187 echo m68k-hp-netbsd${UNAME_RELEASE} 188 exit 0 ;; 189 i[34]86:FreeBSD:*:*) 190 echo ${UNAME_MACHINE}-unknown-freebsd${UNAME_RELEASE} 191 exit 0 ;; 192 i[34]86:NetBSD:*:*) 193 echo ${UNAME_MACHINE}-unknown-netbsd${UNAME_RELEASE} 194 exit 0 ;; 195 i[34]86:Linux:*:*) 196 echo ${UNAME_MACHINE}-unknown-linux 197 exit 0 ;; 198 i[34]86:UNIX_SV:4.*:*) 199 if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then 200 echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} 201 else 202 echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} 203 fi 204 exit 0 ;; 205 i[34]86:*:3.2:*) 206 if /bin/uname -X 2>/dev/null >/dev/null ; then 207 UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` 208 (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 209 echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL 210 else 211 echo ${UNAME_MACHINE}-unknown-sysv32 212 fi 213 exit 0 ;; 214# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions 215# are messed up and put the nodename in both sysname and nodename. 216 i[34]86:DYNIX/ptx:4*:*) 217 echo i386-sequent-sysv4 218 exit 0 ;; 219 mini*:CTIX:SYS*5:*) 220 # "miniframe" 221 echo m68010-convergent-sysv 222 exit 0 ;; 223 M680[234]0:*:R3V[567]*:*) 224 test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 225 3[34]??:*:4.0:*) 226 uname -p 2>/dev/null | grep 86 >/dev/null \ 227 && echo i486-ncr-sysv4 && exit 0 ;; 228 33[56]0,3???:*:4.0:*) 229 uname -p 2>/dev/null | grep 86 >/dev/null \ 230 && echo i486-ncr-sysv43 && exit 0 ;; 231 m680[234]0:LynxOS:2.2*:*) 232 echo m68k-lynx-lynxos${UNAME_RELEASE} 233 exit 0 ;; 234 i[34]86:LynxOS:2.2*:*) 235 echo i386-lynx-lynxos${UNAME_RELEASE} 236 exit 0 ;; 237 TSUNAMI:LynxOS:2.2*:*) 238 echo sparc-lynx-lynxos${UNAME_RELEASE} 239 exit 0 ;; 240 rs6000:LynxOS:2.2*:*) 241 echo rs6000-lynx-lynxos${UNAME_RELEASE} 242 exit 0 ;; 243 RM*:SINIX-*:*:*) 244 echo mips-sni-sysv4 245 exit 0 ;; 246 *:SINIX-*:*:*) 247 if uname -p 2>/dev/null >/dev/null ; then 248 UNAME_MACHINE=`(uname -p) 2>/dev/null` 249 echo ${UNAME_MACHINE}-sni-sysv4 250 else 251 echo ns32k-sni-sysv 252 fi 253 exit 0 ;; 254esac 255 256#echo '(No uname command or uname output not recognized.)' 1>&2 257#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 258 259cat >dummy.c <<EOF 260main() 261{ 262#if defined (sony) 263#if defined (MIPSEB) 264 /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, 265 I don't know.... */ 266 printf ("mips-sony-bsd\n"); exit (0); 267#else 268 printf("m68k-sony-newsos\n"); exit(0); 269#endif 270#endif 271 272#if defined (__arm) && defined (__acorn) && defined (__unix) 273 printf("arm-acorn-riscix"); exit (0); 274#endif 275 276#if defined(hp300) && !defined(hpux) 277 printf("m68k-hp-bsd\n"); exit(0); 278#endif 279 280#if defined(NeXT) 281#if !defined(__ARCHITECTURE__) 282#define __ARCHITECTURE__ "m68k" 283#endif 284 printf("%s-next-nextstep\n", __ARCHITECTURE__); exit(0); 285#endif 286 287#if defined (MULTIMAX) || defined (n16) 288#if defined (UMAXV) 289 printf("ns32k-encore-sysv\n"); exit(0); 290#else 291#if defined (CMU) 292 printf("ns32k-encore-mach\n"); exit(0); 293#else 294 printf("ns32k-encore-bsd\n"); exit(0); 295#endif 296#endif 297#endif 298 299#if defined(__bsdi__) && defined(__i386__) 300 printf("i386-unknown-bsd386\n"); exit(0); 301#else 302#if defined(__386BSD__) 303 printf("i386-unknown-bsd\n"); exit(0); 304#endif 305#endif 306 307#if defined(sequent) 308#if defined(i386) 309 printf("i386-sequent-dynix\n"); exit(0); 310#endif 311#if defined (ns32000) 312 printf("ns32k-sequent-dynix\n"); exit(0); 313#endif 314#endif 315 316#if defined(_SEQUENT_) 317 printf("i386-sequent-ptx\n"); exit(0); 318#endif 319 320#if defined(vax) 321#if !defined(ultrix) 322 printf("vax-dec-bsd\n"); exit(0); 323#else 324 printf("vax-dec-ultrix\n"); exit(0); 325#endif 326#endif 327 328 exit (1); 329} 330EOF 331 332${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 333rm -f dummy.c dummy 334 335# Apollos put the system type in the environment. 336 337test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } 338 339#echo '(Unable to guess system type)' 1>&2 340 341exit 1 342