Annotation of parser3/config.sub, revision 1.7

1.1       paf         1: #! /bin/sh
1.3       paf         2: # Configuration validation subroutine script.
1.7     ! moko        3: #   Copyright 1992-2024 Free Software Foundation, Inc.
1.6       moko        4: 
1.7     ! moko        5: # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
        !             6: 
        !             7: timestamp='2024-05-27'
1.6       moko        8: 
                      9: # This file is free software; you can redistribute it and/or modify it
                     10: # under the terms of the GNU General Public License as published by
1.7     ! moko       11: # the Free Software Foundation, either version 3 of the License, or
1.1       paf        12: # (at your option) any later version.
                     13: #
1.6       moko       14: # This program is distributed in the hope that it will be useful, but
                     15: # WITHOUT ANY WARRANTY; without even the implied warranty of
                     16: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     17: # General Public License for more details.
1.1       paf        18: #
                     19: # You should have received a copy of the GNU General Public License
1.7     ! moko       20: # along with this program; if not, see <https://www.gnu.org/licenses/>.
1.5       moko       21: #
1.1       paf        22: # As a special exception to the GNU General Public License, if you
                     23: # distribute this file as part of a program that contains a
                     24: # configuration script generated by Autoconf, you may include it under
1.6       moko       25: # the same distribution terms that you use for the rest of that
                     26: # program.  This Exception is an additional permission under section 7
                     27: # of the GNU General Public License, version 3 ("GPLv3").
1.1       paf        28: 
1.5       moko       29: 
1.6       moko       30: # Please send patches to <config-patches@gnu.org>.
1.1       paf        31: #
                     32: # Configuration subroutine to validate and canonicalize a configuration type.
                     33: # Supply the specified configuration type as an argument.
                     34: # If it is invalid, we print an error message on stderr and exit with code 1.
                     35: # Otherwise, we print the canonical config type on stdout and succeed.
                     36: 
1.5       moko       37: # You can get the latest version of this script from:
1.7     ! moko       38: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
1.5       moko       39: 
1.1       paf        40: # This file is supposed to be the same for all GNU packages
                     41: # and recognize all the CPU types, system types and aliases
                     42: # that are meaningful with *any* GNU software.
                     43: # Each package is responsible for reporting which valid configurations
                     44: # it does not support.  The user should be able to distinguish
                     45: # a failure to support a valid configuration from a meaningless
                     46: # configuration.
                     47: 
                     48: # The goal of this file is to map all the various variations of a given
                     49: # machine specification into a single specification in the form:
                     50: #      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
                     51: # or in some cases, the newer four-part form:
                     52: #      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
                     53: # It is wrong to echo any other type of specification.
                     54: 
1.7     ! moko       55: # The "shellcheck disable" line above the timestamp inhibits complaints
        !            56: # about features and limitations of the classic Bourne shell that were
        !            57: # superseded or lifted in POSIX.  However, this script identifies a wide
        !            58: # variety of pre-POSIX systems that do not have POSIX shells at all, and
        !            59: # even some reasonably current systems (Solaris 10 as case-in-point) still
        !            60: # have a pre-POSIX /bin/sh.
        !            61: 
1.3       paf        62: me=`echo "$0" | sed -e 's,.*/,,'`
                     63: 
                     64: usage="\
1.7     ! moko       65: Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
1.3       paf        66: 
                     67: Canonicalize a configuration name.
                     68: 
1.7     ! moko       69: Options:
1.3       paf        70:   -h, --help         print this help, then exit
                     71:   -t, --time-stamp   print date of last modification, then exit
                     72:   -v, --version      print version number, then exit
                     73: 
                     74: Report bugs and patches to <config-patches@gnu.org>."
                     75: 
                     76: version="\
                     77: GNU config.sub ($timestamp)
                     78: 
1.7     ! moko       79: Copyright 1992-2024 Free Software Foundation, Inc.
1.3       paf        80: 
                     81: This is free software; see the source for copying conditions.  There is NO
                     82: warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
                     83: 
                     84: help="
1.7     ! moko       85: Try '$me --help' for more information."
1.3       paf        86: 
                     87: # Parse command line
                     88: while test $# -gt 0 ; do
                     89:   case $1 in
                     90:     --time-stamp | --time* | -t )
1.5       moko       91:        echo "$timestamp" ; exit ;;
1.3       paf        92:     --version | -v )
1.5       moko       93:        echo "$version" ; exit ;;
1.3       paf        94:     --help | --h* | -h )
1.5       moko       95:        echo "$usage"; exit ;;
1.3       paf        96:     -- )     # Stop option processing
                     97:        shift; break ;;
                     98:     - )        # Use stdin as input.
                     99:        break ;;
                    100:     -* )
1.7     ! moko      101:        echo "$me: invalid option $1$help" >&2
1.3       paf       102:        exit 1 ;;
                    103: 
                    104:     *local*)
                    105:        # First pass through any local machine types.
1.7     ! moko      106:        echo "$1"
1.5       moko      107:        exit ;;
1.3       paf       108: 
                    109:     * )
                    110:        break ;;
                    111:   esac
                    112: done
1.1       paf       113: 
1.3       paf       114: case $# in
                    115:  0) echo "$me: missing argument$help" >&2
                    116:     exit 1;;
                    117:  1) ;;
                    118:  *) echo "$me: too many arguments$help" >&2
                    119:     exit 1;;
1.1       paf       120: esac
                    121: 
1.7     ! moko      122: # Split fields of configuration type
        !           123: saved_IFS=$IFS
        !           124: IFS="-" read field1 field2 field3 field4 <<EOF
        !           125: $1
        !           126: EOF
        !           127: IFS=$saved_IFS
        !           128: 
        !           129: # Separate into logical components for further validation
        !           130: case $1 in
        !           131:        *-*-*-*-*)
        !           132:                echo "Invalid configuration '$1': more than four components" >&2
        !           133:                exit 1
1.1       paf       134:                ;;
1.7     ! moko      135:        *-*-*-*)
        !           136:                basic_machine=$field1-$field2
        !           137:                basic_os=$field3-$field4
1.1       paf       138:                ;;
1.7     ! moko      139:        *-*-*)
        !           140:                # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
        !           141:                # parts
        !           142:                maybe_os=$field2-$field3
        !           143:                case $maybe_os in
        !           144:                          cloudabi*-eabi* \
        !           145:                        | kfreebsd*-gnu* \
        !           146:                        | knetbsd*-gnu* \
        !           147:                        | kopensolaris*-gnu* \
        !           148:                        | linux-* \
        !           149:                        | managarm-* \
        !           150:                        | netbsd*-eabi* \
        !           151:                        | netbsd*-gnu* \
        !           152:                        | nto-qnx* \
        !           153:                        | os2-emx* \
        !           154:                        | rtmk-nova* \
        !           155:                        | storm-chaos* \
        !           156:                        | uclinux-gnu* \
        !           157:                        | uclinux-uclibc* \
        !           158:                        | windows-* )
        !           159:                                basic_machine=$field1
        !           160:                                basic_os=$maybe_os
        !           161:                                ;;
        !           162:                        android-linux)
        !           163:                                basic_machine=$field1-unknown
        !           164:                                basic_os=linux-android
        !           165:                                ;;
        !           166:                        *)
        !           167:                                basic_machine=$field1-$field2
        !           168:                                basic_os=$field3
        !           169:                                ;;
        !           170:                esac
1.5       moko      171:                ;;
1.7     ! moko      172:        *-*)
        !           173:                case $field1-$field2 in
        !           174:                        # Shorthands that happen to contain a single dash
        !           175:                        convex-c[12] | convex-c3[248])
        !           176:                                basic_machine=$field2-convex
        !           177:                                basic_os=
        !           178:                                ;;
        !           179:                        decstation-3100)
        !           180:                                basic_machine=mips-dec
        !           181:                                basic_os=
        !           182:                                ;;
        !           183:                        *-*)
        !           184:                                # Second component is usually, but not always the OS
        !           185:                                case $field2 in
        !           186:                                        # Do not treat sunos as a manufacturer
        !           187:                                        sun*os*)
        !           188:                                                basic_machine=$field1
        !           189:                                                basic_os=$field2
        !           190:                                                ;;
        !           191:                                        # Manufacturers
        !           192:                                          3100* \
        !           193:                                        | 32* \
        !           194:                                        | 3300* \
        !           195:                                        | 3600* \
        !           196:                                        | 7300* \
        !           197:                                        | acorn \
        !           198:                                        | altos* \
        !           199:                                        | apollo \
        !           200:                                        | apple \
        !           201:                                        | atari \
        !           202:                                        | att* \
        !           203:                                        | axis \
        !           204:                                        | be \
        !           205:                                        | bull \
        !           206:                                        | cbm \
        !           207:                                        | ccur \
        !           208:                                        | cisco \
        !           209:                                        | commodore \
        !           210:                                        | convergent* \
        !           211:                                        | convex* \
        !           212:                                        | cray \
        !           213:                                        | crds \
        !           214:                                        | dec* \
        !           215:                                        | delta* \
        !           216:                                        | dg \
        !           217:                                        | digital \
        !           218:                                        | dolphin \
        !           219:                                        | encore* \
        !           220:                                        | gould \
        !           221:                                        | harris \
        !           222:                                        | highlevel \
        !           223:                                        | hitachi* \
        !           224:                                        | hp \
        !           225:                                        | ibm* \
        !           226:                                        | intergraph \
        !           227:                                        | isi* \
        !           228:                                        | knuth \
        !           229:                                        | masscomp \
        !           230:                                        | microblaze* \
        !           231:                                        | mips* \
        !           232:                                        | motorola* \
        !           233:                                        | ncr* \
        !           234:                                        | news \
        !           235:                                        | next \
        !           236:                                        | ns \
        !           237:                                        | oki \
        !           238:                                        | omron* \
        !           239:                                        | pc533* \
        !           240:                                        | rebel \
        !           241:                                        | rom68k \
        !           242:                                        | rombug \
        !           243:                                        | semi \
        !           244:                                        | sequent* \
        !           245:                                        | siemens \
        !           246:                                        | sgi* \
        !           247:                                        | siemens \
        !           248:                                        | sim \
        !           249:                                        | sni \
        !           250:                                        | sony* \
        !           251:                                        | stratus \
        !           252:                                        | sun \
        !           253:                                        | sun[234]* \
        !           254:                                        | tektronix \
        !           255:                                        | tti* \
        !           256:                                        | ultra \
        !           257:                                        | unicom* \
        !           258:                                        | wec \
        !           259:                                        | winbond \
        !           260:                                        | wrs)
        !           261:                                                basic_machine=$field1-$field2
        !           262:                                                basic_os=
        !           263:                                                ;;
        !           264:                                        zephyr*)
        !           265:                                                basic_machine=$field1-unknown
        !           266:                                                basic_os=$field2
        !           267:                                                ;;
        !           268:                                        *)
        !           269:                                                basic_machine=$field1
        !           270:                                                basic_os=$field2
        !           271:                                                ;;
        !           272:                                esac
        !           273:                        ;;
        !           274:                esac
1.1       paf       275:                ;;
1.7     ! moko      276:        *)
        !           277:                # Convert single-component short-hands not valid as part of
        !           278:                # multi-component configurations.
        !           279:                case $field1 in
        !           280:                        386bsd)
        !           281:                                basic_machine=i386-pc
        !           282:                                basic_os=bsd
        !           283:                                ;;
        !           284:                        a29khif)
        !           285:                                basic_machine=a29k-amd
        !           286:                                basic_os=udi
        !           287:                                ;;
        !           288:                        adobe68k)
        !           289:                                basic_machine=m68010-adobe
        !           290:                                basic_os=scout
        !           291:                                ;;
        !           292:                        alliant)
        !           293:                                basic_machine=fx80-alliant
        !           294:                                basic_os=
        !           295:                                ;;
        !           296:                        altos | altos3068)
        !           297:                                basic_machine=m68k-altos
        !           298:                                basic_os=
        !           299:                                ;;
        !           300:                        am29k)
        !           301:                                basic_machine=a29k-none
        !           302:                                basic_os=bsd
        !           303:                                ;;
        !           304:                        amdahl)
        !           305:                                basic_machine=580-amdahl
        !           306:                                basic_os=sysv
        !           307:                                ;;
        !           308:                        amiga)
        !           309:                                basic_machine=m68k-unknown
        !           310:                                basic_os=
        !           311:                                ;;
        !           312:                        amigaos | amigados)
        !           313:                                basic_machine=m68k-unknown
        !           314:                                basic_os=amigaos
        !           315:                                ;;
        !           316:                        amigaunix | amix)
        !           317:                                basic_machine=m68k-unknown
        !           318:                                basic_os=sysv4
        !           319:                                ;;
        !           320:                        apollo68)
        !           321:                                basic_machine=m68k-apollo
        !           322:                                basic_os=sysv
        !           323:                                ;;
        !           324:                        apollo68bsd)
        !           325:                                basic_machine=m68k-apollo
        !           326:                                basic_os=bsd
        !           327:                                ;;
        !           328:                        aros)
        !           329:                                basic_machine=i386-pc
        !           330:                                basic_os=aros
        !           331:                                ;;
        !           332:                        aux)
        !           333:                                basic_machine=m68k-apple
        !           334:                                basic_os=aux
        !           335:                                ;;
        !           336:                        balance)
        !           337:                                basic_machine=ns32k-sequent
        !           338:                                basic_os=dynix
        !           339:                                ;;
        !           340:                        blackfin)
        !           341:                                basic_machine=bfin-unknown
        !           342:                                basic_os=linux
        !           343:                                ;;
        !           344:                        cegcc)
        !           345:                                basic_machine=arm-unknown
        !           346:                                basic_os=cegcc
        !           347:                                ;;
        !           348:                        cray)
        !           349:                                basic_machine=j90-cray
        !           350:                                basic_os=unicos
        !           351:                                ;;
        !           352:                        crds | unos)
        !           353:                                basic_machine=m68k-crds
        !           354:                                basic_os=
        !           355:                                ;;
        !           356:                        da30)
        !           357:                                basic_machine=m68k-da30
        !           358:                                basic_os=
        !           359:                                ;;
        !           360:                        decstation | pmax | pmin | dec3100 | decstatn)
        !           361:                                basic_machine=mips-dec
        !           362:                                basic_os=
        !           363:                                ;;
        !           364:                        delta88)
        !           365:                                basic_machine=m88k-motorola
        !           366:                                basic_os=sysv3
        !           367:                                ;;
        !           368:                        dicos)
        !           369:                                basic_machine=i686-pc
        !           370:                                basic_os=dicos
        !           371:                                ;;
        !           372:                        djgpp)
        !           373:                                basic_machine=i586-pc
        !           374:                                basic_os=msdosdjgpp
        !           375:                                ;;
        !           376:                        ebmon29k)
        !           377:                                basic_machine=a29k-amd
        !           378:                                basic_os=ebmon
        !           379:                                ;;
        !           380:                        es1800 | OSE68k | ose68k | ose | OSE)
        !           381:                                basic_machine=m68k-ericsson
        !           382:                                basic_os=ose
        !           383:                                ;;
        !           384:                        gmicro)
        !           385:                                basic_machine=tron-gmicro
        !           386:                                basic_os=sysv
        !           387:                                ;;
        !           388:                        go32)
        !           389:                                basic_machine=i386-pc
        !           390:                                basic_os=go32
        !           391:                                ;;
        !           392:                        h8300hms)
        !           393:                                basic_machine=h8300-hitachi
        !           394:                                basic_os=hms
        !           395:                                ;;
        !           396:                        h8300xray)
        !           397:                                basic_machine=h8300-hitachi
        !           398:                                basic_os=xray
        !           399:                                ;;
        !           400:                        h8500hms)
        !           401:                                basic_machine=h8500-hitachi
        !           402:                                basic_os=hms
        !           403:                                ;;
        !           404:                        harris)
        !           405:                                basic_machine=m88k-harris
        !           406:                                basic_os=sysv3
        !           407:                                ;;
        !           408:                        hp300 | hp300hpux)
        !           409:                                basic_machine=m68k-hp
        !           410:                                basic_os=hpux
        !           411:                                ;;
        !           412:                        hp300bsd)
        !           413:                                basic_machine=m68k-hp
        !           414:                                basic_os=bsd
        !           415:                                ;;
        !           416:                        hppaosf)
        !           417:                                basic_machine=hppa1.1-hp
        !           418:                                basic_os=osf
        !           419:                                ;;
        !           420:                        hppro)
        !           421:                                basic_machine=hppa1.1-hp
        !           422:                                basic_os=proelf
        !           423:                                ;;
        !           424:                        i386mach)
        !           425:                                basic_machine=i386-mach
        !           426:                                basic_os=mach
        !           427:                                ;;
        !           428:                        isi68 | isi)
        !           429:                                basic_machine=m68k-isi
        !           430:                                basic_os=sysv
        !           431:                                ;;
        !           432:                        m68knommu)
        !           433:                                basic_machine=m68k-unknown
        !           434:                                basic_os=linux
        !           435:                                ;;
        !           436:                        magnum | m3230)
        !           437:                                basic_machine=mips-mips
        !           438:                                basic_os=sysv
        !           439:                                ;;
        !           440:                        merlin)
        !           441:                                basic_machine=ns32k-utek
        !           442:                                basic_os=sysv
        !           443:                                ;;
        !           444:                        mingw64)
        !           445:                                basic_machine=x86_64-pc
        !           446:                                basic_os=mingw64
        !           447:                                ;;
        !           448:                        mingw32)
        !           449:                                basic_machine=i686-pc
        !           450:                                basic_os=mingw32
        !           451:                                ;;
        !           452:                        mingw32ce)
        !           453:                                basic_machine=arm-unknown
        !           454:                                basic_os=mingw32ce
        !           455:                                ;;
        !           456:                        monitor)
        !           457:                                basic_machine=m68k-rom68k
        !           458:                                basic_os=coff
        !           459:                                ;;
        !           460:                        morphos)
        !           461:                                basic_machine=powerpc-unknown
        !           462:                                basic_os=morphos
        !           463:                                ;;
        !           464:                        moxiebox)
        !           465:                                basic_machine=moxie-unknown
        !           466:                                basic_os=moxiebox
        !           467:                                ;;
        !           468:                        msdos)
        !           469:                                basic_machine=i386-pc
        !           470:                                basic_os=msdos
        !           471:                                ;;
        !           472:                        msys)
        !           473:                                basic_machine=i686-pc
        !           474:                                basic_os=msys
        !           475:                                ;;
        !           476:                        mvs)
        !           477:                                basic_machine=i370-ibm
        !           478:                                basic_os=mvs
        !           479:                                ;;
        !           480:                        nacl)
        !           481:                                basic_machine=le32-unknown
        !           482:                                basic_os=nacl
        !           483:                                ;;
        !           484:                        ncr3000)
        !           485:                                basic_machine=i486-ncr
        !           486:                                basic_os=sysv4
        !           487:                                ;;
        !           488:                        netbsd386)
        !           489:                                basic_machine=i386-pc
        !           490:                                basic_os=netbsd
        !           491:                                ;;
        !           492:                        netwinder)
        !           493:                                basic_machine=armv4l-rebel
        !           494:                                basic_os=linux
        !           495:                                ;;
        !           496:                        news | news700 | news800 | news900)
        !           497:                                basic_machine=m68k-sony
        !           498:                                basic_os=newsos
        !           499:                                ;;
        !           500:                        news1000)
        !           501:                                basic_machine=m68030-sony
        !           502:                                basic_os=newsos
        !           503:                                ;;
        !           504:                        necv70)
        !           505:                                basic_machine=v70-nec
        !           506:                                basic_os=sysv
        !           507:                                ;;
        !           508:                        nh3000)
        !           509:                                basic_machine=m68k-harris
        !           510:                                basic_os=cxux
        !           511:                                ;;
        !           512:                        nh[45]000)
        !           513:                                basic_machine=m88k-harris
        !           514:                                basic_os=cxux
        !           515:                                ;;
        !           516:                        nindy960)
        !           517:                                basic_machine=i960-intel
        !           518:                                basic_os=nindy
        !           519:                                ;;
        !           520:                        mon960)
        !           521:                                basic_machine=i960-intel
        !           522:                                basic_os=mon960
        !           523:                                ;;
        !           524:                        nonstopux)
        !           525:                                basic_machine=mips-compaq
        !           526:                                basic_os=nonstopux
        !           527:                                ;;
        !           528:                        os400)
        !           529:                                basic_machine=powerpc-ibm
        !           530:                                basic_os=os400
        !           531:                                ;;
        !           532:                        OSE68000 | ose68000)
        !           533:                                basic_machine=m68000-ericsson
        !           534:                                basic_os=ose
        !           535:                                ;;
        !           536:                        os68k)
        !           537:                                basic_machine=m68k-none
        !           538:                                basic_os=os68k
        !           539:                                ;;
        !           540:                        paragon)
        !           541:                                basic_machine=i860-intel
        !           542:                                basic_os=osf
        !           543:                                ;;
        !           544:                        parisc)
        !           545:                                basic_machine=hppa-unknown
        !           546:                                basic_os=linux
        !           547:                                ;;
        !           548:                        psp)
        !           549:                                basic_machine=mipsallegrexel-sony
        !           550:                                basic_os=psp
        !           551:                                ;;
        !           552:                        pw32)
        !           553:                                basic_machine=i586-unknown
        !           554:                                basic_os=pw32
        !           555:                                ;;
        !           556:                        rdos | rdos64)
        !           557:                                basic_machine=x86_64-pc
        !           558:                                basic_os=rdos
        !           559:                                ;;
        !           560:                        rdos32)
        !           561:                                basic_machine=i386-pc
        !           562:                                basic_os=rdos
        !           563:                                ;;
        !           564:                        rom68k)
        !           565:                                basic_machine=m68k-rom68k
        !           566:                                basic_os=coff
        !           567:                                ;;
        !           568:                        sa29200)
        !           569:                                basic_machine=a29k-amd
        !           570:                                basic_os=udi
        !           571:                                ;;
        !           572:                        sei)
        !           573:                                basic_machine=mips-sei
        !           574:                                basic_os=seiux
        !           575:                                ;;
        !           576:                        sequent)
        !           577:                                basic_machine=i386-sequent
        !           578:                                basic_os=
        !           579:                                ;;
        !           580:                        sps7)
        !           581:                                basic_machine=m68k-bull
        !           582:                                basic_os=sysv2
        !           583:                                ;;
        !           584:                        st2000)
        !           585:                                basic_machine=m68k-tandem
        !           586:                                basic_os=
        !           587:                                ;;
        !           588:                        stratus)
        !           589:                                basic_machine=i860-stratus
        !           590:                                basic_os=sysv4
        !           591:                                ;;
        !           592:                        sun2)
        !           593:                                basic_machine=m68000-sun
        !           594:                                basic_os=
        !           595:                                ;;
        !           596:                        sun2os3)
        !           597:                                basic_machine=m68000-sun
        !           598:                                basic_os=sunos3
        !           599:                                ;;
        !           600:                        sun2os4)
        !           601:                                basic_machine=m68000-sun
        !           602:                                basic_os=sunos4
        !           603:                                ;;
        !           604:                        sun3)
        !           605:                                basic_machine=m68k-sun
        !           606:                                basic_os=
        !           607:                                ;;
        !           608:                        sun3os3)
        !           609:                                basic_machine=m68k-sun
        !           610:                                basic_os=sunos3
        !           611:                                ;;
        !           612:                        sun3os4)
        !           613:                                basic_machine=m68k-sun
        !           614:                                basic_os=sunos4
        !           615:                                ;;
        !           616:                        sun4)
        !           617:                                basic_machine=sparc-sun
        !           618:                                basic_os=
        !           619:                                ;;
        !           620:                        sun4os3)
        !           621:                                basic_machine=sparc-sun
        !           622:                                basic_os=sunos3
        !           623:                                ;;
        !           624:                        sun4os4)
        !           625:                                basic_machine=sparc-sun
        !           626:                                basic_os=sunos4
        !           627:                                ;;
        !           628:                        sun4sol2)
        !           629:                                basic_machine=sparc-sun
        !           630:                                basic_os=solaris2
        !           631:                                ;;
        !           632:                        sun386 | sun386i | roadrunner)
        !           633:                                basic_machine=i386-sun
        !           634:                                basic_os=
        !           635:                                ;;
        !           636:                        sv1)
        !           637:                                basic_machine=sv1-cray
        !           638:                                basic_os=unicos
        !           639:                                ;;
        !           640:                        symmetry)
        !           641:                                basic_machine=i386-sequent
        !           642:                                basic_os=dynix
        !           643:                                ;;
        !           644:                        t3e)
        !           645:                                basic_machine=alphaev5-cray
        !           646:                                basic_os=unicos
        !           647:                                ;;
        !           648:                        t90)
        !           649:                                basic_machine=t90-cray
        !           650:                                basic_os=unicos
        !           651:                                ;;
        !           652:                        toad1)
        !           653:                                basic_machine=pdp10-xkl
        !           654:                                basic_os=tops20
        !           655:                                ;;
        !           656:                        tpf)
        !           657:                                basic_machine=s390x-ibm
        !           658:                                basic_os=tpf
        !           659:                                ;;
        !           660:                        udi29k)
        !           661:                                basic_machine=a29k-amd
        !           662:                                basic_os=udi
        !           663:                                ;;
        !           664:                        ultra3)
        !           665:                                basic_machine=a29k-nyu
        !           666:                                basic_os=sym1
        !           667:                                ;;
        !           668:                        v810 | necv810)
        !           669:                                basic_machine=v810-nec
        !           670:                                basic_os=none
        !           671:                                ;;
        !           672:                        vaxv)
        !           673:                                basic_machine=vax-dec
        !           674:                                basic_os=sysv
        !           675:                                ;;
        !           676:                        vms)
        !           677:                                basic_machine=vax-dec
        !           678:                                basic_os=vms
        !           679:                                ;;
        !           680:                        vsta)
        !           681:                                basic_machine=i386-pc
        !           682:                                basic_os=vsta
        !           683:                                ;;
        !           684:                        vxworks960)
        !           685:                                basic_machine=i960-wrs
        !           686:                                basic_os=vxworks
        !           687:                                ;;
        !           688:                        vxworks68)
        !           689:                                basic_machine=m68k-wrs
        !           690:                                basic_os=vxworks
        !           691:                                ;;
        !           692:                        vxworks29k)
        !           693:                                basic_machine=a29k-wrs
        !           694:                                basic_os=vxworks
        !           695:                                ;;
        !           696:                        xbox)
        !           697:                                basic_machine=i686-pc
        !           698:                                basic_os=mingw32
        !           699:                                ;;
        !           700:                        ymp)
        !           701:                                basic_machine=ymp-cray
        !           702:                                basic_os=unicos
        !           703:                                ;;
        !           704:                        *)
        !           705:                                basic_machine=$1
        !           706:                                basic_os=
        !           707:                                ;;
        !           708:                esac
1.1       paf       709:                ;;
                    710: esac
                    711: 
1.7     ! moko      712: # Decode 1-component or ad-hoc basic machines
1.1       paf       713: case $basic_machine in
1.7     ! moko      714:        # Here we handle the default manufacturer of certain CPU types.  It is in
        !           715:        # some cases the only manufacturer, in others, it is the most popular.
        !           716:        w89k)
        !           717:                cpu=hppa1.1
        !           718:                vendor=winbond
1.1       paf       719:                ;;
1.7     ! moko      720:        op50n)
        !           721:                cpu=hppa1.1
        !           722:                vendor=oki
1.5       moko      723:                ;;
1.7     ! moko      724:        op60c)
        !           725:                cpu=hppa1.1
        !           726:                vendor=oki
1.5       moko      727:                ;;
1.7     ! moko      728:        ibm*)
        !           729:                cpu=i370
        !           730:                vendor=ibm
1.5       moko      731:                ;;
1.7     ! moko      732:        orion105)
        !           733:                cpu=clipper
        !           734:                vendor=highlevel
1.6       moko      735:                ;;
1.7     ! moko      736:        mac | mpw | mac-mpw)
        !           737:                cpu=m68k
        !           738:                vendor=apple
1.3       paf       739:                ;;
1.7     ! moko      740:        pmac | pmac-mpw)
        !           741:                cpu=powerpc
        !           742:                vendor=apple
1.5       moko      743:                ;;
1.1       paf       744: 
                    745:        # Recognize the various machine names and aliases which stand
                    746:        # for a CPU type and a company and sometimes even an OS.
                    747:        3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
1.7     ! moko      748:                cpu=m68000
        !           749:                vendor=att
1.1       paf       750:                ;;
                    751:        3b*)
1.7     ! moko      752:                cpu=we32k
        !           753:                vendor=att
1.5       moko      754:                ;;
                    755:        bluegene*)
1.7     ! moko      756:                cpu=powerpc
        !           757:                vendor=ibm
        !           758:                basic_os=cnk
1.1       paf       759:                ;;
1.3       paf       760:        decsystem10* | dec10*)
1.7     ! moko      761:                cpu=pdp10
        !           762:                vendor=dec
        !           763:                basic_os=tops10
1.3       paf       764:                ;;
                    765:        decsystem20* | dec20*)
1.7     ! moko      766:                cpu=pdp10
        !           767:                vendor=dec
        !           768:                basic_os=tops20
        !           769:                ;;
        !           770:        delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
        !           771:                cpu=m68k
        !           772:                vendor=motorola
        !           773:                ;;
        !           774:        # This used to be dpx2*, but that gets the RS6000-based
        !           775:        # DPX/20 and the x86-based DPX/2-100 wrong.  See
        !           776:        # https://oldskool.silicium.org/stations/bull_dpx20.htm
        !           777:        # https://www.feb-patrimoine.com/english/bull_dpx2.htm
        !           778:        # https://www.feb-patrimoine.com/english/unix_and_bull.htm
        !           779:        dpx2 | dpx2[23]00 | dpx2[23]xx)
        !           780:                cpu=m68k
        !           781:                vendor=bull
        !           782:                ;;
        !           783:        dpx2100 | dpx21xx)
        !           784:                cpu=i386
        !           785:                vendor=bull
        !           786:                ;;
        !           787:        dpx20)
        !           788:                cpu=rs6000
        !           789:                vendor=bull
1.3       paf       790:                ;;
1.7     ! moko      791:        encore | umax | mmax)
        !           792:                cpu=ns32k
        !           793:                vendor=encore
1.1       paf       794:                ;;
                    795:        elxsi)
1.7     ! moko      796:                cpu=elxsi
        !           797:                vendor=elxsi
        !           798:                basic_os=${basic_os:-bsd}
1.1       paf       799:                ;;
                    800:        fx2800)
1.7     ! moko      801:                cpu=i860
        !           802:                vendor=alliant
1.1       paf       803:                ;;
                    804:        genix)
1.7     ! moko      805:                cpu=ns32k
        !           806:                vendor=ns
1.3       paf       807:                ;;
1.1       paf       808:        h3050r* | hiux*)
1.7     ! moko      809:                cpu=hppa1.1
        !           810:                vendor=hitachi
        !           811:                basic_os=hiuxwe2
1.1       paf       812:                ;;
                    813:        hp3k9[0-9][0-9] | hp9[0-9][0-9])
1.7     ! moko      814:                cpu=hppa1.0
        !           815:                vendor=hp
1.1       paf       816:                ;;
                    817:        hp9k2[0-9][0-9] | hp9k31[0-9])
1.7     ! moko      818:                cpu=m68000
        !           819:                vendor=hp
1.1       paf       820:                ;;
                    821:        hp9k3[2-9][0-9])
1.7     ! moko      822:                cpu=m68k
        !           823:                vendor=hp
1.1       paf       824:                ;;
                    825:        hp9k6[0-9][0-9] | hp6[0-9][0-9])
1.7     ! moko      826:                cpu=hppa1.0
        !           827:                vendor=hp
1.1       paf       828:                ;;
                    829:        hp9k7[0-79][0-9] | hp7[0-79][0-9])
1.7     ! moko      830:                cpu=hppa1.1
        !           831:                vendor=hp
1.1       paf       832:                ;;
                    833:        hp9k78[0-9] | hp78[0-9])
                    834:                # FIXME: really hppa2.0-hp
1.7     ! moko      835:                cpu=hppa1.1
        !           836:                vendor=hp
1.1       paf       837:                ;;
                    838:        hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
                    839:                # FIXME: really hppa2.0-hp
1.7     ! moko      840:                cpu=hppa1.1
        !           841:                vendor=hp
1.1       paf       842:                ;;
                    843:        hp9k8[0-9][13679] | hp8[0-9][13679])
1.7     ! moko      844:                cpu=hppa1.1
        !           845:                vendor=hp
1.1       paf       846:                ;;
                    847:        hp9k8[0-9][0-9] | hp8[0-9][0-9])
1.7     ! moko      848:                cpu=hppa1.0
        !           849:                vendor=hp
1.1       paf       850:                ;;
1.3       paf       851:        i*86v32)
1.7     ! moko      852:                cpu=`echo "$1" | sed -e 's/86.*/86/'`
        !           853:                vendor=pc
        !           854:                basic_os=sysv32
1.1       paf       855:                ;;
1.3       paf       856:        i*86v4*)
1.7     ! moko      857:                cpu=`echo "$1" | sed -e 's/86.*/86/'`
        !           858:                vendor=pc
        !           859:                basic_os=sysv4
1.1       paf       860:                ;;
1.3       paf       861:        i*86v)
1.7     ! moko      862:                cpu=`echo "$1" | sed -e 's/86.*/86/'`
        !           863:                vendor=pc
        !           864:                basic_os=sysv
1.1       paf       865:                ;;
1.3       paf       866:        i*86sol2)
1.7     ! moko      867:                cpu=`echo "$1" | sed -e 's/86.*/86/'`
        !           868:                vendor=pc
        !           869:                basic_os=solaris2
        !           870:                ;;
        !           871:        j90 | j90-cray)
        !           872:                cpu=j90
        !           873:                vendor=cray
        !           874:                basic_os=${basic_os:-unicos}
1.1       paf       875:                ;;
                    876:        iris | iris4d)
1.7     ! moko      877:                cpu=mips
        !           878:                vendor=sgi
        !           879:                case $basic_os in
        !           880:                    irix*)
1.1       paf       881:                        ;;
                    882:                    *)
1.7     ! moko      883:                        basic_os=irix4
1.1       paf       884:                        ;;
                    885:                esac
                    886:                ;;
                    887:        miniframe)
1.7     ! moko      888:                cpu=m68000
        !           889:                vendor=convergent
1.5       moko      890:                ;;
1.7     ! moko      891:        *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
        !           892:                cpu=m68k
        !           893:                vendor=atari
        !           894:                basic_os=mint
1.1       paf       895:                ;;
                    896:        news-3600 | risc-news)
1.7     ! moko      897:                cpu=mips
        !           898:                vendor=sony
        !           899:                basic_os=newsos
        !           900:                ;;
        !           901:        next | m*-next)
        !           902:                cpu=m68k
        !           903:                vendor=next
1.3       paf       904:                ;;
1.1       paf       905:        np1)
1.7     ! moko      906:                cpu=np1
        !           907:                vendor=gould
1.1       paf       908:                ;;
                    909:        op50n-* | op60c-*)
1.7     ! moko      910:                cpu=hppa1.1
        !           911:                vendor=oki
        !           912:                basic_os=proelf
1.1       paf       913:                ;;
                    914:        pa-hitachi)
1.7     ! moko      915:                cpu=hppa1.1
        !           916:                vendor=hitachi
        !           917:                basic_os=hiuxwe2
1.5       moko      918:                ;;
1.1       paf       919:        pbd)
1.7     ! moko      920:                cpu=sparc
        !           921:                vendor=tti
1.1       paf       922:                ;;
                    923:        pbb)
1.7     ! moko      924:                cpu=m68k
        !           925:                vendor=tti
1.1       paf       926:                ;;
1.7     ! moko      927:        pc532)
        !           928:                cpu=ns32k
        !           929:                vendor=pc532
1.1       paf       930:                ;;
1.7     ! moko      931:        pn)
        !           932:                cpu=pn
        !           933:                vendor=gould
1.5       moko      934:                ;;
1.7     ! moko      935:        power)
        !           936:                cpu=power
        !           937:                vendor=ibm
1.5       moko      938:                ;;
1.7     ! moko      939:        ps2)
        !           940:                cpu=i386
        !           941:                vendor=ibm
1.1       paf       942:                ;;
1.7     ! moko      943:        rm[46]00)
        !           944:                cpu=mips
        !           945:                vendor=siemens
1.1       paf       946:                ;;
1.7     ! moko      947:        rtpc | rtpc-*)
        !           948:                cpu=romp
        !           949:                vendor=ibm
1.1       paf       950:                ;;
1.7     ! moko      951:        sde)
        !           952:                cpu=mipsisa32
        !           953:                vendor=sde
        !           954:                basic_os=${basic_os:-elf}
        !           955:                ;;
        !           956:        simso-wrs)
        !           957:                cpu=sparclite
        !           958:                vendor=wrs
        !           959:                basic_os=vxworks
1.5       moko      960:                ;;
1.7     ! moko      961:        tower | tower-32)
        !           962:                cpu=m68k
        !           963:                vendor=ncr
1.1       paf       964:                ;;
1.7     ! moko      965:        vpp*|vx|vx-*)
        !           966:                cpu=f301
        !           967:                vendor=fujitsu
1.1       paf       968:                ;;
1.7     ! moko      969:        w65)
        !           970:                cpu=w65
        !           971:                vendor=wdc
1.1       paf       972:                ;;
1.7     ! moko      973:        w89k-*)
        !           974:                cpu=hppa1.1
        !           975:                vendor=winbond
        !           976:                basic_os=proelf
1.5       moko      977:                ;;
1.7     ! moko      978:        none)
        !           979:                cpu=none
        !           980:                vendor=none
1.1       paf       981:                ;;
1.7     ! moko      982:        leon|leon[3-9])
        !           983:                cpu=sparc
        !           984:                vendor=$basic_machine
1.1       paf       985:                ;;
1.7     ! moko      986:        leon-*|leon[3-9]-*)
        !           987:                cpu=sparc
        !           988:                vendor=`echo "$basic_machine" | sed 's/-.*//'`
1.3       paf       989:                ;;
1.7     ! moko      990: 
        !           991:        *-*)
        !           992:                saved_IFS=$IFS
        !           993:                IFS="-" read cpu vendor <<EOF
        !           994: $basic_machine
        !           995: EOF
        !           996:                IFS=$saved_IFS
1.1       paf       997:                ;;
1.7     ! moko      998:        # We use 'pc' rather than 'unknown'
        !           999:        # because (1) that's what they normally are, and
        !          1000:        # (2) the word "unknown" tends to confuse beginning users.
        !          1001:        i*86 | x86_64)
        !          1002:                cpu=$basic_machine
        !          1003:                vendor=pc
1.3       paf      1004:                ;;
1.7     ! moko     1005:        # These rules are duplicated from below for sake of the special case above;
        !          1006:        # i.e. things that normalized to x86 arches should also default to "pc"
        !          1007:        pc98)
        !          1008:                cpu=i386
        !          1009:                vendor=pc
1.1       paf      1010:                ;;
1.7     ! moko     1011:        x64 | amd64)
        !          1012:                cpu=x86_64
        !          1013:                vendor=pc
1.3       paf      1014:                ;;
1.7     ! moko     1015:        # Recognize the basic CPU types without company name.
        !          1016:        *)
        !          1017:                cpu=$basic_machine
        !          1018:                vendor=unknown
1.3       paf      1019:                ;;
1.7     ! moko     1020: esac
        !          1021: 
        !          1022: unset -v basic_machine
        !          1023: 
        !          1024: # Decode basic machines in the full and proper CPU-Company form.
        !          1025: case $cpu-$vendor in
        !          1026:        # Here we handle the default manufacturer of certain CPU types in canonical form.
        !          1027:        # It is in some cases the only manufacturer, in others, it is the most popular.
        !          1028:        c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
        !          1029:                vendor=convex
        !          1030:                basic_os=${basic_os:-bsd}
        !          1031:                ;;
        !          1032:        craynv-unknown)
        !          1033:                vendor=cray
        !          1034:                basic_os=${basic_os:-unicosmp}
1.3       paf      1035:                ;;
1.7     ! moko     1036:        c90-unknown | c90-cray)
        !          1037:                vendor=cray
        !          1038:                basic_os=${basic_os:-unicos}
1.3       paf      1039:                ;;
1.7     ! moko     1040:        fx80-unknown)
        !          1041:                vendor=alliant
1.1       paf      1042:                ;;
1.7     ! moko     1043:        romp-unknown)
        !          1044:                vendor=ibm
1.1       paf      1045:                ;;
1.7     ! moko     1046:        mmix-unknown)
        !          1047:                vendor=knuth
1.1       paf      1048:                ;;
1.7     ! moko     1049:        microblaze-unknown | microblazeel-unknown)
        !          1050:                vendor=xilinx
1.1       paf      1051:                ;;
1.7     ! moko     1052:        rs6000-unknown)
        !          1053:                vendor=ibm
1.3       paf      1054:                ;;
1.7     ! moko     1055:        vax-unknown)
        !          1056:                vendor=dec
1.3       paf      1057:                ;;
1.7     ! moko     1058:        pdp11-unknown)
        !          1059:                vendor=dec
1.1       paf      1060:                ;;
1.7     ! moko     1061:        we32k-unknown)
        !          1062:                vendor=att
1.3       paf      1063:                ;;
1.7     ! moko     1064:        cydra-unknown)
        !          1065:                vendor=cydrome
1.3       paf      1066:                ;;
1.7     ! moko     1067:        i370-ibm*)
        !          1068:                vendor=ibm
1.5       moko     1069:                ;;
1.7     ! moko     1070:        orion-unknown)
        !          1071:                vendor=highlevel
1.5       moko     1072:                ;;
1.7     ! moko     1073:        xps-unknown | xps100-unknown)
        !          1074:                cpu=xps100
        !          1075:                vendor=honeywell
1.1       paf      1076:                ;;
1.7     ! moko     1077: 
        !          1078:        # Here we normalize CPU types with a missing or matching vendor
        !          1079:        armh-unknown | armh-alt)
        !          1080:                cpu=armv7l
        !          1081:                vendor=alt
        !          1082:                basic_os=${basic_os:-linux-gnueabihf}
1.1       paf      1083:                ;;
1.7     ! moko     1084: 
        !          1085:        # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
        !          1086:        m68k-isi)
        !          1087:                basic_os=${basic_os:-sysv}
1.5       moko     1088:                ;;
1.7     ! moko     1089:        m68k-sony)
        !          1090:                basic_os=${basic_os:-newsos}
1.5       moko     1091:                ;;
1.7     ! moko     1092:        m68k-tektronix)
        !          1093:                basic_os=${basic_os:-bsd}
1.1       paf      1094:                ;;
1.7     ! moko     1095:        m88k-harris)
        !          1096:                basic_os=${basic_os:-sysv3}
1.1       paf      1097:                ;;
1.7     ! moko     1098:        i386-bull | m68k-bull)
        !          1099:                basic_os=${basic_os:-sysv3}
1.1       paf      1100:                ;;
1.7     ! moko     1101:        rs6000-bull)
        !          1102:                basic_os=${basic_os:-bosx}
1.1       paf      1103:                ;;
1.7     ! moko     1104:        mips-sni)
        !          1105:                basic_os=${basic_os:-sysv4}
1.1       paf      1106:                ;;
1.7     ! moko     1107: 
        !          1108:        # Here we normalize CPU types irrespective of the vendor
        !          1109:        amd64-*)
        !          1110:                cpu=x86_64
1.5       moko     1111:                ;;
1.7     ! moko     1112:        blackfin-*)
        !          1113:                cpu=bfin
        !          1114:                basic_os=${basic_os:-linux}
1.1       paf      1115:                ;;
1.7     ! moko     1116:        c54x-*)
        !          1117:                cpu=tic54x
1.1       paf      1118:                ;;
1.7     ! moko     1119:        c55x-*)
        !          1120:                cpu=tic55x
1.1       paf      1121:                ;;
1.7     ! moko     1122:        c6x-*)
        !          1123:                cpu=tic6x
1.1       paf      1124:                ;;
1.7     ! moko     1125:        e500v[12]-*)
        !          1126:                cpu=powerpc
        !          1127:                basic_os=${basic_os}"spe"
1.1       paf      1128:                ;;
1.7     ! moko     1129:        mips3*-*)
        !          1130:                cpu=mips64
1.1       paf      1131:                ;;
1.7     ! moko     1132:        ms1-*)
        !          1133:                cpu=mt
1.1       paf      1134:                ;;
1.7     ! moko     1135:        m68knommu-*)
        !          1136:                cpu=m68k
        !          1137:                basic_os=${basic_os:-linux}
1.1       paf      1138:                ;;
1.7     ! moko     1139:        m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
        !          1140:                cpu=s12z
1.1       paf      1141:                ;;
1.7     ! moko     1142:        openrisc-*)
        !          1143:                cpu=or32
1.1       paf      1144:                ;;
1.7     ! moko     1145:        parisc-*)
        !          1146:                cpu=hppa
        !          1147:                basic_os=${basic_os:-linux}
1.1       paf      1148:                ;;
1.7     ! moko     1149:        pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
        !          1150:                cpu=i586
1.1       paf      1151:                ;;
1.7     ! moko     1152:        pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
        !          1153:                cpu=i686
1.1       paf      1154:                ;;
1.7     ! moko     1155:        pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
        !          1156:                cpu=i686
1.3       paf      1157:                ;;
1.7     ! moko     1158:        pentium4-*)
        !          1159:                cpu=i786
1.1       paf      1160:                ;;
1.7     ! moko     1161:        ppc-* | ppcbe-*)
        !          1162:                cpu=powerpc
1.3       paf      1163:                ;;
1.7     ! moko     1164:        ppcle-* | powerpclittle-*)
        !          1165:                cpu=powerpcle
1.1       paf      1166:                ;;
1.7     ! moko     1167:        ppc64-*)
        !          1168:                cpu=powerpc64
1.1       paf      1169:                ;;
1.7     ! moko     1170:        ppc64le-* | powerpc64little-*)
        !          1171:                cpu=powerpc64le
1.3       paf      1172:                ;;
1.7     ! moko     1173:        sb1-*)
        !          1174:                cpu=mipsisa64sb1
1.1       paf      1175:                ;;
1.7     ! moko     1176:        sb1el-*)
        !          1177:                cpu=mipsisa64sb1el
1.1       paf      1178:                ;;
1.7     ! moko     1179:        sh5e[lb]-*)
        !          1180:                cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1.3       paf      1181:                ;;
1.7     ! moko     1182:        spur-*)
        !          1183:                cpu=spur
1.1       paf      1184:                ;;
1.7     ! moko     1185:        strongarm-* | thumb-*)
        !          1186:                cpu=arm
1.1       paf      1187:                ;;
1.7     ! moko     1188:        tx39-*)
        !          1189:                cpu=mipstx39
1.4       paf      1190:                ;;
1.7     ! moko     1191:        tx39el-*)
        !          1192:                cpu=mipstx39el
1.3       paf      1193:                ;;
1.5       moko     1194:        xscale-* | xscalee[bl]-*)
1.7     ! moko     1195:                cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1.5       moko     1196:                ;;
1.7     ! moko     1197:        arm64-* | aarch64le-*)
        !          1198:                cpu=aarch64
1.1       paf      1199:                ;;
                   1200: 
1.7     ! moko     1201:        # Recognize the canonical CPU Types that limit and/or modify the
        !          1202:        # company names they are paired with.
        !          1203:        cr16-*)
        !          1204:                basic_os=${basic_os:-elf}
1.1       paf      1205:                ;;
1.7     ! moko     1206:        crisv32-* | etraxfs*-*)
        !          1207:                cpu=crisv32
        !          1208:                vendor=axis
1.1       paf      1209:                ;;
1.7     ! moko     1210:        cris-* | etrax*-*)
        !          1211:                cpu=cris
        !          1212:                vendor=axis
1.1       paf      1213:                ;;
1.7     ! moko     1214:        crx-*)
        !          1215:                basic_os=${basic_os:-elf}
1.1       paf      1216:                ;;
1.7     ! moko     1217:        neo-tandem)
        !          1218:                cpu=neo
        !          1219:                vendor=tandem
1.5       moko     1220:                ;;
1.7     ! moko     1221:        nse-tandem)
        !          1222:                cpu=nse
        !          1223:                vendor=tandem
1.1       paf      1224:                ;;
1.7     ! moko     1225:        nsr-tandem)
        !          1226:                cpu=nsr
        !          1227:                vendor=tandem
1.1       paf      1228:                ;;
1.7     ! moko     1229:        nsv-tandem)
        !          1230:                cpu=nsv
        !          1231:                vendor=tandem
        !          1232:                ;;
        !          1233:        nsx-tandem)
        !          1234:                cpu=nsx
        !          1235:                vendor=tandem
        !          1236:                ;;
        !          1237:        mipsallegrexel-sony)
        !          1238:                cpu=mipsallegrexel
        !          1239:                vendor=sony
1.3       paf      1240:                ;;
1.7     ! moko     1241:        tile*-*)
        !          1242:                basic_os=${basic_os:-linux-gnu}
1.1       paf      1243:                ;;
1.7     ! moko     1244: 
1.1       paf      1245:        *)
1.7     ! moko     1246:                # Recognize the canonical CPU types that are allowed with any
        !          1247:                # company name.
        !          1248:                case $cpu in
        !          1249:                          1750a \
        !          1250:                        | 580 \
        !          1251:                        | [cjt]90 \
        !          1252:                        | a29k \
        !          1253:                        | aarch64 \
        !          1254:                        | aarch64_be \
        !          1255:                        | aarch64c \
        !          1256:                        | abacus \
        !          1257:                        | alpha \
        !          1258:                        | alpha64 \
        !          1259:                        | alpha64ev56 \
        !          1260:                        | alpha64ev6[78] \
        !          1261:                        | alpha64ev[4-8] \
        !          1262:                        | alpha64pca5[67] \
        !          1263:                        | alphaev56 \
        !          1264:                        | alphaev6[78] \
        !          1265:                        | alphaev[4-8] \
        !          1266:                        | alphapca5[67] \
        !          1267:                        | am33_2.0 \
        !          1268:                        | amdgcn \
        !          1269:                        | arc \
        !          1270:                        | arc32 \
        !          1271:                        | arc64 \
        !          1272:                        | arceb \
        !          1273:                        | arm \
        !          1274:                        | arm64e \
        !          1275:                        | arm64ec \
        !          1276:                        | arm[lb]e \
        !          1277:                        | arme[lb] \
        !          1278:                        | armv* \
        !          1279:                        | asmjs \
        !          1280:                        | avr \
        !          1281:                        | avr32 \
        !          1282:                        | ba \
        !          1283:                        | be32 \
        !          1284:                        | be64 \
        !          1285:                        | bfin \
        !          1286:                        | bpf \
        !          1287:                        | bs2000 \
        !          1288:                        | c30 \
        !          1289:                        | c4x \
        !          1290:                        | c8051 \
        !          1291:                        | c[123]* \
        !          1292:                        | clipper \
        !          1293:                        | craynv \
        !          1294:                        | csky \
        !          1295:                        | cydra \
        !          1296:                        | d10v \
        !          1297:                        | d30v \
        !          1298:                        | dlx \
        !          1299:                        | dsp16xx \
        !          1300:                        | e2k \
        !          1301:                        | elxsi \
        !          1302:                        | epiphany \
        !          1303:                        | f30[01] \
        !          1304:                        | f700 \
        !          1305:                        | fido \
        !          1306:                        | fr30 \
        !          1307:                        | frv \
        !          1308:                        | ft32 \
        !          1309:                        | fx80 \
        !          1310:                        | h8300 \
        !          1311:                        | h8500 \
        !          1312:                        | hexagon \
        !          1313:                        | hppa \
        !          1314:                        | hppa1.[01] \
        !          1315:                        | hppa2.0 \
        !          1316:                        | hppa2.0[nw] \
        !          1317:                        | hppa64 \
        !          1318:                        | i*86 \
        !          1319:                        | i370 \
        !          1320:                        | i860 \
        !          1321:                        | i960 \
        !          1322:                        | ia16 \
        !          1323:                        | ia64 \
        !          1324:                        | ip2k \
        !          1325:                        | iq2000 \
        !          1326:                        | javascript \
        !          1327:                        | k1om \
        !          1328:                        | kvx \
        !          1329:                        | le32 \
        !          1330:                        | le64 \
        !          1331:                        | lm32 \
        !          1332:                        | loongarch32 \
        !          1333:                        | loongarch64 \
        !          1334:                        | m32c \
        !          1335:                        | m32r \
        !          1336:                        | m32rle \
        !          1337:                        | m5200 \
        !          1338:                        | m68000 \
        !          1339:                        | m680[012346]0 \
        !          1340:                        | m6811 \
        !          1341:                        | m6812 \
        !          1342:                        | m68360 \
        !          1343:                        | m683?2 \
        !          1344:                        | m68hc11 \
        !          1345:                        | m68hc12 \
        !          1346:                        | m68hcs12x \
        !          1347:                        | m68k \
        !          1348:                        | m88110 \
        !          1349:                        | m88k \
        !          1350:                        | maxq \
        !          1351:                        | mb \
        !          1352:                        | mcore \
        !          1353:                        | mep \
        !          1354:                        | metag \
        !          1355:                        | microblaze \
        !          1356:                        | microblazeel \
        !          1357:                        | mips* \
        !          1358:                        | mmix \
        !          1359:                        | mn10200 \
        !          1360:                        | mn10300 \
        !          1361:                        | moxie \
        !          1362:                        | msp430 \
        !          1363:                        | mt \
        !          1364:                        | nanomips* \
        !          1365:                        | nds32 \
        !          1366:                        | nds32be \
        !          1367:                        | nds32le \
        !          1368:                        | nfp \
        !          1369:                        | nios \
        !          1370:                        | nios2 \
        !          1371:                        | nios2eb \
        !          1372:                        | nios2el \
        !          1373:                        | none \
        !          1374:                        | np1 \
        !          1375:                        | ns16k \
        !          1376:                        | ns32k \
        !          1377:                        | nvptx \
        !          1378:                        | open8 \
        !          1379:                        | or1k* \
        !          1380:                        | or32 \
        !          1381:                        | orion \
        !          1382:                        | pdp10 \
        !          1383:                        | pdp11 \
        !          1384:                        | picochip \
        !          1385:                        | pj \
        !          1386:                        | pjl \
        !          1387:                        | pn \
        !          1388:                        | power \
        !          1389:                        | powerpc \
        !          1390:                        | powerpc64 \
        !          1391:                        | powerpc64le \
        !          1392:                        | powerpcle \
        !          1393:                        | powerpcspe \
        !          1394:                        | pru \
        !          1395:                        | pyramid \
        !          1396:                        | riscv \
        !          1397:                        | riscv32 \
        !          1398:                        | riscv32be \
        !          1399:                        | riscv64 \
        !          1400:                        | riscv64be \
        !          1401:                        | rl78 \
        !          1402:                        | romp \
        !          1403:                        | rs6000 \
        !          1404:                        | rx \
        !          1405:                        | s390 \
        !          1406:                        | s390x \
        !          1407:                        | score \
        !          1408:                        | sh \
        !          1409:                        | sh64 \
        !          1410:                        | sh64le \
        !          1411:                        | sh[12345][lb]e \
        !          1412:                        | sh[1234] \
        !          1413:                        | sh[1234]e[lb] \
        !          1414:                        | sh[23]e \
        !          1415:                        | sh[23]ele \
        !          1416:                        | sh[24]a \
        !          1417:                        | sh[24]ae[lb] \
        !          1418:                        | sh[lb]e \
        !          1419:                        | she[lb] \
        !          1420:                        | shl \
        !          1421:                        | sparc \
        !          1422:                        | sparc64 \
        !          1423:                        | sparc64b \
        !          1424:                        | sparc64v \
        !          1425:                        | sparc86x \
        !          1426:                        | sparclet \
        !          1427:                        | sparclite \
        !          1428:                        | sparcv8 \
        !          1429:                        | sparcv9 \
        !          1430:                        | sparcv9b \
        !          1431:                        | sparcv9v \
        !          1432:                        | spu \
        !          1433:                        | sv1 \
        !          1434:                        | sx* \
        !          1435:                        | tahoe \
        !          1436:                        | thumbv7* \
        !          1437:                        | tic30 \
        !          1438:                        | tic4x \
        !          1439:                        | tic54x \
        !          1440:                        | tic55x \
        !          1441:                        | tic6x \
        !          1442:                        | tic80 \
        !          1443:                        | tron \
        !          1444:                        | ubicom32 \
        !          1445:                        | v70 \
        !          1446:                        | v810 \
        !          1447:                        | v850 \
        !          1448:                        | v850e \
        !          1449:                        | v850e1 \
        !          1450:                        | v850e2 \
        !          1451:                        | v850e2v3 \
        !          1452:                        | v850es \
        !          1453:                        | vax \
        !          1454:                        | vc4 \
        !          1455:                        | visium \
        !          1456:                        | w65 \
        !          1457:                        | wasm32 \
        !          1458:                        | wasm64 \
        !          1459:                        | we32k \
        !          1460:                        | x86 \
        !          1461:                        | x86_64 \
        !          1462:                        | xc16x \
        !          1463:                        | xgate \
        !          1464:                        | xps100 \
        !          1465:                        | xstormy16 \
        !          1466:                        | xtensa* \
        !          1467:                        | ymp \
        !          1468:                        | z80 \
        !          1469:                        | z8k)
        !          1470:                                ;;
        !          1471: 
        !          1472:                        *)
        !          1473:                                echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
        !          1474:                                exit 1
        !          1475:                                ;;
        !          1476:                esac
1.1       paf      1477:                ;;
                   1478: esac
                   1479: 
                   1480: # Here we canonicalize certain aliases for manufacturers.
1.7     ! moko     1481: case $vendor in
        !          1482:        digital*)
        !          1483:                vendor=dec
1.1       paf      1484:                ;;
1.7     ! moko     1485:        commodore*)
        !          1486:                vendor=cbm
1.1       paf      1487:                ;;
                   1488:        *)
                   1489:                ;;
                   1490: esac
                   1491: 
                   1492: # Decode manufacturer-specific aliases for certain operating systems.
                   1493: 
1.7     ! moko     1494: if test x"$basic_os" != x
1.1       paf      1495: then
1.7     ! moko     1496: 
        !          1497: # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
        !          1498: # set os.
        !          1499: obj=
        !          1500: case $basic_os in
        !          1501:        gnu/linux*)
        !          1502:                kernel=linux
        !          1503:                os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
        !          1504:                ;;
        !          1505:        os2-emx)
        !          1506:                kernel=os2
        !          1507:                os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
        !          1508:                ;;
        !          1509:        nto-qnx*)
        !          1510:                kernel=nto
        !          1511:                os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
        !          1512:                ;;
        !          1513:        *-*)
        !          1514:                saved_IFS=$IFS
        !          1515:                IFS="-" read kernel os <<EOF
        !          1516: $basic_os
        !          1517: EOF
        !          1518:                IFS=$saved_IFS
        !          1519:                ;;
        !          1520:        # Default OS when just kernel was specified
        !          1521:        nto*)
        !          1522:                kernel=nto
        !          1523:                os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
        !          1524:                ;;
        !          1525:        linux*)
        !          1526:                kernel=linux
        !          1527:                os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
        !          1528:                ;;
        !          1529:        managarm*)
        !          1530:                kernel=managarm
        !          1531:                os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
        !          1532:                ;;
        !          1533:        *)
        !          1534:                kernel=
        !          1535:                os=$basic_os
        !          1536:                ;;
        !          1537: esac
        !          1538: 
        !          1539: # Now, normalize the OS (knowing we just have one component, it's not a kernel,
        !          1540: # etc.)
1.1       paf      1541: case $os in
1.7     ! moko     1542:        # First match some system type aliases that might get confused
        !          1543:        # with valid system types.
        !          1544:        # solaris* is a basic system type, with this one exception.
        !          1545:        auroraux)
        !          1546:                os=auroraux
        !          1547:                ;;
        !          1548:        bluegene*)
        !          1549:                os=cnk
        !          1550:                ;;
        !          1551:        solaris1 | solaris1.*)
        !          1552:                os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
        !          1553:                ;;
        !          1554:        solaris)
        !          1555:                os=solaris2
        !          1556:                ;;
        !          1557:        unixware*)
        !          1558:                os=sysv4.2uw
        !          1559:                ;;
        !          1560:        # The marketing names for NeXT's operating systems were
        !          1561:        # NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4.  'openstep' is
        !          1562:        # mapped to 'openstep3', but 'openstep1' and 'openstep2' are
        !          1563:        # mapped to 'nextstep' and 'nextstep2', consistent with the
        !          1564:        # treatment of SunOS/Solaris.
        !          1565:        ns | ns1 | nextstep | nextstep1 | openstep1)
        !          1566:                os=nextstep
        !          1567:                ;;
        !          1568:        ns2 | nextstep2 | openstep2)
        !          1569:                os=nextstep2
        !          1570:                ;;
        !          1571:        ns3 | nextstep3 | openstep | openstep3)
        !          1572:                os=openstep3
        !          1573:                ;;
        !          1574:        ns4 | nextstep4 | openstep4)
        !          1575:                os=openstep4
        !          1576:                ;;
        !          1577:        # es1800 is here to avoid being matched by es* (a different OS)
        !          1578:        es1800*)
        !          1579:                os=ose
1.1       paf      1580:                ;;
1.7     ! moko     1581:        # Some version numbers need modification
        !          1582:        chorusos*)
        !          1583:                os=chorusos
1.5       moko     1584:                ;;
1.7     ! moko     1585:        isc)
        !          1586:                os=isc2.2
1.1       paf      1587:                ;;
1.7     ! moko     1588:        sco6)
        !          1589:                os=sco5v6
1.1       paf      1590:                ;;
1.7     ! moko     1591:        sco5)
        !          1592:                os=sco3.2v5
1.1       paf      1593:                ;;
1.7     ! moko     1594:        sco4)
        !          1595:                os=sco3.2v4
1.5       moko     1596:                ;;
1.7     ! moko     1597:        sco3.2.[4-9]*)
        !          1598:                os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1.1       paf      1599:                ;;
1.7     ! moko     1600:        sco*v* | scout)
        !          1601:                # Don't match below
1.1       paf      1602:                ;;
1.7     ! moko     1603:        sco*)
        !          1604:                os=sco3.2v2
1.1       paf      1605:                ;;
1.7     ! moko     1606:        psos*)
        !          1607:                os=psos
1.1       paf      1608:                ;;
1.7     ! moko     1609:        qnx*)
        !          1610:                os=qnx
1.5       moko     1611:                ;;
1.7     ! moko     1612:        hiux*)
        !          1613:                os=hiuxwe2
1.1       paf      1614:                ;;
1.7     ! moko     1615:        lynx*178)
        !          1616:                os=lynxos178
1.1       paf      1617:                ;;
1.7     ! moko     1618:        lynx*5)
        !          1619:                os=lynxos5
1.1       paf      1620:                ;;
1.7     ! moko     1621:        lynxos*)
        !          1622:                # don't get caught up in next wildcard
1.1       paf      1623:                ;;
1.7     ! moko     1624:        lynx*)
        !          1625:                os=lynxos
1.1       paf      1626:                ;;
1.7     ! moko     1627:        mac[0-9]*)
        !          1628:                os=`echo "$os" | sed -e 's|mac|macos|'`
1.1       paf      1629:                ;;
1.7     ! moko     1630:        opened*)
        !          1631:                os=openedition
1.3       paf      1632:                ;;
1.7     ! moko     1633:        os400*)
        !          1634:                os=os400
1.5       moko     1635:                ;;
1.7     ! moko     1636:        sunos5*)
        !          1637:                os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1.1       paf      1638:                ;;
1.7     ! moko     1639:        sunos6*)
        !          1640:                os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1.1       paf      1641:                ;;
1.7     ! moko     1642:        wince*)
        !          1643:                os=wince
1.3       paf      1644:                ;;
1.7     ! moko     1645:        utek*)
        !          1646:                os=bsd
        !          1647:                vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
1.1       paf      1648:                ;;
1.7     ! moko     1649:        dynix*)
        !          1650:                os=bsd
1.1       paf      1651:                ;;
1.7     ! moko     1652:        acis*)
        !          1653:                os=aos
1.1       paf      1654:                ;;
1.7     ! moko     1655:        atheos*)
        !          1656:                os=atheos
1.1       paf      1657:                ;;
1.7     ! moko     1658:        syllable*)
        !          1659:                os=syllable
1.5       moko     1660:                ;;
1.7     ! moko     1661:        386bsd)
        !          1662:                os=bsd
1.1       paf      1663:                ;;
1.7     ! moko     1664:        ctix*)
        !          1665:                os=sysv
        !          1666:                vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
        !          1667:                ;;
        !          1668:        uts*)
        !          1669:                os=sysv
        !          1670:                ;;
        !          1671:        nova*)
        !          1672:                kernel=rtmk
        !          1673:                os=nova
1.1       paf      1674:                ;;
1.7     ! moko     1675:        # Preserve the version number of sinix5.
        !          1676:        sinix5.*)
        !          1677:                os=`echo "$os" | sed -e 's|sinix|sysv|'`
        !          1678:                vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1.1       paf      1679:                ;;
1.7     ! moko     1680:        sinix*)
        !          1681:                os=sysv4
        !          1682:                vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1.1       paf      1683:                ;;
1.7     ! moko     1684:        tpf*)
        !          1685:                os=tpf
1.1       paf      1686:                ;;
1.7     ! moko     1687:        triton*)
        !          1688:                os=sysv3
1.1       paf      1689:                ;;
1.7     ! moko     1690:        oss*)
        !          1691:                os=sysv3
1.1       paf      1692:                ;;
1.7     ! moko     1693:        svr4*)
        !          1694:                os=sysv4
1.1       paf      1695:                ;;
1.7     ! moko     1696:        svr3)
        !          1697:                os=sysv3
1.1       paf      1698:                ;;
1.7     ! moko     1699:        sysvr4)
        !          1700:                os=sysv4
1.1       paf      1701:                ;;
1.7     ! moko     1702:        ose*)
        !          1703:                os=ose
1.5       moko     1704:                ;;
1.7     ! moko     1705:        *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
        !          1706:                os=mint
1.5       moko     1707:                ;;
1.7     ! moko     1708:        dicos*)
        !          1709:                os=dicos
1.5       moko     1710:                ;;
1.7     ! moko     1711:        pikeos*)
        !          1712:                # Until real need of OS specific support for
        !          1713:                # particular features comes up, bare metal
        !          1714:                # configurations are quite functional.
        !          1715:                case $cpu in
        !          1716:                    arm*)
        !          1717:                        os=eabi
        !          1718:                        ;;
        !          1719:                    *)
        !          1720:                        os=
        !          1721:                        obj=elf
        !          1722:                        ;;
        !          1723:                esac
1.5       moko     1724:                ;;
1.7     ! moko     1725:        aout* | coff* | elf* | pe*)
        !          1726:                # These are machine code file formats, not OSes
        !          1727:                obj=$os
        !          1728:                os=
1.1       paf      1729:                ;;
                   1730:        *)
1.7     ! moko     1731:                # No normalization, but not necessarily accepted, that comes below.
1.1       paf      1732:                ;;
                   1733: esac
1.7     ! moko     1734: 
1.1       paf      1735: else
                   1736: 
                   1737: # Here we handle the default operating systems that come with various machines.
                   1738: # The value should be what the vendor currently ships out the door with their
                   1739: # machine or put another way, the most popular os provided with the machine.
                   1740: 
                   1741: # Note that if you're going to try to match "-MANUFACTURER" here (say,
                   1742: # "-sun"), then you have to tell the case statement up towards the top
                   1743: # that MANUFACTURER isn't an operating system.  Otherwise, code above
                   1744: # will signal an error saying that MANUFACTURER isn't an operating
                   1745: # system, and we'll never get to this point.
                   1746: 
1.7     ! moko     1747: kernel=
        !          1748: obj=
        !          1749: case $cpu-$vendor in
1.5       moko     1750:        score-*)
1.7     ! moko     1751:                os=
        !          1752:                obj=elf
1.5       moko     1753:                ;;
                   1754:        spu-*)
1.7     ! moko     1755:                os=
        !          1756:                obj=elf
1.5       moko     1757:                ;;
1.1       paf      1758:        *-acorn)
1.7     ! moko     1759:                os=riscix1.2
1.1       paf      1760:                ;;
                   1761:        arm*-rebel)
1.7     ! moko     1762:                kernel=linux
        !          1763:                os=gnu
1.1       paf      1764:                ;;
                   1765:        arm*-semi)
1.7     ! moko     1766:                os=
        !          1767:                obj=aout
1.1       paf      1768:                ;;
1.5       moko     1769:        c4x-* | tic4x-*)
1.7     ! moko     1770:                os=
        !          1771:                obj=coff
1.5       moko     1772:                ;;
1.6       moko     1773:        c8051-*)
1.7     ! moko     1774:                os=
        !          1775:                obj=elf
        !          1776:                ;;
        !          1777:        clipper-intergraph)
        !          1778:                os=clix
1.6       moko     1779:                ;;
                   1780:        hexagon-*)
1.7     ! moko     1781:                os=
        !          1782:                obj=elf
1.6       moko     1783:                ;;
1.5       moko     1784:        tic54x-*)
1.7     ! moko     1785:                os=
        !          1786:                obj=coff
1.5       moko     1787:                ;;
                   1788:        tic55x-*)
1.7     ! moko     1789:                os=
        !          1790:                obj=coff
1.5       moko     1791:                ;;
                   1792:        tic6x-*)
1.7     ! moko     1793:                os=
        !          1794:                obj=coff
1.5       moko     1795:                ;;
1.3       paf      1796:        # This must come before the *-dec entry.
                   1797:        pdp10-*)
1.7     ! moko     1798:                os=tops20
1.3       paf      1799:                ;;
                   1800:        pdp11-*)
1.7     ! moko     1801:                os=none
1.1       paf      1802:                ;;
                   1803:        *-dec | vax-*)
1.7     ! moko     1804:                os=ultrix4.2
1.1       paf      1805:                ;;
                   1806:        m68*-apollo)
1.7     ! moko     1807:                os=domain
1.1       paf      1808:                ;;
                   1809:        i386-sun)
1.7     ! moko     1810:                os=sunos4.0.2
1.1       paf      1811:                ;;
                   1812:        m68000-sun)
1.7     ! moko     1813:                os=sunos3
1.1       paf      1814:                ;;
                   1815:        m68*-cisco)
1.7     ! moko     1816:                os=
        !          1817:                obj=aout
1.1       paf      1818:                ;;
1.5       moko     1819:        mep-*)
1.7     ! moko     1820:                os=
        !          1821:                obj=elf
        !          1822:                ;;
        !          1823:        # The -sgi and -siemens entries must be before the mips- entry
        !          1824:        # or we get the wrong os.
        !          1825:        *-sgi)
        !          1826:                os=irix
        !          1827:                ;;
        !          1828:        *-siemens)
        !          1829:                os=sysv4
1.5       moko     1830:                ;;
1.1       paf      1831:        mips*-cisco)
1.7     ! moko     1832:                os=
        !          1833:                obj=elf
1.1       paf      1834:                ;;
1.7     ! moko     1835:        mips*-*|nanomips*-*)
        !          1836:                os=
        !          1837:                obj=elf
1.1       paf      1838:                ;;
1.3       paf      1839:        or32-*)
1.7     ! moko     1840:                os=
        !          1841:                obj=coff
1.3       paf      1842:                ;;
1.7     ! moko     1843:        # This must be before the sparc-* entry or we get the wrong os.
        !          1844:        *-tti)
        !          1845:                os=sysv3
1.1       paf      1846:                ;;
                   1847:        sparc-* | *-sun)
1.7     ! moko     1848:                os=sunos4.1.1
        !          1849:                ;;
        !          1850:        pru-*)
        !          1851:                os=
        !          1852:                obj=elf
1.1       paf      1853:                ;;
                   1854:        *-be)
1.7     ! moko     1855:                os=beos
1.5       moko     1856:                ;;
1.1       paf      1857:        *-ibm)
1.7     ! moko     1858:                os=aix
1.1       paf      1859:                ;;
1.5       moko     1860:        *-knuth)
1.7     ! moko     1861:                os=mmixware
1.5       moko     1862:                ;;
1.1       paf      1863:        *-wec)
1.7     ! moko     1864:                os=proelf
1.1       paf      1865:                ;;
                   1866:        *-winbond)
1.7     ! moko     1867:                os=proelf
1.1       paf      1868:                ;;
                   1869:        *-oki)
1.7     ! moko     1870:                os=proelf
1.1       paf      1871:                ;;
                   1872:        *-hp)
1.7     ! moko     1873:                os=hpux
1.1       paf      1874:                ;;
                   1875:        *-hitachi)
1.7     ! moko     1876:                os=hiuxwe2
1.1       paf      1877:                ;;
                   1878:        i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1.7     ! moko     1879:                os=sysv
1.1       paf      1880:                ;;
                   1881:        *-cbm)
1.7     ! moko     1882:                os=amigaos
1.1       paf      1883:                ;;
                   1884:        *-dg)
1.7     ! moko     1885:                os=dgux
1.1       paf      1886:                ;;
                   1887:        *-dolphin)
1.7     ! moko     1888:                os=sysv3
1.1       paf      1889:                ;;
                   1890:        m68k-ccur)
1.7     ! moko     1891:                os=rtu
1.1       paf      1892:                ;;
                   1893:        m88k-omron*)
1.7     ! moko     1894:                os=luna
1.1       paf      1895:                ;;
1.7     ! moko     1896:        *-next)
        !          1897:                os=nextstep
1.1       paf      1898:                ;;
                   1899:        *-sequent)
1.7     ! moko     1900:                os=ptx
1.1       paf      1901:                ;;
                   1902:        *-crds)
1.7     ! moko     1903:                os=unos
1.1       paf      1904:                ;;
                   1905:        *-ns)
1.7     ! moko     1906:                os=genix
1.1       paf      1907:                ;;
                   1908:        i370-*)
1.7     ! moko     1909:                os=mvs
1.1       paf      1910:                ;;
1.3       paf      1911:        *-gould)
1.7     ! moko     1912:                os=sysv
1.1       paf      1913:                ;;
1.3       paf      1914:        *-highlevel)
1.7     ! moko     1915:                os=bsd
1.1       paf      1916:                ;;
                   1917:        *-encore)
1.7     ! moko     1918:                os=bsd
1.1       paf      1919:                ;;
                   1920:        *-masscomp)
1.7     ! moko     1921:                os=rtu
1.1       paf      1922:                ;;
1.3       paf      1923:        f30[01]-fujitsu | f700-fujitsu)
1.7     ! moko     1924:                os=uxpv
1.1       paf      1925:                ;;
                   1926:        *-rom68k)
1.7     ! moko     1927:                os=
        !          1928:                obj=coff
1.1       paf      1929:                ;;
                   1930:        *-*bug)
1.7     ! moko     1931:                os=
        !          1932:                obj=coff
1.1       paf      1933:                ;;
                   1934:        *-apple)
1.7     ! moko     1935:                os=macos
1.1       paf      1936:                ;;
                   1937:        *-atari*)
1.7     ! moko     1938:                os=mint
        !          1939:                ;;
        !          1940:        *-wrs)
        !          1941:                os=vxworks
1.1       paf      1942:                ;;
                   1943:        *)
1.7     ! moko     1944:                os=none
1.1       paf      1945:                ;;
                   1946: esac
1.7     ! moko     1947: 
1.1       paf      1948: fi
                   1949: 
1.7     ! moko     1950: # Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
        !          1951: 
        !          1952: case $os in
        !          1953:        # Sometimes we do "kernel-libc", so those need to count as OSes.
        !          1954:        llvm* | musl* | newlib* | relibc* | uclibc*)
        !          1955:                ;;
        !          1956:        # Likewise for "kernel-abi"
        !          1957:        eabi* | gnueabi*)
        !          1958:                ;;
        !          1959:        # VxWorks passes extra cpu info in the 4th filed.
        !          1960:        simlinux | simwindows | spe)
        !          1961:                ;;
        !          1962:        # See `case $cpu-$os` validation below
        !          1963:        ghcjs)
        !          1964:                ;;
        !          1965:        # Now accept the basic system types.
        !          1966:        # Each alternative MUST end in a * to match a version number.
        !          1967:          abug \
        !          1968:        | aix* \
        !          1969:        | amdhsa* \
        !          1970:        | amigados* \
        !          1971:        | amigaos* \
        !          1972:        | android* \
        !          1973:        | aof* \
        !          1974:        | aos* \
        !          1975:        | aros* \
        !          1976:        | atheos* \
        !          1977:        | auroraux* \
        !          1978:        | aux* \
        !          1979:        | beos* \
        !          1980:        | bitrig* \
        !          1981:        | bme* \
        !          1982:        | bosx* \
        !          1983:        | bsd* \
        !          1984:        | cegcc* \
        !          1985:        | chorusos* \
        !          1986:        | chorusrdb* \
        !          1987:        | clix* \
        !          1988:        | cloudabi* \
        !          1989:        | cnk* \
        !          1990:        | conix* \
        !          1991:        | cos* \
        !          1992:        | cxux* \
        !          1993:        | cygwin* \
        !          1994:        | darwin* \
        !          1995:        | dgux* \
        !          1996:        | dicos* \
        !          1997:        | dnix* \
        !          1998:        | domain* \
        !          1999:        | dragonfly* \
        !          2000:        | drops* \
        !          2001:        | ebmon* \
        !          2002:        | ecoff* \
        !          2003:        | ekkobsd* \
        !          2004:        | emscripten* \
        !          2005:        | emx* \
        !          2006:        | es* \
        !          2007:        | fiwix* \
        !          2008:        | freebsd* \
        !          2009:        | fuchsia* \
        !          2010:        | genix* \
        !          2011:        | genode* \
        !          2012:        | glidix* \
        !          2013:        | gnu* \
        !          2014:        | go32* \
        !          2015:        | haiku* \
        !          2016:        | hcos* \
        !          2017:        | hiux* \
        !          2018:        | hms* \
        !          2019:        | hpux* \
        !          2020:        | ieee* \
        !          2021:        | interix* \
        !          2022:        | ios* \
        !          2023:        | iris* \
        !          2024:        | irix* \
        !          2025:        | ironclad* \
        !          2026:        | isc* \
        !          2027:        | its* \
        !          2028:        | l4re* \
        !          2029:        | libertybsd* \
        !          2030:        | lites* \
        !          2031:        | lnews* \
        !          2032:        | luna* \
        !          2033:        | lynxos* \
        !          2034:        | mach* \
        !          2035:        | macos* \
        !          2036:        | magic* \
        !          2037:        | mbr* \
        !          2038:        | midipix* \
        !          2039:        | midnightbsd* \
        !          2040:        | mingw32* \
        !          2041:        | mingw64* \
        !          2042:        | minix* \
        !          2043:        | mint* \
        !          2044:        | mirbsd* \
        !          2045:        | mks* \
        !          2046:        | mlibc* \
        !          2047:        | mmixware* \
        !          2048:        | mon960* \
        !          2049:        | morphos* \
        !          2050:        | moss* \
        !          2051:        | moxiebox* \
        !          2052:        | mpeix* \
        !          2053:        | mpw* \
        !          2054:        | msdos* \
        !          2055:        | msys* \
        !          2056:        | mvs* \
        !          2057:        | nacl* \
        !          2058:        | netbsd* \
        !          2059:        | netware* \
        !          2060:        | newsos* \
        !          2061:        | nextstep* \
        !          2062:        | nindy* \
        !          2063:        | nonstopux* \
        !          2064:        | nova* \
        !          2065:        | nsk* \
        !          2066:        | nucleus* \
        !          2067:        | nx6 \
        !          2068:        | nx7 \
        !          2069:        | oabi* \
        !          2070:        | ohos* \
        !          2071:        | onefs* \
        !          2072:        | openbsd* \
        !          2073:        | openedition* \
        !          2074:        | openstep* \
        !          2075:        | os108* \
        !          2076:        | os2* \
        !          2077:        | os400* \
        !          2078:        | os68k* \
        !          2079:        | os9* \
        !          2080:        | ose* \
        !          2081:        | osf* \
        !          2082:        | oskit* \
        !          2083:        | osx* \
        !          2084:        | palmos* \
        !          2085:        | phoenix* \
        !          2086:        | plan9* \
        !          2087:        | powermax* \
        !          2088:        | powerunix* \
        !          2089:        | proelf* \
        !          2090:        | psos* \
        !          2091:        | psp* \
        !          2092:        | ptx* \
        !          2093:        | pw32* \
        !          2094:        | qnx* \
        !          2095:        | rdos* \
        !          2096:        | redox* \
        !          2097:        | rhapsody* \
        !          2098:        | riscix* \
        !          2099:        | riscos* \
        !          2100:        | rtems* \
        !          2101:        | rtmk* \
        !          2102:        | rtu* \
        !          2103:        | scout* \
        !          2104:        | secbsd* \
        !          2105:        | sei* \
        !          2106:        | serenity* \
        !          2107:        | sim* \
        !          2108:        | skyos* \
        !          2109:        | solaris* \
        !          2110:        | solidbsd* \
        !          2111:        | sortix* \
        !          2112:        | storm-chaos* \
        !          2113:        | sunos \
        !          2114:        | sunos[34]* \
        !          2115:        | superux* \
        !          2116:        | syllable* \
        !          2117:        | sym* \
        !          2118:        | sysv* \
        !          2119:        | tenex* \
        !          2120:        | tirtos* \
        !          2121:        | toppers* \
        !          2122:        | tops10* \
        !          2123:        | tops20* \
        !          2124:        | tpf* \
        !          2125:        | tvos* \
        !          2126:        | twizzler* \
        !          2127:        | uclinux* \
        !          2128:        | udi* \
        !          2129:        | udk* \
        !          2130:        | ultrix* \
        !          2131:        | unicos* \
        !          2132:        | uniplus* \
        !          2133:        | unleashed* \
        !          2134:        | unos* \
        !          2135:        | uwin* \
        !          2136:        | uxpv* \
        !          2137:        | v88r* \
        !          2138:        |*vms* \
        !          2139:        | vos* \
        !          2140:        | vsta* \
        !          2141:        | vxsim* \
        !          2142:        | vxworks* \
        !          2143:        | wasi* \
        !          2144:        | watchos* \
        !          2145:        | wince* \
        !          2146:        | windiss* \
        !          2147:        | windows* \
        !          2148:        | winnt* \
        !          2149:        | xenix* \
        !          2150:        | xray* \
        !          2151:        | zephyr* \
        !          2152:        | zvmoe* )
        !          2153:                ;;
        !          2154:        # This one is extra strict with allowed versions
        !          2155:        sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
        !          2156:                # Don't forget version if it is 3.2v4 or newer.
        !          2157:                ;;
        !          2158:        # This refers to builds using the UEFI calling convention
        !          2159:        # (which depends on the architecture) and PE file format.
        !          2160:        # Note that this is both a different calling convention and
        !          2161:        # different file format than that of GNU-EFI
        !          2162:        # (x86_64-w64-mingw32).
        !          2163:        uefi)
        !          2164:                ;;
        !          2165:        none)
        !          2166:                ;;
        !          2167:        kernel* | msvc* )
        !          2168:                # Restricted further below
        !          2169:                ;;
        !          2170:        '')
        !          2171:                if test x"$obj" = x
        !          2172:                then
        !          2173:                        echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
        !          2174:                fi
        !          2175:                ;;
        !          2176:        *)
        !          2177:                echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
        !          2178:                exit 1
        !          2179:                ;;
        !          2180: esac
        !          2181: 
        !          2182: case $obj in
        !          2183:        aout* | coff* | elf* | pe*)
        !          2184:                ;;
        !          2185:        '')
        !          2186:                # empty is fine
        !          2187:                ;;
        !          2188:        *)
        !          2189:                echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
        !          2190:                exit 1
        !          2191:                ;;
        !          2192: esac
        !          2193: 
        !          2194: # Here we handle the constraint that a (synthetic) cpu and os are
        !          2195: # valid only in combination with each other and nowhere else.
        !          2196: case $cpu-$os in
        !          2197:        # The "javascript-unknown-ghcjs" triple is used by GHC; we
        !          2198:        # accept it here in order to tolerate that, but reject any
        !          2199:        # variations.
        !          2200:        javascript-ghcjs)
        !          2201:                ;;
        !          2202:        javascript-* | *-ghcjs)
        !          2203:                echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
        !          2204:                exit 1
        !          2205:                ;;
        !          2206: esac
        !          2207: 
        !          2208: # As a final step for OS-related things, validate the OS-kernel combination
        !          2209: # (given a valid OS), if there is a kernel.
        !          2210: case $kernel-$os-$obj in
        !          2211:        linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
        !          2212:                    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
        !          2213:                    | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
        !          2214:                ;;
        !          2215:        uclinux-uclibc*- | uclinux-gnu*- )
        !          2216:                ;;
        !          2217:        managarm-mlibc*- | managarm-kernel*- )
        !          2218:                ;;
        !          2219:        windows*-msvc*-)
        !          2220:                ;;
        !          2221:        -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
        !          2222:                    | -uclibc*- )
        !          2223:                # These are just libc implementations, not actual OSes, and thus
        !          2224:                # require a kernel.
        !          2225:                echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
        !          2226:                exit 1
        !          2227:                ;;
        !          2228:        -kernel*- )
        !          2229:                echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
        !          2230:                exit 1
        !          2231:                ;;
        !          2232:        *-kernel*- )
        !          2233:                echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
        !          2234:                exit 1
        !          2235:                ;;
        !          2236:        *-msvc*- )
        !          2237:                echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
        !          2238:                exit 1
        !          2239:                ;;
        !          2240:        kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
        !          2241:                ;;
        !          2242:        vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
        !          2243:                ;;
        !          2244:        nto-qnx*-)
        !          2245:                ;;
        !          2246:        os2-emx-)
        !          2247:                ;;
        !          2248:        rtmk-nova-)
        !          2249:                ;;
        !          2250:        *-eabi*- | *-gnueabi*-)
        !          2251:                ;;
        !          2252:        none--*)
        !          2253:                # None (no kernel, i.e. freestanding / bare metal),
        !          2254:                # can be paired with an machine code file format
        !          2255:                ;;
        !          2256:        -*-)
        !          2257:                # Blank kernel with real OS is always fine.
        !          2258:                ;;
        !          2259:        --*)
        !          2260:                # Blank kernel and OS with real machine code file format is always fine.
        !          2261:                ;;
        !          2262:        *-*-*)
        !          2263:                echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
        !          2264:                exit 1
        !          2265:                ;;
        !          2266: esac
        !          2267: 
1.1       paf      2268: # Here we handle the case where we know the os, and the CPU type, but not the
                   2269: # manufacturer.  We pick the logical manufacturer.
1.7     ! moko     2270: case $vendor in
        !          2271:        unknown)
        !          2272:                case $cpu-$os in
        !          2273:                        *-riscix*)
1.1       paf      2274:                                vendor=acorn
                   2275:                                ;;
1.7     ! moko     2276:                        *-sunos* | *-solaris*)
1.1       paf      2277:                                vendor=sun
                   2278:                                ;;
1.7     ! moko     2279:                        *-cnk* | *-aix*)
1.1       paf      2280:                                vendor=ibm
                   2281:                                ;;
1.7     ! moko     2282:                        *-beos*)
1.1       paf      2283:                                vendor=be
                   2284:                                ;;
1.7     ! moko     2285:                        *-hpux*)
1.1       paf      2286:                                vendor=hp
                   2287:                                ;;
1.7     ! moko     2288:                        *-mpeix*)
1.1       paf      2289:                                vendor=hp
                   2290:                                ;;
1.7     ! moko     2291:                        *-hiux*)
1.1       paf      2292:                                vendor=hitachi
                   2293:                                ;;
1.7     ! moko     2294:                        *-unos*)
1.1       paf      2295:                                vendor=crds
                   2296:                                ;;
1.7     ! moko     2297:                        *-dgux*)
1.1       paf      2298:                                vendor=dg
                   2299:                                ;;
1.7     ! moko     2300:                        *-luna*)
1.1       paf      2301:                                vendor=omron
                   2302:                                ;;
1.7     ! moko     2303:                        *-genix*)
1.1       paf      2304:                                vendor=ns
                   2305:                                ;;
1.7     ! moko     2306:                        *-clix*)
        !          2307:                                vendor=intergraph
        !          2308:                                ;;
        !          2309:                        *-mvs* | *-opened*)
        !          2310:                                vendor=ibm
        !          2311:                                ;;
        !          2312:                        *-os400*)
1.1       paf      2313:                                vendor=ibm
                   2314:                                ;;
1.7     ! moko     2315:                        s390-* | s390x-*)
1.5       moko     2316:                                vendor=ibm
                   2317:                                ;;
1.7     ! moko     2318:                        *-ptx*)
1.1       paf      2319:                                vendor=sequent
                   2320:                                ;;
1.7     ! moko     2321:                        *-tpf*)
1.5       moko     2322:                                vendor=ibm
                   2323:                                ;;
1.7     ! moko     2324:                        *-vxsim* | *-vxworks* | *-windiss*)
1.1       paf      2325:                                vendor=wrs
                   2326:                                ;;
1.7     ! moko     2327:                        *-aux*)
1.1       paf      2328:                                vendor=apple
                   2329:                                ;;
1.7     ! moko     2330:                        *-hms*)
1.1       paf      2331:                                vendor=hitachi
                   2332:                                ;;
1.7     ! moko     2333:                        *-mpw* | *-macos*)
1.1       paf      2334:                                vendor=apple
                   2335:                                ;;
1.7     ! moko     2336:                        *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1.1       paf      2337:                                vendor=atari
                   2338:                                ;;
1.7     ! moko     2339:                        *-vos*)
1.3       paf      2340:                                vendor=stratus
                   2341:                                ;;
1.1       paf      2342:                esac
                   2343:                ;;
                   2344: esac
                   2345: 
1.7     ! moko     2346: echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
1.5       moko     2347: exit
1.3       paf      2348: 
                   2349: # Local variables:
1.7     ! moko     2350: # eval: (add-hook 'before-save-hook 'time-stamp)
1.3       paf      2351: # time-stamp-start: "timestamp='"
                   2352: # time-stamp-format: "%:y-%02m-%02d"
                   2353: # time-stamp-end: "'"
                   2354: # End:

E-mail: