123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355 |
- #! /bin/sh
- # Configuration validation subroutine script.
- # Copyright 1992-2024 Free Software Foundation, Inc.
- # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
- timestamp='2024-05-27'
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, see <https://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that
- # program. This Exception is an additional permission under section 7
- # of the GNU General Public License, version 3 ("GPLv3").
- # Please send patches to <config-patches@gnu.org>.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
- # Otherwise, we print the canonical config type on stdout and succeed.
- # You can get the latest version of this script from:
- # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
- # This file is supposed to be the same for all GNU packages
- # and recognize all the CPU types, system types and aliases
- # that are meaningful with *any* GNU software.
- # Each package is responsible for reporting which valid configurations
- # it does not support. The user should be able to distinguish
- # a failure to support a valid configuration from a meaningless
- # configuration.
- # The goal of this file is to map all the various variations of a given
- # machine specification into a single specification in the form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
- # or in some cases, the newer four-part form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # It is wrong to echo any other type of specification.
- # The "shellcheck disable" line above the timestamp inhibits complaints
- # about features and limitations of the classic Bourne shell that were
- # superseded or lifted in POSIX. However, this script identifies a wide
- # variety of pre-POSIX systems that do not have POSIX shells at all, and
- # even some reasonably current systems (Solaris 10 as case-in-point) still
- # have a pre-POSIX /bin/sh.
- me=`echo "$0" | sed -e 's,.*/,,'`
- usage="\
- Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
- Canonicalize a configuration name.
- Options:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
- Report bugs and patches to <config-patches@gnu.org>."
- version="\
- GNU config.sub ($timestamp)
- Copyright 1992-2024 Free Software Foundation, Inc.
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
- help="
- Try '$me --help' for more information."
- # Parse command line
- while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- *local*)
- # First pass through any local machine types.
- echo "$1"
- exit ;;
- * )
- break ;;
- esac
- done
- case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
- esac
- # Split fields of configuration type
- saved_IFS=$IFS
- IFS="-" read field1 field2 field3 field4 <<EOF
- $1
- EOF
- IFS=$saved_IFS
- # Separate into logical components for further validation
- case $1 in
- *-*-*-*-*)
- echo "Invalid configuration '$1': more than four components" >&2
- exit 1
- ;;
- *-*-*-*)
- basic_machine=$field1-$field2
- basic_os=$field3-$field4
- ;;
- *-*-*)
- # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
- # parts
- maybe_os=$field2-$field3
- case $maybe_os in
- cloudabi*-eabi* \
- | kfreebsd*-gnu* \
- | knetbsd*-gnu* \
- | kopensolaris*-gnu* \
- | linux-* \
- | managarm-* \
- | netbsd*-eabi* \
- | netbsd*-gnu* \
- | nto-qnx* \
- | os2-emx* \
- | rtmk-nova* \
- | storm-chaos* \
- | uclinux-gnu* \
- | uclinux-uclibc* \
- | windows-* )
- basic_machine=$field1
- basic_os=$maybe_os
- ;;
- android-linux)
- basic_machine=$field1-unknown
- basic_os=linux-android
- ;;
- *)
- basic_machine=$field1-$field2
- basic_os=$field3
- ;;
- esac
- ;;
- *-*)
- case $field1-$field2 in
- # Shorthands that happen to contain a single dash
- convex-c[12] | convex-c3[248])
- basic_machine=$field2-convex
- basic_os=
- ;;
- decstation-3100)
- basic_machine=mips-dec
- basic_os=
- ;;
- *-*)
- # Second component is usually, but not always the OS
- case $field2 in
- # Do not treat sunos as a manufacturer
- sun*os*)
- basic_machine=$field1
- basic_os=$field2
- ;;
- # Manufacturers
- 3100* \
- | 32* \
- | 3300* \
- | 3600* \
- | 7300* \
- | acorn \
- | altos* \
- | apollo \
- | apple \
- | atari \
- | att* \
- | axis \
- | be \
- | bull \
- | cbm \
- | ccur \
- | cisco \
- | commodore \
- | convergent* \
- | convex* \
- | cray \
- | crds \
- | dec* \
- | delta* \
- | dg \
- | digital \
- | dolphin \
- | encore* \
- | gould \
- | harris \
- | highlevel \
- | hitachi* \
- | hp \
- | ibm* \
- | intergraph \
- | isi* \
- | knuth \
- | masscomp \
- | microblaze* \
- | mips* \
- | motorola* \
- | ncr* \
- | news \
- | next \
- | ns \
- | oki \
- | omron* \
- | pc533* \
- | rebel \
- | rom68k \
- | rombug \
- | semi \
- | sequent* \
- | siemens \
- | sgi* \
- | siemens \
- | sim \
- | sni \
- | sony* \
- | stratus \
- | sun \
- | sun[234]* \
- | tektronix \
- | tti* \
- | ultra \
- | unicom* \
- | wec \
- | winbond \
- | wrs)
- basic_machine=$field1-$field2
- basic_os=
- ;;
- zephyr*)
- basic_machine=$field1-unknown
- basic_os=$field2
- ;;
- *)
- basic_machine=$field1
- basic_os=$field2
- ;;
- esac
- ;;
- esac
- ;;
- *)
- # Convert single-component short-hands not valid as part of
- # multi-component configurations.
- case $field1 in
- 386bsd)
- basic_machine=i386-pc
- basic_os=bsd
- ;;
- a29khif)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- basic_os=scout
- ;;
- alliant)
- basic_machine=fx80-alliant
- basic_os=
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- basic_os=
- ;;
- am29k)
- basic_machine=a29k-none
- basic_os=bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- basic_os=sysv
- ;;
- amiga)
- basic_machine=m68k-unknown
- basic_os=
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- basic_os=amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- basic_os=sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- basic_os=sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- basic_os=bsd
- ;;
- aros)
- basic_machine=i386-pc
- basic_os=aros
- ;;
- aux)
- basic_machine=m68k-apple
- basic_os=aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- basic_os=dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- basic_os=linux
- ;;
- cegcc)
- basic_machine=arm-unknown
- basic_os=cegcc
- ;;
- cray)
- basic_machine=j90-cray
- basic_os=unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- basic_os=
- ;;
- da30)
- basic_machine=m68k-da30
- basic_os=
- ;;
- decstation | pmax | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- basic_os=
- ;;
- delta88)
- basic_machine=m88k-motorola
- basic_os=sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- basic_os=dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- basic_os=msdosdjgpp
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- basic_os=ebmon
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- basic_os=ose
- ;;
- gmicro)
- basic_machine=tron-gmicro
- basic_os=sysv
- ;;
- go32)
- basic_machine=i386-pc
- basic_os=go32
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- basic_os=hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- basic_os=xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- basic_os=hms
- ;;
- harris)
- basic_machine=m88k-harris
- basic_os=sysv3
- ;;
- hp300 | hp300hpux)
- basic_machine=m68k-hp
- basic_os=hpux
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- basic_os=bsd
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- basic_os=osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- basic_os=proelf
- ;;
- i386mach)
- basic_machine=i386-mach
- basic_os=mach
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- basic_os=sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- basic_os=linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- basic_os=sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- basic_os=sysv
- ;;
- mingw64)
- basic_machine=x86_64-pc
- basic_os=mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- basic_os=mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- basic_os=mingw32ce
- ;;
- monitor)
- basic_machine=m68k-rom68k
- basic_os=coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- basic_os=morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- basic_os=moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- basic_os=msdos
- ;;
- msys)
- basic_machine=i686-pc
- basic_os=msys
- ;;
- mvs)
- basic_machine=i370-ibm
- basic_os=mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- basic_os=nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- basic_os=sysv4
- ;;
- netbsd386)
- basic_machine=i386-pc
- basic_os=netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- basic_os=linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- basic_os=newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- basic_os=newsos
- ;;
- necv70)
- basic_machine=v70-nec
- basic_os=sysv
- ;;
- nh3000)
- basic_machine=m68k-harris
- basic_os=cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- basic_os=cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- basic_os=nindy
- ;;
- mon960)
- basic_machine=i960-intel
- basic_os=mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- basic_os=nonstopux
- ;;
- os400)
- basic_machine=powerpc-ibm
- basic_os=os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- basic_os=ose
- ;;
- os68k)
- basic_machine=m68k-none
- basic_os=os68k
- ;;
- paragon)
- basic_machine=i860-intel
- basic_os=osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- basic_os=linux
- ;;
- psp)
- basic_machine=mipsallegrexel-sony
- basic_os=psp
- ;;
- pw32)
- basic_machine=i586-unknown
- basic_os=pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- basic_os=rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- basic_os=rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- basic_os=coff
- ;;
- sa29200)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- sei)
- basic_machine=mips-sei
- basic_os=seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- basic_os=
- ;;
- sps7)
- basic_machine=m68k-bull
- basic_os=sysv2
- ;;
- st2000)
- basic_machine=m68k-tandem
- basic_os=
- ;;
- stratus)
- basic_machine=i860-stratus
- basic_os=sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- basic_os=
- ;;
- sun2os3)
- basic_machine=m68000-sun
- basic_os=sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- basic_os=sunos4
- ;;
- sun3)
- basic_machine=m68k-sun
- basic_os=
- ;;
- sun3os3)
- basic_machine=m68k-sun
- basic_os=sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- basic_os=sunos4
- ;;
- sun4)
- basic_machine=sparc-sun
- basic_os=
- ;;
- sun4os3)
- basic_machine=sparc-sun
- basic_os=sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- basic_os=sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- basic_os=solaris2
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- basic_os=
- ;;
- sv1)
- basic_machine=sv1-cray
- basic_os=unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- basic_os=dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- basic_os=unicos
- ;;
- t90)
- basic_machine=t90-cray
- basic_os=unicos
- ;;
- toad1)
- basic_machine=pdp10-xkl
- basic_os=tops20
- ;;
- tpf)
- basic_machine=s390x-ibm
- basic_os=tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- basic_os=sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- basic_os=none
- ;;
- vaxv)
- basic_machine=vax-dec
- basic_os=sysv
- ;;
- vms)
- basic_machine=vax-dec
- basic_os=vms
- ;;
- vsta)
- basic_machine=i386-pc
- basic_os=vsta
- ;;
- vxworks960)
- basic_machine=i960-wrs
- basic_os=vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- basic_os=vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- basic_os=vxworks
- ;;
- xbox)
- basic_machine=i686-pc
- basic_os=mingw32
- ;;
- ymp)
- basic_machine=ymp-cray
- basic_os=unicos
- ;;
- *)
- basic_machine=$1
- basic_os=
- ;;
- esac
- ;;
- esac
- # Decode 1-component or ad-hoc basic machines
- case $basic_machine in
- # Here we handle the default manufacturer of certain CPU types. It is in
- # some cases the only manufacturer, in others, it is the most popular.
- w89k)
- cpu=hppa1.1
- vendor=winbond
- ;;
- op50n)
- cpu=hppa1.1
- vendor=oki
- ;;
- op60c)
- cpu=hppa1.1
- vendor=oki
- ;;
- ibm*)
- cpu=i370
- vendor=ibm
- ;;
- orion105)
- cpu=clipper
- vendor=highlevel
- ;;
- mac | mpw | mac-mpw)
- cpu=m68k
- vendor=apple
- ;;
- pmac | pmac-mpw)
- cpu=powerpc
- vendor=apple
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- cpu=m68000
- vendor=att
- ;;
- 3b*)
- cpu=we32k
- vendor=att
- ;;
- bluegene*)
- cpu=powerpc
- vendor=ibm
- basic_os=cnk
- ;;
- decsystem10* | dec10*)
- cpu=pdp10
- vendor=dec
- basic_os=tops10
- ;;
- decsystem20* | dec20*)
- cpu=pdp10
- vendor=dec
- basic_os=tops20
- ;;
- delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
- cpu=m68k
- vendor=motorola
- ;;
- # This used to be dpx2*, but that gets the RS6000-based
- # DPX/20 and the x86-based DPX/2-100 wrong. See
- # https://oldskool.silicium.org/stations/bull_dpx20.htm
- # https://www.feb-patrimoine.com/english/bull_dpx2.htm
- # https://www.feb-patrimoine.com/english/unix_and_bull.htm
- dpx2 | dpx2[23]00 | dpx2[23]xx)
- cpu=m68k
- vendor=bull
- ;;
- dpx2100 | dpx21xx)
- cpu=i386
- vendor=bull
- ;;
- dpx20)
- cpu=rs6000
- vendor=bull
- ;;
- encore | umax | mmax)
- cpu=ns32k
- vendor=encore
- ;;
- elxsi)
- cpu=elxsi
- vendor=elxsi
- basic_os=${basic_os:-bsd}
- ;;
- fx2800)
- cpu=i860
- vendor=alliant
- ;;
- genix)
- cpu=ns32k
- vendor=ns
- ;;
- h3050r* | hiux*)
- cpu=hppa1.1
- vendor=hitachi
- basic_os=hiuxwe2
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- cpu=m68000
- vendor=hp
- ;;
- hp9k3[2-9][0-9])
- cpu=m68k
- vendor=hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv32
- ;;
- i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv4
- ;;
- i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv
- ;;
- i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=solaris2
- ;;
- j90 | j90-cray)
- cpu=j90
- vendor=cray
- basic_os=${basic_os:-unicos}
- ;;
- iris | iris4d)
- cpu=mips
- vendor=sgi
- case $basic_os in
- irix*)
- ;;
- *)
- basic_os=irix4
- ;;
- esac
- ;;
- miniframe)
- cpu=m68000
- vendor=convergent
- ;;
- *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
- cpu=m68k
- vendor=atari
- basic_os=mint
- ;;
- news-3600 | risc-news)
- cpu=mips
- vendor=sony
- basic_os=newsos
- ;;
- next | m*-next)
- cpu=m68k
- vendor=next
- ;;
- np1)
- cpu=np1
- vendor=gould
- ;;
- op50n-* | op60c-*)
- cpu=hppa1.1
- vendor=oki
- basic_os=proelf
- ;;
- pa-hitachi)
- cpu=hppa1.1
- vendor=hitachi
- basic_os=hiuxwe2
- ;;
- pbd)
- cpu=sparc
- vendor=tti
- ;;
- pbb)
- cpu=m68k
- vendor=tti
- ;;
- pc532)
- cpu=ns32k
- vendor=pc532
- ;;
- pn)
- cpu=pn
- vendor=gould
- ;;
- power)
- cpu=power
- vendor=ibm
- ;;
- ps2)
- cpu=i386
- vendor=ibm
- ;;
- rm[46]00)
- cpu=mips
- vendor=siemens
- ;;
- rtpc | rtpc-*)
- cpu=romp
- vendor=ibm
- ;;
- sde)
- cpu=mipsisa32
- vendor=sde
- basic_os=${basic_os:-elf}
- ;;
- simso-wrs)
- cpu=sparclite
- vendor=wrs
- basic_os=vxworks
- ;;
- tower | tower-32)
- cpu=m68k
- vendor=ncr
- ;;
- vpp*|vx|vx-*)
- cpu=f301
- vendor=fujitsu
- ;;
- w65)
- cpu=w65
- vendor=wdc
- ;;
- w89k-*)
- cpu=hppa1.1
- vendor=winbond
- basic_os=proelf
- ;;
- none)
- cpu=none
- vendor=none
- ;;
- leon|leon[3-9])
- cpu=sparc
- vendor=$basic_machine
- ;;
- leon-*|leon[3-9]-*)
- cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
- ;;
- *-*)
- saved_IFS=$IFS
- IFS="-" read cpu vendor <<EOF
- $basic_machine
- EOF
- IFS=$saved_IFS
- ;;
- # We use 'pc' rather than 'unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- cpu=$basic_machine
- vendor=pc
- ;;
- # These rules are duplicated from below for sake of the special case above;
- # i.e. things that normalized to x86 arches should also default to "pc"
- pc98)
- cpu=i386
- vendor=pc
- ;;
- x64 | amd64)
- cpu=x86_64
- vendor=pc
- ;;
- # Recognize the basic CPU types without company name.
- *)
- cpu=$basic_machine
- vendor=unknown
- ;;
- esac
- unset -v basic_machine
- # Decode basic machines in the full and proper CPU-Company form.
- case $cpu-$vendor in
- # Here we handle the default manufacturer of certain CPU types in canonical form.
- # It is in some cases the only manufacturer, in others, it is the most popular.
- c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
- vendor=convex
- basic_os=${basic_os:-bsd}
- ;;
- craynv-unknown)
- vendor=cray
- basic_os=${basic_os:-unicosmp}
- ;;
- c90-unknown | c90-cray)
- vendor=cray
- basic_os=${basic_os:-unicos}
- ;;
- fx80-unknown)
- vendor=alliant
- ;;
- romp-unknown)
- vendor=ibm
- ;;
- mmix-unknown)
- vendor=knuth
- ;;
- microblaze-unknown | microblazeel-unknown)
- vendor=xilinx
- ;;
- rs6000-unknown)
- vendor=ibm
- ;;
- vax-unknown)
- vendor=dec
- ;;
- pdp11-unknown)
- vendor=dec
- ;;
- we32k-unknown)
- vendor=att
- ;;
- cydra-unknown)
- vendor=cydrome
- ;;
- i370-ibm*)
- vendor=ibm
- ;;
- orion-unknown)
- vendor=highlevel
- ;;
- xps-unknown | xps100-unknown)
- cpu=xps100
- vendor=honeywell
- ;;
- # Here we normalize CPU types with a missing or matching vendor
- armh-unknown | armh-alt)
- cpu=armv7l
- vendor=alt
- basic_os=${basic_os:-linux-gnueabihf}
- ;;
- # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
- m68k-isi)
- basic_os=${basic_os:-sysv}
- ;;
- m68k-sony)
- basic_os=${basic_os:-newsos}
- ;;
- m68k-tektronix)
- basic_os=${basic_os:-bsd}
- ;;
- m88k-harris)
- basic_os=${basic_os:-sysv3}
- ;;
- i386-bull | m68k-bull)
- basic_os=${basic_os:-sysv3}
- ;;
- rs6000-bull)
- basic_os=${basic_os:-bosx}
- ;;
- mips-sni)
- basic_os=${basic_os:-sysv4}
- ;;
- # Here we normalize CPU types irrespective of the vendor
- amd64-*)
- cpu=x86_64
- ;;
- blackfin-*)
- cpu=bfin
- basic_os=${basic_os:-linux}
- ;;
- c54x-*)
- cpu=tic54x
- ;;
- c55x-*)
- cpu=tic55x
- ;;
- c6x-*)
- cpu=tic6x
- ;;
- e500v[12]-*)
- cpu=powerpc
- basic_os=${basic_os}"spe"
- ;;
- mips3*-*)
- cpu=mips64
- ;;
- ms1-*)
- cpu=mt
- ;;
- m68knommu-*)
- cpu=m68k
- basic_os=${basic_os:-linux}
- ;;
- m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
- cpu=s12z
- ;;
- openrisc-*)
- cpu=or32
- ;;
- parisc-*)
- cpu=hppa
- basic_os=${basic_os:-linux}
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- cpu=i586
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
- cpu=i686
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- cpu=i686
- ;;
- pentium4-*)
- cpu=i786
- ;;
- ppc-* | ppcbe-*)
- cpu=powerpc
- ;;
- ppcle-* | powerpclittle-*)
- cpu=powerpcle
- ;;
- ppc64-*)
- cpu=powerpc64
- ;;
- ppc64le-* | powerpc64little-*)
- cpu=powerpc64le
- ;;
- sb1-*)
- cpu=mipsisa64sb1
- ;;
- sb1el-*)
- cpu=mipsisa64sb1el
- ;;
- sh5e[lb]-*)
- cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
- ;;
- spur-*)
- cpu=spur
- ;;
- strongarm-* | thumb-*)
- cpu=arm
- ;;
- tx39-*)
- cpu=mipstx39
- ;;
- tx39el-*)
- cpu=mipstx39el
- ;;
- xscale-* | xscalee[bl]-*)
- cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
- ;;
- arm64-* | aarch64le-*)
- cpu=aarch64
- ;;
- # Recognize the canonical CPU Types that limit and/or modify the
- # company names they are paired with.
- cr16-*)
- basic_os=${basic_os:-elf}
- ;;
- crisv32-* | etraxfs*-*)
- cpu=crisv32
- vendor=axis
- ;;
- cris-* | etrax*-*)
- cpu=cris
- vendor=axis
- ;;
- crx-*)
- basic_os=${basic_os:-elf}
- ;;
- neo-tandem)
- cpu=neo
- vendor=tandem
- ;;
- nse-tandem)
- cpu=nse
- vendor=tandem
- ;;
- nsr-tandem)
- cpu=nsr
- vendor=tandem
- ;;
- nsv-tandem)
- cpu=nsv
- vendor=tandem
- ;;
- nsx-tandem)
- cpu=nsx
- vendor=tandem
- ;;
- mipsallegrexel-sony)
- cpu=mipsallegrexel
- vendor=sony
- ;;
- tile*-*)
- basic_os=${basic_os:-linux-gnu}
- ;;
- *)
- # Recognize the canonical CPU types that are allowed with any
- # company name.
- case $cpu in
- 1750a \
- | 580 \
- | [cjt]90 \
- | a29k \
- | aarch64 \
- | aarch64_be \
- | aarch64c \
- | abacus \
- | alpha \
- | alpha64 \
- | alpha64ev56 \
- | alpha64ev6[78] \
- | alpha64ev[4-8] \
- | alpha64pca5[67] \
- | alphaev56 \
- | alphaev6[78] \
- | alphaev[4-8] \
- | alphapca5[67] \
- | am33_2.0 \
- | amdgcn \
- | arc \
- | arc32 \
- | arc64 \
- | arceb \
- | arm \
- | arm64e \
- | arm64ec \
- | arm[lb]e \
- | arme[lb] \
- | armv* \
- | asmjs \
- | avr \
- | avr32 \
- | ba \
- | be32 \
- | be64 \
- | bfin \
- | bpf \
- | bs2000 \
- | c30 \
- | c4x \
- | c8051 \
- | c[123]* \
- | clipper \
- | craynv \
- | csky \
- | cydra \
- | d10v \
- | d30v \
- | dlx \
- | dsp16xx \
- | e2k \
- | elxsi \
- | epiphany \
- | f30[01] \
- | f700 \
- | fido \
- | fr30 \
- | frv \
- | ft32 \
- | fx80 \
- | h8300 \
- | h8500 \
- | hexagon \
- | hppa \
- | hppa1.[01] \
- | hppa2.0 \
- | hppa2.0[nw] \
- | hppa64 \
- | i*86 \
- | i370 \
- | i860 \
- | i960 \
- | ia16 \
- | ia64 \
- | ip2k \
- | iq2000 \
- | javascript \
- | k1om \
- | kvx \
- | le32 \
- | le64 \
- | lm32 \
- | loongarch32 \
- | loongarch64 \
- | m32c \
- | m32r \
- | m32rle \
- | m5200 \
- | m68000 \
- | m680[012346]0 \
- | m6811 \
- | m6812 \
- | m68360 \
- | m683?2 \
- | m68hc11 \
- | m68hc12 \
- | m68hcs12x \
- | m68k \
- | m88110 \
- | m88k \
- | maxq \
- | mb \
- | mcore \
- | mep \
- | metag \
- | microblaze \
- | microblazeel \
- | mips* \
- | mmix \
- | mn10200 \
- | mn10300 \
- | moxie \
- | msp430 \
- | mt \
- | nanomips* \
- | nds32 \
- | nds32be \
- | nds32le \
- | nfp \
- | nios \
- | nios2 \
- | nios2eb \
- | nios2el \
- | none \
- | np1 \
- | ns16k \
- | ns32k \
- | nvptx \
- | open8 \
- | or1k* \
- | or32 \
- | orion \
- | pdp10 \
- | pdp11 \
- | picochip \
- | pj \
- | pjl \
- | pn \
- | power \
- | powerpc \
- | powerpc64 \
- | powerpc64le \
- | powerpcle \
- | powerpcspe \
- | pru \
- | pyramid \
- | riscv \
- | riscv32 \
- | riscv32be \
- | riscv64 \
- | riscv64be \
- | rl78 \
- | romp \
- | rs6000 \
- | rx \
- | s390 \
- | s390x \
- | score \
- | sh \
- | sh64 \
- | sh64le \
- | sh[12345][lb]e \
- | sh[1234] \
- | sh[1234]e[lb] \
- | sh[23]e \
- | sh[23]ele \
- | sh[24]a \
- | sh[24]ae[lb] \
- | sh[lb]e \
- | she[lb] \
- | shl \
- | sparc \
- | sparc64 \
- | sparc64b \
- | sparc64v \
- | sparc86x \
- | sparclet \
- | sparclite \
- | sparcv8 \
- | sparcv9 \
- | sparcv9b \
- | sparcv9v \
- | spu \
- | sv1 \
- | sx* \
- | tahoe \
- | thumbv7* \
- | tic30 \
- | tic4x \
- | tic54x \
- | tic55x \
- | tic6x \
- | tic80 \
- | tron \
- | ubicom32 \
- | v70 \
- | v810 \
- | v850 \
- | v850e \
- | v850e1 \
- | v850e2 \
- | v850e2v3 \
- | v850es \
- | vax \
- | vc4 \
- | visium \
- | w65 \
- | wasm32 \
- | wasm64 \
- | we32k \
- | x86 \
- | x86_64 \
- | xc16x \
- | xgate \
- | xps100 \
- | xstormy16 \
- | xtensa* \
- | ymp \
- | z80 \
- | z8k)
- ;;
- *)
- echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
- exit 1
- ;;
- esac
- ;;
- esac
- # Here we canonicalize certain aliases for manufacturers.
- case $vendor in
- digital*)
- vendor=dec
- ;;
- commodore*)
- vendor=cbm
- ;;
- *)
- ;;
- esac
- # Decode manufacturer-specific aliases for certain operating systems.
- if test x"$basic_os" != x
- then
- # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
- # set os.
- obj=
- case $basic_os in
- gnu/linux*)
- kernel=linux
- os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
- ;;
- os2-emx)
- kernel=os2
- os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
- ;;
- nto-qnx*)
- kernel=nto
- os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
- ;;
- *-*)
- saved_IFS=$IFS
- IFS="-" read kernel os <<EOF
- $basic_os
- EOF
- IFS=$saved_IFS
- ;;
- # Default OS when just kernel was specified
- nto*)
- kernel=nto
- os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
- ;;
- linux*)
- kernel=linux
- os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
- ;;
- managarm*)
- kernel=managarm
- os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
- ;;
- *)
- kernel=
- os=$basic_os
- ;;
- esac
- # Now, normalize the OS (knowing we just have one component, it's not a kernel,
- # etc.)
- case $os in
- # First match some system type aliases that might get confused
- # with valid system types.
- # solaris* is a basic system type, with this one exception.
- auroraux)
- os=auroraux
- ;;
- bluegene*)
- os=cnk
- ;;
- solaris1 | solaris1.*)
- os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
- ;;
- solaris)
- os=solaris2
- ;;
- unixware*)
- os=sysv4.2uw
- ;;
- # The marketing names for NeXT's operating systems were
- # NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is
- # mapped to 'openstep3', but 'openstep1' and 'openstep2' are
- # mapped to 'nextstep' and 'nextstep2', consistent with the
- # treatment of SunOS/Solaris.
- ns | ns1 | nextstep | nextstep1 | openstep1)
- os=nextstep
- ;;
- ns2 | nextstep2 | openstep2)
- os=nextstep2
- ;;
- ns3 | nextstep3 | openstep | openstep3)
- os=openstep3
- ;;
- ns4 | nextstep4 | openstep4)
- os=openstep4
- ;;
- # es1800 is here to avoid being matched by es* (a different OS)
- es1800*)
- os=ose
- ;;
- # Some version numbers need modification
- chorusos*)
- os=chorusos
- ;;
- isc)
- os=isc2.2
- ;;
- sco6)
- os=sco5v6
- ;;
- sco5)
- os=sco3.2v5
- ;;
- sco4)
- os=sco3.2v4
- ;;
- sco3.2.[4-9]*)
- os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
- ;;
- sco*v* | scout)
- # Don't match below
- ;;
- sco*)
- os=sco3.2v2
- ;;
- psos*)
- os=psos
- ;;
- qnx*)
- os=qnx
- ;;
- hiux*)
- os=hiuxwe2
- ;;
- lynx*178)
- os=lynxos178
- ;;
- lynx*5)
- os=lynxos5
- ;;
- lynxos*)
- # don't get caught up in next wildcard
- ;;
- lynx*)
- os=lynxos
- ;;
- mac[0-9]*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
- ;;
- opened*)
- os=openedition
- ;;
- os400*)
- os=os400
- ;;
- sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
- ;;
- sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
- ;;
- wince*)
- os=wince
- ;;
- utek*)
- os=bsd
- vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
- ;;
- dynix*)
- os=bsd
- ;;
- acis*)
- os=aos
- ;;
- atheos*)
- os=atheos
- ;;
- syllable*)
- os=syllable
- ;;
- 386bsd)
- os=bsd
- ;;
- ctix*)
- os=sysv
- vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
- ;;
- uts*)
- os=sysv
- ;;
- nova*)
- kernel=rtmk
- os=nova
- ;;
- # Preserve the version number of sinix5.
- sinix5.*)
- os=`echo "$os" | sed -e 's|sinix|sysv|'`
- vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
- ;;
- sinix*)
- os=sysv4
- vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
- ;;
- tpf*)
- os=tpf
- ;;
- triton*)
- os=sysv3
- ;;
- oss*)
- os=sysv3
- ;;
- svr4*)
- os=sysv4
- ;;
- svr3)
- os=sysv3
- ;;
- sysvr4)
- os=sysv4
- ;;
- ose*)
- os=ose
- ;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
- os=mint
- ;;
- dicos*)
- os=dicos
- ;;
- pikeos*)
- # Until real need of OS specific support for
- # particular features comes up, bare metal
- # configurations are quite functional.
- case $cpu in
- arm*)
- os=eabi
- ;;
- *)
- os=
- obj=elf
- ;;
- esac
- ;;
- aout* | coff* | elf* | pe*)
- # These are machine code file formats, not OSes
- obj=$os
- os=
- ;;
- *)
- # No normalization, but not necessarily accepted, that comes below.
- ;;
- esac
- else
- # Here we handle the default operating systems that come with various machines.
- # The value should be what the vendor currently ships out the door with their
- # machine or put another way, the most popular os provided with the machine.
- # Note that if you're going to try to match "-MANUFACTURER" here (say,
- # "-sun"), then you have to tell the case statement up towards the top
- # that MANUFACTURER isn't an operating system. Otherwise, code above
- # will signal an error saying that MANUFACTURER isn't an operating
- # system, and we'll never get to this point.
- kernel=
- obj=
- case $cpu-$vendor in
- score-*)
- os=
- obj=elf
- ;;
- spu-*)
- os=
- obj=elf
- ;;
- *-acorn)
- os=riscix1.2
- ;;
- arm*-rebel)
- kernel=linux
- os=gnu
- ;;
- arm*-semi)
- os=
- obj=aout
- ;;
- c4x-* | tic4x-*)
- os=
- obj=coff
- ;;
- c8051-*)
- os=
- obj=elf
- ;;
- clipper-intergraph)
- os=clix
- ;;
- hexagon-*)
- os=
- obj=elf
- ;;
- tic54x-*)
- os=
- obj=coff
- ;;
- tic55x-*)
- os=
- obj=coff
- ;;
- tic6x-*)
- os=
- obj=coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=tops20
- ;;
- pdp11-*)
- os=none
- ;;
- *-dec | vax-*)
- os=ultrix4.2
- ;;
- m68*-apollo)
- os=domain
- ;;
- i386-sun)
- os=sunos4.0.2
- ;;
- m68000-sun)
- os=sunos3
- ;;
- m68*-cisco)
- os=
- obj=aout
- ;;
- mep-*)
- os=
- obj=elf
- ;;
- # The -sgi and -siemens entries must be before the mips- entry
- # or we get the wrong os.
- *-sgi)
- os=irix
- ;;
- *-siemens)
- os=sysv4
- ;;
- mips*-cisco)
- os=
- obj=elf
- ;;
- mips*-*|nanomips*-*)
- os=
- obj=elf
- ;;
- or32-*)
- os=
- obj=coff
- ;;
- # This must be before the sparc-* entry or we get the wrong os.
- *-tti)
- os=sysv3
- ;;
- sparc-* | *-sun)
- os=sunos4.1.1
- ;;
- pru-*)
- os=
- obj=elf
- ;;
- *-be)
- os=beos
- ;;
- *-ibm)
- os=aix
- ;;
- *-knuth)
- os=mmixware
- ;;
- *-wec)
- os=proelf
- ;;
- *-winbond)
- os=proelf
- ;;
- *-oki)
- os=proelf
- ;;
- *-hp)
- os=hpux
- ;;
- *-hitachi)
- os=hiuxwe2
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=sysv
- ;;
- *-cbm)
- os=amigaos
- ;;
- *-dg)
- os=dgux
- ;;
- *-dolphin)
- os=sysv3
- ;;
- m68k-ccur)
- os=rtu
- ;;
- m88k-omron*)
- os=luna
- ;;
- *-next)
- os=nextstep
- ;;
- *-sequent)
- os=ptx
- ;;
- *-crds)
- os=unos
- ;;
- *-ns)
- os=genix
- ;;
- i370-*)
- os=mvs
- ;;
- *-gould)
- os=sysv
- ;;
- *-highlevel)
- os=bsd
- ;;
- *-encore)
- os=bsd
- ;;
- *-masscomp)
- os=rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=uxpv
- ;;
- *-rom68k)
- os=
- obj=coff
- ;;
- *-*bug)
- os=
- obj=coff
- ;;
- *-apple)
- os=macos
- ;;
- *-atari*)
- os=mint
- ;;
- *-wrs)
- os=vxworks
- ;;
- *)
- os=none
- ;;
- esac
- fi
- # Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
- case $os in
- # Sometimes we do "kernel-libc", so those need to count as OSes.
- llvm* | musl* | newlib* | relibc* | uclibc*)
- ;;
- # Likewise for "kernel-abi"
- eabi* | gnueabi*)
- ;;
- # VxWorks passes extra cpu info in the 4th filed.
- simlinux | simwindows | spe)
- ;;
- # See `case $cpu-$os` validation below
- ghcjs)
- ;;
- # Now accept the basic system types.
- # Each alternative MUST end in a * to match a version number.
- abug \
- | aix* \
- | amdhsa* \
- | amigados* \
- | amigaos* \
- | android* \
- | aof* \
- | aos* \
- | aros* \
- | atheos* \
- | auroraux* \
- | aux* \
- | beos* \
- | bitrig* \
- | bme* \
- | bosx* \
- | bsd* \
- | cegcc* \
- | chorusos* \
- | chorusrdb* \
- | clix* \
- | cloudabi* \
- | cnk* \
- | conix* \
- | cos* \
- | cxux* \
- | cygwin* \
- | darwin* \
- | dgux* \
- | dicos* \
- | dnix* \
- | domain* \
- | dragonfly* \
- | drops* \
- | ebmon* \
- | ecoff* \
- | ekkobsd* \
- | emscripten* \
- | emx* \
- | es* \
- | fiwix* \
- | freebsd* \
- | fuchsia* \
- | genix* \
- | genode* \
- | glidix* \
- | gnu* \
- | go32* \
- | haiku* \
- | hcos* \
- | hiux* \
- | hms* \
- | hpux* \
- | ieee* \
- | interix* \
- | ios* \
- | iris* \
- | irix* \
- | ironclad* \
- | isc* \
- | its* \
- | l4re* \
- | libertybsd* \
- | lites* \
- | lnews* \
- | luna* \
- | lynxos* \
- | mach* \
- | macos* \
- | magic* \
- | mbr* \
- | midipix* \
- | midnightbsd* \
- | mingw32* \
- | mingw64* \
- | minix* \
- | mint* \
- | mirbsd* \
- | mks* \
- | mlibc* \
- | mmixware* \
- | mon960* \
- | morphos* \
- | moss* \
- | moxiebox* \
- | mpeix* \
- | mpw* \
- | msdos* \
- | msys* \
- | mvs* \
- | nacl* \
- | netbsd* \
- | netware* \
- | newsos* \
- | nextstep* \
- | nindy* \
- | nonstopux* \
- | nova* \
- | nsk* \
- | nucleus* \
- | nx6 \
- | nx7 \
- | oabi* \
- | ohos* \
- | onefs* \
- | openbsd* \
- | openedition* \
- | openstep* \
- | os108* \
- | os2* \
- | os400* \
- | os68k* \
- | os9* \
- | ose* \
- | osf* \
- | oskit* \
- | osx* \
- | palmos* \
- | phoenix* \
- | plan9* \
- | powermax* \
- | powerunix* \
- | proelf* \
- | psos* \
- | psp* \
- | ptx* \
- | pw32* \
- | qnx* \
- | rdos* \
- | redox* \
- | rhapsody* \
- | riscix* \
- | riscos* \
- | rtems* \
- | rtmk* \
- | rtu* \
- | scout* \
- | secbsd* \
- | sei* \
- | serenity* \
- | sim* \
- | skyos* \
- | solaris* \
- | solidbsd* \
- | sortix* \
- | storm-chaos* \
- | sunos \
- | sunos[34]* \
- | superux* \
- | syllable* \
- | sym* \
- | sysv* \
- | tenex* \
- | tirtos* \
- | toppers* \
- | tops10* \
- | tops20* \
- | tpf* \
- | tvos* \
- | twizzler* \
- | uclinux* \
- | udi* \
- | udk* \
- | ultrix* \
- | unicos* \
- | uniplus* \
- | unleashed* \
- | unos* \
- | uwin* \
- | uxpv* \
- | v88r* \
- |*vms* \
- | vos* \
- | vsta* \
- | vxsim* \
- | vxworks* \
- | wasi* \
- | watchos* \
- | wince* \
- | windiss* \
- | windows* \
- | winnt* \
- | xenix* \
- | xray* \
- | zephyr* \
- | zvmoe* )
- ;;
- # This one is extra strict with allowed versions
- sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- ;;
- # This refers to builds using the UEFI calling convention
- # (which depends on the architecture) and PE file format.
- # Note that this is both a different calling convention and
- # different file format than that of GNU-EFI
- # (x86_64-w64-mingw32).
- uefi)
- ;;
- none)
- ;;
- kernel* | msvc* )
- # Restricted further below
- ;;
- '')
- if test x"$obj" = x
- then
- echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
- fi
- ;;
- *)
- echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
- exit 1
- ;;
- esac
- case $obj in
- aout* | coff* | elf* | pe*)
- ;;
- '')
- # empty is fine
- ;;
- *)
- echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
- exit 1
- ;;
- esac
- # Here we handle the constraint that a (synthetic) cpu and os are
- # valid only in combination with each other and nowhere else.
- case $cpu-$os in
- # The "javascript-unknown-ghcjs" triple is used by GHC; we
- # accept it here in order to tolerate that, but reject any
- # variations.
- javascript-ghcjs)
- ;;
- javascript-* | *-ghcjs)
- echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
- exit 1
- ;;
- esac
- # As a final step for OS-related things, validate the OS-kernel combination
- # (given a valid OS), if there is a kernel.
- case $kernel-$os-$obj in
- linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
- | linux-mlibc*- | linux-musl*- | linux-newlib*- \
- | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
- ;;
- uclinux-uclibc*- | uclinux-gnu*- )
- ;;
- managarm-mlibc*- | managarm-kernel*- )
- ;;
- windows*-msvc*-)
- ;;
- -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
- | -uclibc*- )
- # These are just libc implementations, not actual OSes, and thus
- # require a kernel.
- echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
- exit 1
- ;;
- -kernel*- )
- echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
- exit 1
- ;;
- *-kernel*- )
- echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
- exit 1
- ;;
- *-msvc*- )
- echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
- exit 1
- ;;
- kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
- ;;
- vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
- ;;
- nto-qnx*-)
- ;;
- os2-emx-)
- ;;
- rtmk-nova-)
- ;;
- *-eabi*- | *-gnueabi*-)
- ;;
- none--*)
- # None (no kernel, i.e. freestanding / bare metal),
- # can be paired with an machine code file format
- ;;
- -*-)
- # Blank kernel with real OS is always fine.
- ;;
- --*)
- # Blank kernel and OS with real machine code file format is always fine.
- ;;
- *-*-*)
- echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
- exit 1
- ;;
- esac
- # Here we handle the case where we know the os, and the CPU type, but not the
- # manufacturer. We pick the logical manufacturer.
- case $vendor in
- unknown)
- case $cpu-$os in
- *-riscix*)
- vendor=acorn
- ;;
- *-sunos* | *-solaris*)
- vendor=sun
- ;;
- *-cnk* | *-aix*)
- vendor=ibm
- ;;
- *-beos*)
- vendor=be
- ;;
- *-hpux*)
- vendor=hp
- ;;
- *-mpeix*)
- vendor=hp
- ;;
- *-hiux*)
- vendor=hitachi
- ;;
- *-unos*)
- vendor=crds
- ;;
- *-dgux*)
- vendor=dg
- ;;
- *-luna*)
- vendor=omron
- ;;
- *-genix*)
- vendor=ns
- ;;
- *-clix*)
- vendor=intergraph
- ;;
- *-mvs* | *-opened*)
- vendor=ibm
- ;;
- *-os400*)
- vendor=ibm
- ;;
- s390-* | s390x-*)
- vendor=ibm
- ;;
- *-ptx*)
- vendor=sequent
- ;;
- *-tpf*)
- vendor=ibm
- ;;
- *-vxsim* | *-vxworks* | *-windiss*)
- vendor=wrs
- ;;
- *-aux*)
- vendor=apple
- ;;
- *-hms*)
- vendor=hitachi
- ;;
- *-mpw* | *-macos*)
- vendor=apple
- ;;
- *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
- vendor=atari
- ;;
- *-vos*)
- vendor=stratus
- ;;
- esac
- ;;
- esac
- echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
- exit
- # Local variables:
- # eval: (add-hook 'before-save-hook 'time-stamp)
- # time-stamp-start: "timestamp='"
- # time-stamp-format: "%:y-%02m-%02d"
- # time-stamp-end: "'"
- # End:
|