xref: /AOO42X/main/config.sub (revision 68bb4a9697036c5ce8f0164ac69d90d2195c53c0)
1cdf0e10cSrcweir#! /bin/sh
2cdf0e10cSrcweir# Configuration validation subroutine script.
3*68bb4a96Smseidel#   Copyright 1992-2024 Free Software Foundation, Inc.
4cdf0e10cSrcweir
5d7a033b7Smseidel# shellcheck disable=SC2006,SC2268 # see below for rationale
6d7a033b7Smseidel
7*68bb4a96Smseideltimestamp='2024-01-01'
8cdf0e10cSrcweir
9ee1eb700SMatthias Seidel# This file is free software; you can redistribute it and/or modify it
10ee1eb700SMatthias Seidel# under the terms of the GNU General Public License as published by
1159c94e95Smseidel# the Free Software Foundation, either version 3 of the License, or
12cdf0e10cSrcweir# (at your option) any later version.
13cdf0e10cSrcweir#
14ee1eb700SMatthias Seidel# This program is distributed in the hope that it will be useful, but
15ee1eb700SMatthias Seidel# WITHOUT ANY WARRANTY; without even the implied warranty of
16ee1eb700SMatthias Seidel# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17ee1eb700SMatthias Seidel# General Public License for more details.
18cdf0e10cSrcweir#
19cdf0e10cSrcweir# You should have received a copy of the GNU General Public License
20ee1eb700SMatthias Seidel# along with this program; if not, see <https://www.gnu.org/licenses/>.
21187b4248SPedro Giffuni#
22cdf0e10cSrcweir# As a special exception to the GNU General Public License, if you
23cdf0e10cSrcweir# distribute this file as part of a program that contains a
24cdf0e10cSrcweir# configuration script generated by Autoconf, you may include it under
25ee1eb700SMatthias Seidel# the same distribution terms that you use for the rest of that
26ee1eb700SMatthias Seidel# program.  This Exception is an additional permission under section 7
27ee1eb700SMatthias Seidel# of the GNU General Public License, version 3 ("GPLv3").
28cdf0e10cSrcweir
29187b4248SPedro Giffuni
30ee1eb700SMatthias Seidel# Please send patches to <config-patches@gnu.org>.
31cdf0e10cSrcweir#
32cdf0e10cSrcweir# Configuration subroutine to validate and canonicalize a configuration type.
33cdf0e10cSrcweir# Supply the specified configuration type as an argument.
34cdf0e10cSrcweir# If it is invalid, we print an error message on stderr and exit with code 1.
35cdf0e10cSrcweir# Otherwise, we print the canonical config type on stdout and succeed.
36cdf0e10cSrcweir
37187b4248SPedro Giffuni# You can get the latest version of this script from:
3868398e2cSmseidel# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39187b4248SPedro Giffuni
40cdf0e10cSrcweir# This file is supposed to be the same for all GNU packages
41cdf0e10cSrcweir# and recognize all the CPU types, system types and aliases
42cdf0e10cSrcweir# that are meaningful with *any* GNU software.
43cdf0e10cSrcweir# Each package is responsible for reporting which valid configurations
44cdf0e10cSrcweir# it does not support.  The user should be able to distinguish
45cdf0e10cSrcweir# a failure to support a valid configuration from a meaningless
46cdf0e10cSrcweir# configuration.
47cdf0e10cSrcweir
48cdf0e10cSrcweir# The goal of this file is to map all the various variations of a given
49cdf0e10cSrcweir# machine specification into a single specification in the form:
50cdf0e10cSrcweir#   CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51cdf0e10cSrcweir# or in some cases, the newer four-part form:
52cdf0e10cSrcweir#   CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53cdf0e10cSrcweir# It is wrong to echo any other type of specification.
54cdf0e10cSrcweir
55d7a033b7Smseidel# The "shellcheck disable" line above the timestamp inhibits complaints
56d7a033b7Smseidel# about features and limitations of the classic Bourne shell that were
57d7a033b7Smseidel# superseded or lifted in POSIX.  However, this script identifies a wide
58d7a033b7Smseidel# variety of pre-POSIX systems that do not have POSIX shells at all, and
59d7a033b7Smseidel# even some reasonably current systems (Solaris 10 as case-in-point) still
60d7a033b7Smseidel# have a pre-POSIX /bin/sh.
61d7a033b7Smseidel
62d7a033b7Smseidelme=`echo "$0" | sed -e 's,.*/,,'`
63cdf0e10cSrcweir
64cdf0e10cSrcweirusage="\
65ee1eb700SMatthias SeidelUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66cdf0e10cSrcweir
67cdf0e10cSrcweirCanonicalize a configuration name.
68cdf0e10cSrcweir
69ee1eb700SMatthias SeidelOptions:
70cdf0e10cSrcweir  -h, --help         print this help, then exit
71cdf0e10cSrcweir  -t, --time-stamp   print date of last modification, then exit
72cdf0e10cSrcweir  -v, --version      print version number, then exit
73cdf0e10cSrcweir
74cdf0e10cSrcweirReport bugs and patches to <config-patches@gnu.org>."
75cdf0e10cSrcweir
76cdf0e10cSrcweirversion="\
77cdf0e10cSrcweirGNU config.sub ($timestamp)
78cdf0e10cSrcweir
79*68bb4a96SmseidelCopyright 1992-2024 Free Software Foundation, Inc.
80cdf0e10cSrcweir
81cdf0e10cSrcweirThis is free software; see the source for copying conditions.  There is NO
82cdf0e10cSrcweirwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83cdf0e10cSrcweir
84cdf0e10cSrcweirhelp="
85*68bb4a96SmseidelTry '$me --help' for more information."
86cdf0e10cSrcweir
87cdf0e10cSrcweir# Parse command line
88cdf0e10cSrcweirwhile test $# -gt 0 ; do
89cdf0e10cSrcweir  case $1 in
90cdf0e10cSrcweir    --time-stamp | --time* | -t )
91187b4248SPedro Giffuni       echo "$timestamp" ; exit ;;
92cdf0e10cSrcweir    --version | -v )
93187b4248SPedro Giffuni       echo "$version" ; exit ;;
94cdf0e10cSrcweir    --help | --h* | -h )
95187b4248SPedro Giffuni       echo "$usage"; exit ;;
96cdf0e10cSrcweir    -- )     # Stop option processing
97cdf0e10cSrcweir       shift; break ;;
98cdf0e10cSrcweir    - ) # Use stdin as input.
99cdf0e10cSrcweir       break ;;
100cdf0e10cSrcweir    -* )
10182437902SMatthias Seidel       echo "$me: invalid option $1$help" >&2
102cdf0e10cSrcweir       exit 1 ;;
103cdf0e10cSrcweir
104cdf0e10cSrcweir    *local*)
105cdf0e10cSrcweir       # First pass through any local machine types.
1061a5d95c5SMatthias Seidel       echo "$1"
107187b4248SPedro Giffuni       exit ;;
108cdf0e10cSrcweir
109cdf0e10cSrcweir    * )
110cdf0e10cSrcweir       break ;;
111cdf0e10cSrcweir  esac
112cdf0e10cSrcweirdone
113cdf0e10cSrcweir
114cdf0e10cSrcweircase $# in
115cdf0e10cSrcweir 0) echo "$me: missing argument$help" >&2
116cdf0e10cSrcweir    exit 1;;
117cdf0e10cSrcweir 1) ;;
118cdf0e10cSrcweir *) echo "$me: too many arguments$help" >&2
119cdf0e10cSrcweir    exit 1;;
120cdf0e10cSrcweiresac
121cdf0e10cSrcweir
1221aeda8abSMatthias Seidel# Split fields of configuration type
12382437902SMatthias Seidel# shellcheck disable=SC2162
124d7a033b7Smseidelsaved_IFS=$IFS
12582437902SMatthias SeidelIFS="-" read field1 field2 field3 field4 <<EOF
1261aeda8abSMatthias Seidel$1
1271aeda8abSMatthias SeidelEOF
128d7a033b7SmseidelIFS=$saved_IFS
1291aeda8abSMatthias Seidel
1301aeda8abSMatthias Seidel# Separate into logical components for further validation
1311aeda8abSMatthias Seidelcase $1 in
1321aeda8abSMatthias Seidel    *-*-*-*-*)
133*68bb4a96Smseidel        echo "Invalid configuration '$1': more than four components" >&2
1341aeda8abSMatthias Seidel        exit 1
1351aeda8abSMatthias Seidel        ;;
1361aeda8abSMatthias Seidel    *-*-*-*)
1371aeda8abSMatthias Seidel        basic_machine=$field1-$field2
1384b6f5201Smseidel        basic_os=$field3-$field4
1391aeda8abSMatthias Seidel        ;;
1401aeda8abSMatthias Seidel    *-*-*)
1411aeda8abSMatthias Seidel        # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
1421aeda8abSMatthias Seidel        # parts
1431aeda8abSMatthias Seidel        maybe_os=$field2-$field3
144cdf0e10cSrcweir        case $maybe_os in
1454b6f5201Smseidel            nto-qnx* | linux-* | uclinux-uclibc* \
1461aeda8abSMatthias Seidel            | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
1471aeda8abSMatthias Seidel            | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148*68bb4a96Smseidel            | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
149*68bb4a96Smseidel            | windows-* )
1501aeda8abSMatthias Seidel                basic_machine=$field1
1514b6f5201Smseidel                basic_os=$maybe_os
152cdf0e10cSrcweir                ;;
153ee1eb700SMatthias Seidel            android-linux)
1541aeda8abSMatthias Seidel                basic_machine=$field1-unknown
1554b6f5201Smseidel                basic_os=linux-android
156ee1eb700SMatthias Seidel                ;;
157cdf0e10cSrcweir            *)
1581aeda8abSMatthias Seidel                basic_machine=$field1-$field2
1594b6f5201Smseidel                basic_os=$field3
1601aeda8abSMatthias Seidel                ;;
1611aeda8abSMatthias Seidel        esac
1621aeda8abSMatthias Seidel        ;;
1631aeda8abSMatthias Seidel    *-*)
16482437902SMatthias Seidel        # A lone config we happen to match not fitting any pattern
1651aeda8abSMatthias Seidel        case $field1-$field2 in
1661aeda8abSMatthias Seidel            decstation-3100)
1671aeda8abSMatthias Seidel                basic_machine=mips-dec
1684b6f5201Smseidel                basic_os=
1691aeda8abSMatthias Seidel                ;;
1701aeda8abSMatthias Seidel            *-*)
1711aeda8abSMatthias Seidel                # Second component is usually, but not always the OS
1721aeda8abSMatthias Seidel                case $field2 in
1731aeda8abSMatthias Seidel                    # Prevent following clause from handling this valid os
1741aeda8abSMatthias Seidel                    sun*os*)
1751aeda8abSMatthias Seidel                        basic_machine=$field1
1764b6f5201Smseidel                        basic_os=$field2
1771aeda8abSMatthias Seidel                        ;;
178d7a033b7Smseidel                    zephyr*)
179d7a033b7Smseidel                        basic_machine=$field1-unknown
180d7a033b7Smseidel                        basic_os=$field2
181d7a033b7Smseidel                        ;;
1821aeda8abSMatthias Seidel                    # Manufacturers
1831aeda8abSMatthias Seidel                    dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
1841aeda8abSMatthias Seidel                    | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
1851aeda8abSMatthias Seidel                    | unicom* | ibm* | next | hp | isi* | apollo | altos* \
1861aeda8abSMatthias Seidel                    | convergent* | ncr* | news | 32* | 3600* | 3100* \
1871aeda8abSMatthias Seidel                    | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
1881aeda8abSMatthias Seidel                    | ultra | tti* | harris | dolphin | highlevel | gould \
1891aeda8abSMatthias Seidel                    | cbm | ns | masscomp | apple | axis | knuth | cray \
1901aeda8abSMatthias Seidel                    | microblaze* | sim | cisco \
1911aeda8abSMatthias Seidel                    | oki | wec | wrs | winbond)
1921aeda8abSMatthias Seidel                        basic_machine=$field1-$field2
1934b6f5201Smseidel                        basic_os=
1941aeda8abSMatthias Seidel                        ;;
1951aeda8abSMatthias Seidel                    *)
1961aeda8abSMatthias Seidel                        basic_machine=$field1
1974b6f5201Smseidel                        basic_os=$field2
1981aeda8abSMatthias Seidel                        ;;
1991aeda8abSMatthias Seidel                esac
2001aeda8abSMatthias Seidel            ;;
2011aeda8abSMatthias Seidel        esac
2021aeda8abSMatthias Seidel        ;;
2031aeda8abSMatthias Seidel    *)
2041aeda8abSMatthias Seidel        # Convert single-component short-hands not valid as part of
2051aeda8abSMatthias Seidel        # multi-component configurations.
2061aeda8abSMatthias Seidel        case $field1 in
2071aeda8abSMatthias Seidel            386bsd)
2081aeda8abSMatthias Seidel                basic_machine=i386-pc
2094b6f5201Smseidel                basic_os=bsd
2101aeda8abSMatthias Seidel                ;;
2111aeda8abSMatthias Seidel            a29khif)
2121aeda8abSMatthias Seidel                basic_machine=a29k-amd
2134b6f5201Smseidel                basic_os=udi
2141aeda8abSMatthias Seidel                ;;
2151aeda8abSMatthias Seidel            adobe68k)
2161aeda8abSMatthias Seidel                basic_machine=m68010-adobe
2174b6f5201Smseidel                basic_os=scout
2181aeda8abSMatthias Seidel                ;;
2191aeda8abSMatthias Seidel            alliant)
2201aeda8abSMatthias Seidel                basic_machine=fx80-alliant
2214b6f5201Smseidel                basic_os=
2221aeda8abSMatthias Seidel                ;;
2231aeda8abSMatthias Seidel            altos | altos3068)
2241aeda8abSMatthias Seidel                basic_machine=m68k-altos
2254b6f5201Smseidel                basic_os=
2261aeda8abSMatthias Seidel                ;;
2271aeda8abSMatthias Seidel            am29k)
2281aeda8abSMatthias Seidel                basic_machine=a29k-none
2294b6f5201Smseidel                basic_os=bsd
2301aeda8abSMatthias Seidel                ;;
2311aeda8abSMatthias Seidel            amdahl)
2321aeda8abSMatthias Seidel                basic_machine=580-amdahl
2334b6f5201Smseidel                basic_os=sysv
2341aeda8abSMatthias Seidel                ;;
2351aeda8abSMatthias Seidel            amiga)
2361aeda8abSMatthias Seidel                basic_machine=m68k-unknown
2374b6f5201Smseidel                basic_os=
2381aeda8abSMatthias Seidel                ;;
2391aeda8abSMatthias Seidel            amigaos | amigados)
2401aeda8abSMatthias Seidel                basic_machine=m68k-unknown
2414b6f5201Smseidel                basic_os=amigaos
2421aeda8abSMatthias Seidel                ;;
2431aeda8abSMatthias Seidel            amigaunix | amix)
2441aeda8abSMatthias Seidel                basic_machine=m68k-unknown
2454b6f5201Smseidel                basic_os=sysv4
2461aeda8abSMatthias Seidel                ;;
2471aeda8abSMatthias Seidel            apollo68)
2481aeda8abSMatthias Seidel                basic_machine=m68k-apollo
2494b6f5201Smseidel                basic_os=sysv
2501aeda8abSMatthias Seidel                ;;
2511aeda8abSMatthias Seidel            apollo68bsd)
2521aeda8abSMatthias Seidel                basic_machine=m68k-apollo
2534b6f5201Smseidel                basic_os=bsd
2541aeda8abSMatthias Seidel                ;;
2551aeda8abSMatthias Seidel            aros)
2561aeda8abSMatthias Seidel                basic_machine=i386-pc
2574b6f5201Smseidel                basic_os=aros
2581aeda8abSMatthias Seidel                ;;
2591aeda8abSMatthias Seidel            aux)
2601aeda8abSMatthias Seidel                basic_machine=m68k-apple
2614b6f5201Smseidel                basic_os=aux
2621aeda8abSMatthias Seidel                ;;
2631aeda8abSMatthias Seidel            balance)
2641aeda8abSMatthias Seidel                basic_machine=ns32k-sequent
2654b6f5201Smseidel                basic_os=dynix
2661aeda8abSMatthias Seidel                ;;
2671aeda8abSMatthias Seidel            blackfin)
2681aeda8abSMatthias Seidel                basic_machine=bfin-unknown
2694b6f5201Smseidel                basic_os=linux
2701aeda8abSMatthias Seidel                ;;
2711aeda8abSMatthias Seidel            cegcc)
2721aeda8abSMatthias Seidel                basic_machine=arm-unknown
2734b6f5201Smseidel                basic_os=cegcc
2741aeda8abSMatthias Seidel                ;;
2751aeda8abSMatthias Seidel            convex-c1)
2761aeda8abSMatthias Seidel                basic_machine=c1-convex
2774b6f5201Smseidel                basic_os=bsd
2781aeda8abSMatthias Seidel                ;;
2791aeda8abSMatthias Seidel            convex-c2)
2801aeda8abSMatthias Seidel                basic_machine=c2-convex
2814b6f5201Smseidel                basic_os=bsd
2821aeda8abSMatthias Seidel                ;;
2831aeda8abSMatthias Seidel            convex-c32)
2841aeda8abSMatthias Seidel                basic_machine=c32-convex
2854b6f5201Smseidel                basic_os=bsd
2861aeda8abSMatthias Seidel                ;;
2871aeda8abSMatthias Seidel            convex-c34)
2881aeda8abSMatthias Seidel                basic_machine=c34-convex
2894b6f5201Smseidel                basic_os=bsd
2901aeda8abSMatthias Seidel                ;;
2911aeda8abSMatthias Seidel            convex-c38)
2921aeda8abSMatthias Seidel                basic_machine=c38-convex
2934b6f5201Smseidel                basic_os=bsd
2941aeda8abSMatthias Seidel                ;;
2951aeda8abSMatthias Seidel            cray)
2961aeda8abSMatthias Seidel                basic_machine=j90-cray
2974b6f5201Smseidel                basic_os=unicos
2981aeda8abSMatthias Seidel                ;;
2991aeda8abSMatthias Seidel            crds | unos)
3001aeda8abSMatthias Seidel                basic_machine=m68k-crds
3014b6f5201Smseidel                basic_os=
3021aeda8abSMatthias Seidel                ;;
3031aeda8abSMatthias Seidel            da30)
3041aeda8abSMatthias Seidel                basic_machine=m68k-da30
3054b6f5201Smseidel                basic_os=
3061aeda8abSMatthias Seidel                ;;
3071aeda8abSMatthias Seidel            decstation | pmax | pmin | dec3100 | decstatn)
3081aeda8abSMatthias Seidel                basic_machine=mips-dec
3094b6f5201Smseidel                basic_os=
3101aeda8abSMatthias Seidel                ;;
3111aeda8abSMatthias Seidel            delta88)
3121aeda8abSMatthias Seidel                basic_machine=m88k-motorola
3134b6f5201Smseidel                basic_os=sysv3
3141aeda8abSMatthias Seidel                ;;
3151aeda8abSMatthias Seidel            dicos)
3161aeda8abSMatthias Seidel                basic_machine=i686-pc
3174b6f5201Smseidel                basic_os=dicos
3181aeda8abSMatthias Seidel                ;;
3191aeda8abSMatthias Seidel            djgpp)
3201aeda8abSMatthias Seidel                basic_machine=i586-pc
3214b6f5201Smseidel                basic_os=msdosdjgpp
3221aeda8abSMatthias Seidel                ;;
3231aeda8abSMatthias Seidel            ebmon29k)
3241aeda8abSMatthias Seidel                basic_machine=a29k-amd
3254b6f5201Smseidel                basic_os=ebmon
3261aeda8abSMatthias Seidel                ;;
3271aeda8abSMatthias Seidel            es1800 | OSE68k | ose68k | ose | OSE)
3281aeda8abSMatthias Seidel                basic_machine=m68k-ericsson
3294b6f5201Smseidel                basic_os=ose
3301aeda8abSMatthias Seidel                ;;
3311aeda8abSMatthias Seidel            gmicro)
3321aeda8abSMatthias Seidel                basic_machine=tron-gmicro
3334b6f5201Smseidel                basic_os=sysv
3341aeda8abSMatthias Seidel                ;;
3351aeda8abSMatthias Seidel            go32)
3361aeda8abSMatthias Seidel                basic_machine=i386-pc
3374b6f5201Smseidel                basic_os=go32
3381aeda8abSMatthias Seidel                ;;
3391aeda8abSMatthias Seidel            h8300hms)
3401aeda8abSMatthias Seidel                basic_machine=h8300-hitachi
3414b6f5201Smseidel                basic_os=hms
3421aeda8abSMatthias Seidel                ;;
3431aeda8abSMatthias Seidel            h8300xray)
3441aeda8abSMatthias Seidel                basic_machine=h8300-hitachi
3454b6f5201Smseidel                basic_os=xray
3461aeda8abSMatthias Seidel                ;;
3471aeda8abSMatthias Seidel            h8500hms)
3481aeda8abSMatthias Seidel                basic_machine=h8500-hitachi
3494b6f5201Smseidel                basic_os=hms
3501aeda8abSMatthias Seidel                ;;
3511aeda8abSMatthias Seidel            harris)
3521aeda8abSMatthias Seidel                basic_machine=m88k-harris
3534b6f5201Smseidel                basic_os=sysv3
3541aeda8abSMatthias Seidel                ;;
355aa9f3106Smseidel            hp300 | hp300hpux)
3561aeda8abSMatthias Seidel                basic_machine=m68k-hp
3574b6f5201Smseidel                basic_os=hpux
3581aeda8abSMatthias Seidel                ;;
3591aeda8abSMatthias Seidel            hp300bsd)
3601aeda8abSMatthias Seidel                basic_machine=m68k-hp
3614b6f5201Smseidel                basic_os=bsd
3621aeda8abSMatthias Seidel                ;;
3631aeda8abSMatthias Seidel            hppaosf)
3641aeda8abSMatthias Seidel                basic_machine=hppa1.1-hp
3654b6f5201Smseidel                basic_os=osf
3661aeda8abSMatthias Seidel                ;;
3671aeda8abSMatthias Seidel            hppro)
3681aeda8abSMatthias Seidel                basic_machine=hppa1.1-hp
3694b6f5201Smseidel                basic_os=proelf
3701aeda8abSMatthias Seidel                ;;
3711aeda8abSMatthias Seidel            i386mach)
3721aeda8abSMatthias Seidel                basic_machine=i386-mach
3734b6f5201Smseidel                basic_os=mach
3741aeda8abSMatthias Seidel                ;;
3751aeda8abSMatthias Seidel            isi68 | isi)
3761aeda8abSMatthias Seidel                basic_machine=m68k-isi
3774b6f5201Smseidel                basic_os=sysv
3781aeda8abSMatthias Seidel                ;;
3791aeda8abSMatthias Seidel            m68knommu)
3801aeda8abSMatthias Seidel                basic_machine=m68k-unknown
3814b6f5201Smseidel                basic_os=linux
3821aeda8abSMatthias Seidel                ;;
3831aeda8abSMatthias Seidel            magnum | m3230)
3841aeda8abSMatthias Seidel                basic_machine=mips-mips
3854b6f5201Smseidel                basic_os=sysv
3861aeda8abSMatthias Seidel                ;;
3871aeda8abSMatthias Seidel            merlin)
3881aeda8abSMatthias Seidel                basic_machine=ns32k-utek
3894b6f5201Smseidel                basic_os=sysv
3901aeda8abSMatthias Seidel                ;;
3911aeda8abSMatthias Seidel            mingw64)
3921aeda8abSMatthias Seidel                basic_machine=x86_64-pc
3934b6f5201Smseidel                basic_os=mingw64
3941aeda8abSMatthias Seidel                ;;
3951aeda8abSMatthias Seidel            mingw32)
3961aeda8abSMatthias Seidel                basic_machine=i686-pc
3974b6f5201Smseidel                basic_os=mingw32
3981aeda8abSMatthias Seidel                ;;
3991aeda8abSMatthias Seidel            mingw32ce)
4001aeda8abSMatthias Seidel                basic_machine=arm-unknown
4014b6f5201Smseidel                basic_os=mingw32ce
4021aeda8abSMatthias Seidel                ;;
4031aeda8abSMatthias Seidel            monitor)
4041aeda8abSMatthias Seidel                basic_machine=m68k-rom68k
4054b6f5201Smseidel                basic_os=coff
4061aeda8abSMatthias Seidel                ;;
4071aeda8abSMatthias Seidel            morphos)
4081aeda8abSMatthias Seidel                basic_machine=powerpc-unknown
4094b6f5201Smseidel                basic_os=morphos
4101aeda8abSMatthias Seidel                ;;
4111aeda8abSMatthias Seidel            moxiebox)
4121aeda8abSMatthias Seidel                basic_machine=moxie-unknown
4134b6f5201Smseidel                basic_os=moxiebox
4141aeda8abSMatthias Seidel                ;;
4151aeda8abSMatthias Seidel            msdos)
4161aeda8abSMatthias Seidel                basic_machine=i386-pc
4174b6f5201Smseidel                basic_os=msdos
4181aeda8abSMatthias Seidel                ;;
4191aeda8abSMatthias Seidel            msys)
4201aeda8abSMatthias Seidel                basic_machine=i686-pc
4214b6f5201Smseidel                basic_os=msys
4221aeda8abSMatthias Seidel                ;;
4231aeda8abSMatthias Seidel            mvs)
4241aeda8abSMatthias Seidel                basic_machine=i370-ibm
4254b6f5201Smseidel                basic_os=mvs
4261aeda8abSMatthias Seidel                ;;
4271aeda8abSMatthias Seidel            nacl)
4281aeda8abSMatthias Seidel                basic_machine=le32-unknown
4294b6f5201Smseidel                basic_os=nacl
4301aeda8abSMatthias Seidel                ;;
4311aeda8abSMatthias Seidel            ncr3000)
4321aeda8abSMatthias Seidel                basic_machine=i486-ncr
4334b6f5201Smseidel                basic_os=sysv4
4341aeda8abSMatthias Seidel                ;;
4351aeda8abSMatthias Seidel            netbsd386)
4361aeda8abSMatthias Seidel                basic_machine=i386-pc
4374b6f5201Smseidel                basic_os=netbsd
4381aeda8abSMatthias Seidel                ;;
4391aeda8abSMatthias Seidel            netwinder)
4401aeda8abSMatthias Seidel                basic_machine=armv4l-rebel
4414b6f5201Smseidel                basic_os=linux
4421aeda8abSMatthias Seidel                ;;
4431aeda8abSMatthias Seidel            news | news700 | news800 | news900)
4441aeda8abSMatthias Seidel                basic_machine=m68k-sony
4454b6f5201Smseidel                basic_os=newsos
4461aeda8abSMatthias Seidel                ;;
4471aeda8abSMatthias Seidel            news1000)
4481aeda8abSMatthias Seidel                basic_machine=m68030-sony
4494b6f5201Smseidel                basic_os=newsos
4501aeda8abSMatthias Seidel                ;;
4511aeda8abSMatthias Seidel            necv70)
4521aeda8abSMatthias Seidel                basic_machine=v70-nec
4534b6f5201Smseidel                basic_os=sysv
4541aeda8abSMatthias Seidel                ;;
4551aeda8abSMatthias Seidel            nh3000)
4561aeda8abSMatthias Seidel                basic_machine=m68k-harris
4574b6f5201Smseidel                basic_os=cxux
4581aeda8abSMatthias Seidel                ;;
4591aeda8abSMatthias Seidel            nh[45]000)
4601aeda8abSMatthias Seidel                basic_machine=m88k-harris
4614b6f5201Smseidel                basic_os=cxux
4621aeda8abSMatthias Seidel                ;;
4631aeda8abSMatthias Seidel            nindy960)
4641aeda8abSMatthias Seidel                basic_machine=i960-intel
4654b6f5201Smseidel                basic_os=nindy
4661aeda8abSMatthias Seidel                ;;
4671aeda8abSMatthias Seidel            mon960)
4681aeda8abSMatthias Seidel                basic_machine=i960-intel
4694b6f5201Smseidel                basic_os=mon960
4701aeda8abSMatthias Seidel                ;;
4711aeda8abSMatthias Seidel            nonstopux)
4721aeda8abSMatthias Seidel                basic_machine=mips-compaq
4734b6f5201Smseidel                basic_os=nonstopux
4741aeda8abSMatthias Seidel                ;;
4751aeda8abSMatthias Seidel            os400)
4761aeda8abSMatthias Seidel                basic_machine=powerpc-ibm
4774b6f5201Smseidel                basic_os=os400
4781aeda8abSMatthias Seidel                ;;
4791aeda8abSMatthias Seidel            OSE68000 | ose68000)
4801aeda8abSMatthias Seidel                basic_machine=m68000-ericsson
4814b6f5201Smseidel                basic_os=ose
4821aeda8abSMatthias Seidel                ;;
4831aeda8abSMatthias Seidel            os68k)
4841aeda8abSMatthias Seidel                basic_machine=m68k-none
4854b6f5201Smseidel                basic_os=os68k
4861aeda8abSMatthias Seidel                ;;
4871aeda8abSMatthias Seidel            paragon)
4881aeda8abSMatthias Seidel                basic_machine=i860-intel
4894b6f5201Smseidel                basic_os=osf
4901aeda8abSMatthias Seidel                ;;
4911aeda8abSMatthias Seidel            parisc)
4921aeda8abSMatthias Seidel                basic_machine=hppa-unknown
4934b6f5201Smseidel                basic_os=linux
4944b6f5201Smseidel                ;;
4954b6f5201Smseidel            psp)
4964b6f5201Smseidel                basic_machine=mipsallegrexel-sony
4974b6f5201Smseidel                basic_os=psp
4981aeda8abSMatthias Seidel                ;;
4991aeda8abSMatthias Seidel            pw32)
5001aeda8abSMatthias Seidel                basic_machine=i586-unknown
5014b6f5201Smseidel                basic_os=pw32
5021aeda8abSMatthias Seidel                ;;
5031aeda8abSMatthias Seidel            rdos | rdos64)
5041aeda8abSMatthias Seidel                basic_machine=x86_64-pc
5054b6f5201Smseidel                basic_os=rdos
5061aeda8abSMatthias Seidel                ;;
5071aeda8abSMatthias Seidel            rdos32)
5081aeda8abSMatthias Seidel                basic_machine=i386-pc
5094b6f5201Smseidel                basic_os=rdos
5101aeda8abSMatthias Seidel                ;;
5111aeda8abSMatthias Seidel            rom68k)
5121aeda8abSMatthias Seidel                basic_machine=m68k-rom68k
5134b6f5201Smseidel                basic_os=coff
5141aeda8abSMatthias Seidel                ;;
5151aeda8abSMatthias Seidel            sa29200)
5161aeda8abSMatthias Seidel                basic_machine=a29k-amd
5174b6f5201Smseidel                basic_os=udi
5181aeda8abSMatthias Seidel                ;;
5191aeda8abSMatthias Seidel            sei)
5201aeda8abSMatthias Seidel                basic_machine=mips-sei
5214b6f5201Smseidel                basic_os=seiux
5221aeda8abSMatthias Seidel                ;;
5231aeda8abSMatthias Seidel            sequent)
5241aeda8abSMatthias Seidel                basic_machine=i386-sequent
5254b6f5201Smseidel                basic_os=
5261aeda8abSMatthias Seidel                ;;
5271aeda8abSMatthias Seidel            sps7)
5281aeda8abSMatthias Seidel                basic_machine=m68k-bull
5294b6f5201Smseidel                basic_os=sysv2
5301aeda8abSMatthias Seidel                ;;
5311aeda8abSMatthias Seidel            st2000)
5321aeda8abSMatthias Seidel                basic_machine=m68k-tandem
5334b6f5201Smseidel                basic_os=
5341aeda8abSMatthias Seidel                ;;
5351aeda8abSMatthias Seidel            stratus)
5361aeda8abSMatthias Seidel                basic_machine=i860-stratus
5374b6f5201Smseidel                basic_os=sysv4
5381aeda8abSMatthias Seidel                ;;
5391aeda8abSMatthias Seidel            sun2)
5401aeda8abSMatthias Seidel                basic_machine=m68000-sun
5414b6f5201Smseidel                basic_os=
5421aeda8abSMatthias Seidel                ;;
5431aeda8abSMatthias Seidel            sun2os3)
5441aeda8abSMatthias Seidel                basic_machine=m68000-sun
5454b6f5201Smseidel                basic_os=sunos3
5461aeda8abSMatthias Seidel                ;;
5471aeda8abSMatthias Seidel            sun2os4)
5481aeda8abSMatthias Seidel                basic_machine=m68000-sun
5494b6f5201Smseidel                basic_os=sunos4
5501aeda8abSMatthias Seidel                ;;
5511aeda8abSMatthias Seidel            sun3)
5521aeda8abSMatthias Seidel                basic_machine=m68k-sun
5534b6f5201Smseidel                basic_os=
5541aeda8abSMatthias Seidel                ;;
5551aeda8abSMatthias Seidel            sun3os3)
5561aeda8abSMatthias Seidel                basic_machine=m68k-sun
5574b6f5201Smseidel                basic_os=sunos3
5581aeda8abSMatthias Seidel                ;;
5591aeda8abSMatthias Seidel            sun3os4)
5601aeda8abSMatthias Seidel                basic_machine=m68k-sun
5614b6f5201Smseidel                basic_os=sunos4
5621aeda8abSMatthias Seidel                ;;
5631aeda8abSMatthias Seidel            sun4)
5641aeda8abSMatthias Seidel                basic_machine=sparc-sun
5654b6f5201Smseidel                basic_os=
5661aeda8abSMatthias Seidel                ;;
5671aeda8abSMatthias Seidel            sun4os3)
5681aeda8abSMatthias Seidel                basic_machine=sparc-sun
5694b6f5201Smseidel                basic_os=sunos3
5701aeda8abSMatthias Seidel                ;;
5711aeda8abSMatthias Seidel            sun4os4)
5721aeda8abSMatthias Seidel                basic_machine=sparc-sun
5734b6f5201Smseidel                basic_os=sunos4
5741aeda8abSMatthias Seidel                ;;
5751aeda8abSMatthias Seidel            sun4sol2)
5761aeda8abSMatthias Seidel                basic_machine=sparc-sun
5774b6f5201Smseidel                basic_os=solaris2
5781aeda8abSMatthias Seidel                ;;
5791aeda8abSMatthias Seidel            sun386 | sun386i | roadrunner)
5801aeda8abSMatthias Seidel                basic_machine=i386-sun
5814b6f5201Smseidel                basic_os=
5821aeda8abSMatthias Seidel                ;;
5831aeda8abSMatthias Seidel            sv1)
5841aeda8abSMatthias Seidel                basic_machine=sv1-cray
5854b6f5201Smseidel                basic_os=unicos
5861aeda8abSMatthias Seidel                ;;
5871aeda8abSMatthias Seidel            symmetry)
5881aeda8abSMatthias Seidel                basic_machine=i386-sequent
5894b6f5201Smseidel                basic_os=dynix
5901aeda8abSMatthias Seidel                ;;
5911aeda8abSMatthias Seidel            t3e)
5921aeda8abSMatthias Seidel                basic_machine=alphaev5-cray
5934b6f5201Smseidel                basic_os=unicos
5941aeda8abSMatthias Seidel                ;;
5951aeda8abSMatthias Seidel            t90)
5961aeda8abSMatthias Seidel                basic_machine=t90-cray
5974b6f5201Smseidel                basic_os=unicos
5981aeda8abSMatthias Seidel                ;;
5991aeda8abSMatthias Seidel            toad1)
6001aeda8abSMatthias Seidel                basic_machine=pdp10-xkl
6014b6f5201Smseidel                basic_os=tops20
6021aeda8abSMatthias Seidel                ;;
6031aeda8abSMatthias Seidel            tpf)
6041aeda8abSMatthias Seidel                basic_machine=s390x-ibm
6054b6f5201Smseidel                basic_os=tpf
6061aeda8abSMatthias Seidel                ;;
6071aeda8abSMatthias Seidel            udi29k)
6081aeda8abSMatthias Seidel                basic_machine=a29k-amd
6094b6f5201Smseidel                basic_os=udi
6101aeda8abSMatthias Seidel                ;;
6111aeda8abSMatthias Seidel            ultra3)
6121aeda8abSMatthias Seidel                basic_machine=a29k-nyu
6134b6f5201Smseidel                basic_os=sym1
6141aeda8abSMatthias Seidel                ;;
6151aeda8abSMatthias Seidel            v810 | necv810)
6161aeda8abSMatthias Seidel                basic_machine=v810-nec
6174b6f5201Smseidel                basic_os=none
6181aeda8abSMatthias Seidel                ;;
6191aeda8abSMatthias Seidel            vaxv)
6201aeda8abSMatthias Seidel                basic_machine=vax-dec
6214b6f5201Smseidel                basic_os=sysv
6221aeda8abSMatthias Seidel                ;;
6231aeda8abSMatthias Seidel            vms)
6241aeda8abSMatthias Seidel                basic_machine=vax-dec
6254b6f5201Smseidel                basic_os=vms
6261aeda8abSMatthias Seidel                ;;
627aa9f3106Smseidel            vsta)
628aa9f3106Smseidel                basic_machine=i386-pc
6294b6f5201Smseidel                basic_os=vsta
630aa9f3106Smseidel                ;;
6311aeda8abSMatthias Seidel            vxworks960)
6321aeda8abSMatthias Seidel                basic_machine=i960-wrs
6334b6f5201Smseidel                basic_os=vxworks
6341aeda8abSMatthias Seidel                ;;
6351aeda8abSMatthias Seidel            vxworks68)
6361aeda8abSMatthias Seidel                basic_machine=m68k-wrs
6374b6f5201Smseidel                basic_os=vxworks
6381aeda8abSMatthias Seidel                ;;
6391aeda8abSMatthias Seidel            vxworks29k)
6401aeda8abSMatthias Seidel                basic_machine=a29k-wrs
6414b6f5201Smseidel                basic_os=vxworks
6421aeda8abSMatthias Seidel                ;;
6431aeda8abSMatthias Seidel            xbox)
6441aeda8abSMatthias Seidel                basic_machine=i686-pc
6454b6f5201Smseidel                basic_os=mingw32
6461aeda8abSMatthias Seidel                ;;
6471aeda8abSMatthias Seidel            ymp)
6481aeda8abSMatthias Seidel                basic_machine=ymp-cray
6494b6f5201Smseidel                basic_os=unicos
6501aeda8abSMatthias Seidel                ;;
6511aeda8abSMatthias Seidel            *)
6521aeda8abSMatthias Seidel                basic_machine=$1
6534b6f5201Smseidel                basic_os=
6541aeda8abSMatthias Seidel                ;;
6551aeda8abSMatthias Seidel        esac
656cdf0e10cSrcweir        ;;
657cdf0e10cSrcweiresac
658cdf0e10cSrcweir
6591aeda8abSMatthias Seidel# Decode 1-component or ad-hoc basic machines
660cdf0e10cSrcweircase $basic_machine in
6611aeda8abSMatthias Seidel    # Here we handle the default manufacturer of certain CPU types.  It is in
6621aeda8abSMatthias Seidel    # some cases the only manufacturer, in others, it is the most popular.
6631aeda8abSMatthias Seidel    w89k)
6641aeda8abSMatthias Seidel        cpu=hppa1.1
6651aeda8abSMatthias Seidel        vendor=winbond
6661aeda8abSMatthias Seidel        ;;
6671aeda8abSMatthias Seidel    op50n)
6681aeda8abSMatthias Seidel        cpu=hppa1.1
6691aeda8abSMatthias Seidel        vendor=oki
6701aeda8abSMatthias Seidel        ;;
6711aeda8abSMatthias Seidel    op60c)
6721aeda8abSMatthias Seidel        cpu=hppa1.1
6731aeda8abSMatthias Seidel        vendor=oki
6741aeda8abSMatthias Seidel        ;;
6751aeda8abSMatthias Seidel    ibm*)
6761aeda8abSMatthias Seidel        cpu=i370
6771aeda8abSMatthias Seidel        vendor=ibm
6781aeda8abSMatthias Seidel        ;;
6791aeda8abSMatthias Seidel    orion105)
6801aeda8abSMatthias Seidel        cpu=clipper
6811aeda8abSMatthias Seidel        vendor=highlevel
6821aeda8abSMatthias Seidel        ;;
6831aeda8abSMatthias Seidel    mac | mpw | mac-mpw)
6841aeda8abSMatthias Seidel        cpu=m68k
6851aeda8abSMatthias Seidel        vendor=apple
6861aeda8abSMatthias Seidel        ;;
6871aeda8abSMatthias Seidel    pmac | pmac-mpw)
6881aeda8abSMatthias Seidel        cpu=powerpc
6891aeda8abSMatthias Seidel        vendor=apple
6901aeda8abSMatthias Seidel        ;;
6911aeda8abSMatthias Seidel
6921aeda8abSMatthias Seidel    # Recognize the various machine names and aliases which stand
6931aeda8abSMatthias Seidel    # for a CPU type and a company and sometimes even an OS.
6941aeda8abSMatthias Seidel    3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
6951aeda8abSMatthias Seidel        cpu=m68000
6961aeda8abSMatthias Seidel        vendor=att
6971aeda8abSMatthias Seidel        ;;
6981aeda8abSMatthias Seidel    3b*)
6991aeda8abSMatthias Seidel        cpu=we32k
7001aeda8abSMatthias Seidel        vendor=att
7011aeda8abSMatthias Seidel        ;;
7021aeda8abSMatthias Seidel    bluegene*)
7031aeda8abSMatthias Seidel        cpu=powerpc
7041aeda8abSMatthias Seidel        vendor=ibm
7054b6f5201Smseidel        basic_os=cnk
7061aeda8abSMatthias Seidel        ;;
7071aeda8abSMatthias Seidel    decsystem10* | dec10*)
7081aeda8abSMatthias Seidel        cpu=pdp10
7091aeda8abSMatthias Seidel        vendor=dec
7104b6f5201Smseidel        basic_os=tops10
7111aeda8abSMatthias Seidel        ;;
7121aeda8abSMatthias Seidel    decsystem20* | dec20*)
7131aeda8abSMatthias Seidel        cpu=pdp10
7141aeda8abSMatthias Seidel        vendor=dec
7154b6f5201Smseidel        basic_os=tops20
7161aeda8abSMatthias Seidel        ;;
7171aeda8abSMatthias Seidel    delta | 3300 | motorola-3300 | motorola-delta \
7181aeda8abSMatthias Seidel          | 3300-motorola | delta-motorola)
7191aeda8abSMatthias Seidel        cpu=m68k
7201aeda8abSMatthias Seidel        vendor=motorola
7211aeda8abSMatthias Seidel        ;;
7221aeda8abSMatthias Seidel    dpx2*)
7231aeda8abSMatthias Seidel        cpu=m68k
7241aeda8abSMatthias Seidel        vendor=bull
7254b6f5201Smseidel        basic_os=sysv3
7261aeda8abSMatthias Seidel        ;;
7271aeda8abSMatthias Seidel    encore | umax | mmax)
7281aeda8abSMatthias Seidel        cpu=ns32k
7291aeda8abSMatthias Seidel        vendor=encore
7301aeda8abSMatthias Seidel        ;;
7311aeda8abSMatthias Seidel    elxsi)
7321aeda8abSMatthias Seidel        cpu=elxsi
7331aeda8abSMatthias Seidel        vendor=elxsi
7344b6f5201Smseidel        basic_os=${basic_os:-bsd}
7351aeda8abSMatthias Seidel        ;;
7361aeda8abSMatthias Seidel    fx2800)
7371aeda8abSMatthias Seidel        cpu=i860
7381aeda8abSMatthias Seidel        vendor=alliant
7391aeda8abSMatthias Seidel        ;;
7401aeda8abSMatthias Seidel    genix)
7411aeda8abSMatthias Seidel        cpu=ns32k
7421aeda8abSMatthias Seidel        vendor=ns
7431aeda8abSMatthias Seidel        ;;
7441aeda8abSMatthias Seidel    h3050r* | hiux*)
7451aeda8abSMatthias Seidel        cpu=hppa1.1
7461aeda8abSMatthias Seidel        vendor=hitachi
7474b6f5201Smseidel        basic_os=hiuxwe2
7481aeda8abSMatthias Seidel        ;;
7491aeda8abSMatthias Seidel    hp3k9[0-9][0-9] | hp9[0-9][0-9])
7501aeda8abSMatthias Seidel        cpu=hppa1.0
7511aeda8abSMatthias Seidel        vendor=hp
7521aeda8abSMatthias Seidel        ;;
7531aeda8abSMatthias Seidel    hp9k2[0-9][0-9] | hp9k31[0-9])
7541aeda8abSMatthias Seidel        cpu=m68000
7551aeda8abSMatthias Seidel        vendor=hp
7561aeda8abSMatthias Seidel        ;;
7571aeda8abSMatthias Seidel    hp9k3[2-9][0-9])
7581aeda8abSMatthias Seidel        cpu=m68k
7591aeda8abSMatthias Seidel        vendor=hp
7601aeda8abSMatthias Seidel        ;;
7611aeda8abSMatthias Seidel    hp9k6[0-9][0-9] | hp6[0-9][0-9])
7621aeda8abSMatthias Seidel        cpu=hppa1.0
7631aeda8abSMatthias Seidel        vendor=hp
7641aeda8abSMatthias Seidel        ;;
7651aeda8abSMatthias Seidel    hp9k7[0-79][0-9] | hp7[0-79][0-9])
7661aeda8abSMatthias Seidel        cpu=hppa1.1
7671aeda8abSMatthias Seidel        vendor=hp
7681aeda8abSMatthias Seidel        ;;
7691aeda8abSMatthias Seidel    hp9k78[0-9] | hp78[0-9])
7701aeda8abSMatthias Seidel        # FIXME: really hppa2.0-hp
7711aeda8abSMatthias Seidel        cpu=hppa1.1
7721aeda8abSMatthias Seidel        vendor=hp
7731aeda8abSMatthias Seidel        ;;
7741aeda8abSMatthias Seidel    hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
7751aeda8abSMatthias Seidel        # FIXME: really hppa2.0-hp
7761aeda8abSMatthias Seidel        cpu=hppa1.1
7771aeda8abSMatthias Seidel        vendor=hp
7781aeda8abSMatthias Seidel        ;;
7791aeda8abSMatthias Seidel    hp9k8[0-9][13679] | hp8[0-9][13679])
7801aeda8abSMatthias Seidel        cpu=hppa1.1
7811aeda8abSMatthias Seidel        vendor=hp
7821aeda8abSMatthias Seidel        ;;
7831aeda8abSMatthias Seidel    hp9k8[0-9][0-9] | hp8[0-9][0-9])
7841aeda8abSMatthias Seidel        cpu=hppa1.0
7851aeda8abSMatthias Seidel        vendor=hp
7861aeda8abSMatthias Seidel        ;;
7871aeda8abSMatthias Seidel    i*86v32)
788d7a033b7Smseidel        cpu=`echo "$1" | sed -e 's/86.*/86/'`
7891aeda8abSMatthias Seidel        vendor=pc
7904b6f5201Smseidel        basic_os=sysv32
7911aeda8abSMatthias Seidel        ;;
7921aeda8abSMatthias Seidel    i*86v4*)
793d7a033b7Smseidel        cpu=`echo "$1" | sed -e 's/86.*/86/'`
7941aeda8abSMatthias Seidel        vendor=pc
7954b6f5201Smseidel        basic_os=sysv4
7961aeda8abSMatthias Seidel        ;;
7971aeda8abSMatthias Seidel    i*86v)
798d7a033b7Smseidel        cpu=`echo "$1" | sed -e 's/86.*/86/'`
7991aeda8abSMatthias Seidel        vendor=pc
8004b6f5201Smseidel        basic_os=sysv
8011aeda8abSMatthias Seidel        ;;
8021aeda8abSMatthias Seidel    i*86sol2)
803d7a033b7Smseidel        cpu=`echo "$1" | sed -e 's/86.*/86/'`
8041aeda8abSMatthias Seidel        vendor=pc
8054b6f5201Smseidel        basic_os=solaris2
8061aeda8abSMatthias Seidel        ;;
8071aeda8abSMatthias Seidel    j90 | j90-cray)
8081aeda8abSMatthias Seidel        cpu=j90
8091aeda8abSMatthias Seidel        vendor=cray
8104b6f5201Smseidel        basic_os=${basic_os:-unicos}
8111aeda8abSMatthias Seidel        ;;
8121aeda8abSMatthias Seidel    iris | iris4d)
8131aeda8abSMatthias Seidel        cpu=mips
8141aeda8abSMatthias Seidel        vendor=sgi
8154b6f5201Smseidel        case $basic_os in
8161aeda8abSMatthias Seidel            irix*)
8171aeda8abSMatthias Seidel            ;;
8181aeda8abSMatthias Seidel            *)
8194b6f5201Smseidel            basic_os=irix4
8201aeda8abSMatthias Seidel            ;;
8211aeda8abSMatthias Seidel        esac
8221aeda8abSMatthias Seidel        ;;
8231aeda8abSMatthias Seidel    miniframe)
8241aeda8abSMatthias Seidel        cpu=m68000
8251aeda8abSMatthias Seidel        vendor=convergent
8261aeda8abSMatthias Seidel        ;;
8271aeda8abSMatthias Seidel    *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
8281aeda8abSMatthias Seidel        cpu=m68k
8291aeda8abSMatthias Seidel        vendor=atari
8304b6f5201Smseidel        basic_os=mint
8311aeda8abSMatthias Seidel        ;;
8321aeda8abSMatthias Seidel    news-3600 | risc-news)
8331aeda8abSMatthias Seidel        cpu=mips
8341aeda8abSMatthias Seidel        vendor=sony
8354b6f5201Smseidel        basic_os=newsos
8361aeda8abSMatthias Seidel        ;;
8371aeda8abSMatthias Seidel    next | m*-next)
8381aeda8abSMatthias Seidel        cpu=m68k
8391aeda8abSMatthias Seidel        vendor=next
8404b6f5201Smseidel        case $basic_os in
84182437902SMatthias Seidel            openstep*)
84282437902SMatthias Seidel                ;;
8431aeda8abSMatthias Seidel            nextstep*)
8441aeda8abSMatthias Seidel            ;;
8451aeda8abSMatthias Seidel            ns2*)
8464b6f5201Smseidel              basic_os=nextstep2
8471aeda8abSMatthias Seidel            ;;
8481aeda8abSMatthias Seidel            *)
8494b6f5201Smseidel              basic_os=nextstep3
8501aeda8abSMatthias Seidel            ;;
8511aeda8abSMatthias Seidel        esac
8521aeda8abSMatthias Seidel        ;;
8531aeda8abSMatthias Seidel    np1)
8541aeda8abSMatthias Seidel        cpu=np1
8551aeda8abSMatthias Seidel        vendor=gould
8561aeda8abSMatthias Seidel        ;;
8571aeda8abSMatthias Seidel    op50n-* | op60c-*)
8581aeda8abSMatthias Seidel        cpu=hppa1.1
8591aeda8abSMatthias Seidel        vendor=oki
8604b6f5201Smseidel        basic_os=proelf
8611aeda8abSMatthias Seidel        ;;
8621aeda8abSMatthias Seidel    pa-hitachi)
8631aeda8abSMatthias Seidel        cpu=hppa1.1
8641aeda8abSMatthias Seidel        vendor=hitachi
8654b6f5201Smseidel        basic_os=hiuxwe2
8661aeda8abSMatthias Seidel        ;;
8671aeda8abSMatthias Seidel    pbd)
8681aeda8abSMatthias Seidel        cpu=sparc
8691aeda8abSMatthias Seidel        vendor=tti
8701aeda8abSMatthias Seidel        ;;
8711aeda8abSMatthias Seidel    pbb)
8721aeda8abSMatthias Seidel        cpu=m68k
8731aeda8abSMatthias Seidel        vendor=tti
8741aeda8abSMatthias Seidel        ;;
8751aeda8abSMatthias Seidel    pc532)
8761aeda8abSMatthias Seidel        cpu=ns32k
8771aeda8abSMatthias Seidel        vendor=pc532
8781aeda8abSMatthias Seidel        ;;
8791aeda8abSMatthias Seidel    pn)
8801aeda8abSMatthias Seidel        cpu=pn
8811aeda8abSMatthias Seidel        vendor=gould
8821aeda8abSMatthias Seidel        ;;
8831aeda8abSMatthias Seidel    power)
8841aeda8abSMatthias Seidel        cpu=power
8851aeda8abSMatthias Seidel        vendor=ibm
8861aeda8abSMatthias Seidel        ;;
8871aeda8abSMatthias Seidel    ps2)
8881aeda8abSMatthias Seidel        cpu=i386
8891aeda8abSMatthias Seidel        vendor=ibm
8901aeda8abSMatthias Seidel        ;;
8911aeda8abSMatthias Seidel    rm[46]00)
8921aeda8abSMatthias Seidel        cpu=mips
8931aeda8abSMatthias Seidel        vendor=siemens
8941aeda8abSMatthias Seidel        ;;
8951aeda8abSMatthias Seidel    rtpc | rtpc-*)
8961aeda8abSMatthias Seidel        cpu=romp
8971aeda8abSMatthias Seidel        vendor=ibm
8981aeda8abSMatthias Seidel        ;;
8991aeda8abSMatthias Seidel    sde)
9001aeda8abSMatthias Seidel        cpu=mipsisa32
9011aeda8abSMatthias Seidel        vendor=sde
9024b6f5201Smseidel        basic_os=${basic_os:-elf}
9031aeda8abSMatthias Seidel        ;;
9041aeda8abSMatthias Seidel    simso-wrs)
9051aeda8abSMatthias Seidel        cpu=sparclite
9061aeda8abSMatthias Seidel        vendor=wrs
9074b6f5201Smseidel        basic_os=vxworks
9081aeda8abSMatthias Seidel        ;;
9091aeda8abSMatthias Seidel    tower | tower-32)
9101aeda8abSMatthias Seidel        cpu=m68k
9111aeda8abSMatthias Seidel        vendor=ncr
9121aeda8abSMatthias Seidel        ;;
9131aeda8abSMatthias Seidel    vpp*|vx|vx-*)
9141aeda8abSMatthias Seidel        cpu=f301
9151aeda8abSMatthias Seidel        vendor=fujitsu
9161aeda8abSMatthias Seidel        ;;
9171aeda8abSMatthias Seidel    w65)
9181aeda8abSMatthias Seidel        cpu=w65
9191aeda8abSMatthias Seidel        vendor=wdc
9201aeda8abSMatthias Seidel        ;;
9211aeda8abSMatthias Seidel    w89k-*)
9221aeda8abSMatthias Seidel        cpu=hppa1.1
9231aeda8abSMatthias Seidel        vendor=winbond
9244b6f5201Smseidel        basic_os=proelf
9251aeda8abSMatthias Seidel        ;;
9261aeda8abSMatthias Seidel    none)
9271aeda8abSMatthias Seidel        cpu=none
9281aeda8abSMatthias Seidel        vendor=none
9291aeda8abSMatthias Seidel        ;;
9301aeda8abSMatthias Seidel    leon|leon[3-9])
9311aeda8abSMatthias Seidel        cpu=sparc
9321aeda8abSMatthias Seidel        vendor=$basic_machine
9331aeda8abSMatthias Seidel        ;;
9341aeda8abSMatthias Seidel    leon-*|leon[3-9]-*)
9351aeda8abSMatthias Seidel        cpu=sparc
936d7a033b7Smseidel        vendor=`echo "$basic_machine" | sed 's/-.*//'`
9371aeda8abSMatthias Seidel        ;;
9381aeda8abSMatthias Seidel
9391aeda8abSMatthias Seidel    *-*)
94082437902SMatthias Seidel        # shellcheck disable=SC2162
941d7a033b7Smseidel        saved_IFS=$IFS
94282437902SMatthias Seidel        IFS="-" read cpu vendor <<EOF
9431aeda8abSMatthias Seidel$basic_machine
9441aeda8abSMatthias SeidelEOF
945d7a033b7Smseidel        IFS=$saved_IFS
9461aeda8abSMatthias Seidel        ;;
947*68bb4a96Smseidel    # We use 'pc' rather than 'unknown'
9481aeda8abSMatthias Seidel    # because (1) that's what they normally are, and
9491aeda8abSMatthias Seidel    # (2) the word "unknown" tends to confuse beginning users.
9501aeda8abSMatthias Seidel    i*86 | x86_64)
9511aeda8abSMatthias Seidel        cpu=$basic_machine
9521aeda8abSMatthias Seidel        vendor=pc
9531aeda8abSMatthias Seidel        ;;
9541aeda8abSMatthias Seidel    # These rules are duplicated from below for sake of the special case above;
9551aeda8abSMatthias Seidel    # i.e. things that normalized to x86 arches should also default to "pc"
9561aeda8abSMatthias Seidel    pc98)
9571aeda8abSMatthias Seidel        cpu=i386
9581aeda8abSMatthias Seidel        vendor=pc
9591aeda8abSMatthias Seidel        ;;
9601aeda8abSMatthias Seidel    x64 | amd64)
9611aeda8abSMatthias Seidel        cpu=x86_64
9621aeda8abSMatthias Seidel        vendor=pc
9631aeda8abSMatthias Seidel        ;;
964cdf0e10cSrcweir    # Recognize the basic CPU types without company name.
9651aeda8abSMatthias Seidel    *)
9661aeda8abSMatthias Seidel        cpu=$basic_machine
9671aeda8abSMatthias Seidel        vendor=unknown
9681aeda8abSMatthias Seidel        ;;
9691aeda8abSMatthias Seidelesac
9701aeda8abSMatthias Seidel
9711aeda8abSMatthias Seidelunset -v basic_machine
9721aeda8abSMatthias Seidel
9731aeda8abSMatthias Seidel# Decode basic machines in the full and proper CPU-Company form.
9741aeda8abSMatthias Seidelcase $cpu-$vendor in
97582437902SMatthias Seidel    # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
9761aeda8abSMatthias Seidel    # some cases the only manufacturer, in others, it is the most popular.
9771aeda8abSMatthias Seidel    craynv-unknown)
9781aeda8abSMatthias Seidel        vendor=cray
9794b6f5201Smseidel        basic_os=${basic_os:-unicosmp}
9801aeda8abSMatthias Seidel        ;;
9811aeda8abSMatthias Seidel    c90-unknown | c90-cray)
9821aeda8abSMatthias Seidel        vendor=cray
9834b6f5201Smseidel        basic_os=${Basic_os:-unicos}
9841aeda8abSMatthias Seidel        ;;
9851aeda8abSMatthias Seidel    fx80-unknown)
9861aeda8abSMatthias Seidel        vendor=alliant
9871aeda8abSMatthias Seidel        ;;
9881aeda8abSMatthias Seidel    romp-unknown)
9891aeda8abSMatthias Seidel        vendor=ibm
9901aeda8abSMatthias Seidel        ;;
9911aeda8abSMatthias Seidel    mmix-unknown)
9921aeda8abSMatthias Seidel        vendor=knuth
9931aeda8abSMatthias Seidel        ;;
9941aeda8abSMatthias Seidel    microblaze-unknown | microblazeel-unknown)
9951aeda8abSMatthias Seidel        vendor=xilinx
9961aeda8abSMatthias Seidel        ;;
9971aeda8abSMatthias Seidel    rs6000-unknown)
9981aeda8abSMatthias Seidel        vendor=ibm
9991aeda8abSMatthias Seidel        ;;
10001aeda8abSMatthias Seidel    vax-unknown)
10011aeda8abSMatthias Seidel        vendor=dec
10021aeda8abSMatthias Seidel        ;;
10031aeda8abSMatthias Seidel    pdp11-unknown)
10041aeda8abSMatthias Seidel        vendor=dec
10051aeda8abSMatthias Seidel        ;;
10061aeda8abSMatthias Seidel    we32k-unknown)
10071aeda8abSMatthias Seidel        vendor=att
10081aeda8abSMatthias Seidel        ;;
10091aeda8abSMatthias Seidel    cydra-unknown)
10101aeda8abSMatthias Seidel        vendor=cydrome
10111aeda8abSMatthias Seidel        ;;
10121aeda8abSMatthias Seidel    i370-ibm*)
10131aeda8abSMatthias Seidel        vendor=ibm
10141aeda8abSMatthias Seidel        ;;
10151aeda8abSMatthias Seidel    orion-unknown)
10161aeda8abSMatthias Seidel        vendor=highlevel
10171aeda8abSMatthias Seidel        ;;
10181aeda8abSMatthias Seidel    xps-unknown | xps100-unknown)
10191aeda8abSMatthias Seidel        cpu=xps100
10201aeda8abSMatthias Seidel        vendor=honeywell
10211aeda8abSMatthias Seidel        ;;
10221aeda8abSMatthias Seidel
10231aeda8abSMatthias Seidel    # Here we normalize CPU types with a missing or matching vendor
1024d7a033b7Smseidel    armh-unknown | armh-alt)
1025d7a033b7Smseidel        cpu=armv7l
1026d7a033b7Smseidel        vendor=alt
1027d7a033b7Smseidel        basic_os=${basic_os:-linux-gnueabihf}
1028d7a033b7Smseidel        ;;
10291aeda8abSMatthias Seidel    dpx20-unknown | dpx20-bull)
10301aeda8abSMatthias Seidel        cpu=rs6000
10311aeda8abSMatthias Seidel        vendor=bull
10324b6f5201Smseidel        basic_os=${basic_os:-bosx}
10331aeda8abSMatthias Seidel        ;;
10341aeda8abSMatthias Seidel
10351aeda8abSMatthias Seidel    # Here we normalize CPU types irrespective of the vendor
10361aeda8abSMatthias Seidel    amd64-*)
10371aeda8abSMatthias Seidel        cpu=x86_64
10381aeda8abSMatthias Seidel        ;;
10391aeda8abSMatthias Seidel    blackfin-*)
10401aeda8abSMatthias Seidel        cpu=bfin
10414b6f5201Smseidel        basic_os=linux
10421aeda8abSMatthias Seidel        ;;
10431aeda8abSMatthias Seidel    c54x-*)
10441aeda8abSMatthias Seidel        cpu=tic54x
10451aeda8abSMatthias Seidel        ;;
10461aeda8abSMatthias Seidel    c55x-*)
10471aeda8abSMatthias Seidel        cpu=tic55x
10481aeda8abSMatthias Seidel        ;;
10491aeda8abSMatthias Seidel    c6x-*)
10501aeda8abSMatthias Seidel        cpu=tic6x
10511aeda8abSMatthias Seidel        ;;
10521aeda8abSMatthias Seidel    e500v[12]-*)
10531aeda8abSMatthias Seidel        cpu=powerpc
10544b6f5201Smseidel        basic_os=${basic_os}"spe"
10551aeda8abSMatthias Seidel        ;;
10561aeda8abSMatthias Seidel    mips3*-*)
10571aeda8abSMatthias Seidel        cpu=mips64
10581aeda8abSMatthias Seidel        ;;
10591aeda8abSMatthias Seidel    ms1-*)
10601aeda8abSMatthias Seidel        cpu=mt
10611aeda8abSMatthias Seidel        ;;
10621aeda8abSMatthias Seidel    m68knommu-*)
10631aeda8abSMatthias Seidel        cpu=m68k
10644b6f5201Smseidel        basic_os=linux
10651aeda8abSMatthias Seidel        ;;
10661aeda8abSMatthias Seidel    m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
10671aeda8abSMatthias Seidel        cpu=s12z
10681aeda8abSMatthias Seidel        ;;
10691aeda8abSMatthias Seidel    openrisc-*)
10701aeda8abSMatthias Seidel        cpu=or32
10711aeda8abSMatthias Seidel        ;;
10721aeda8abSMatthias Seidel    parisc-*)
10731aeda8abSMatthias Seidel        cpu=hppa
10744b6f5201Smseidel        basic_os=linux
10751aeda8abSMatthias Seidel        ;;
10761aeda8abSMatthias Seidel    pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
10771aeda8abSMatthias Seidel        cpu=i586
10781aeda8abSMatthias Seidel        ;;
1079*68bb4a96Smseidel    pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
10801aeda8abSMatthias Seidel        cpu=i686
10811aeda8abSMatthias Seidel        ;;
10821aeda8abSMatthias Seidel    pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
10831aeda8abSMatthias Seidel        cpu=i686
10841aeda8abSMatthias Seidel        ;;
10851aeda8abSMatthias Seidel    pentium4-*)
10861aeda8abSMatthias Seidel        cpu=i786
10871aeda8abSMatthias Seidel        ;;
10881aeda8abSMatthias Seidel    pc98-*)
10891aeda8abSMatthias Seidel        cpu=i386
10901aeda8abSMatthias Seidel        ;;
10911aeda8abSMatthias Seidel    ppc-* | ppcbe-*)
10921aeda8abSMatthias Seidel        cpu=powerpc
10931aeda8abSMatthias Seidel        ;;
10941aeda8abSMatthias Seidel    ppcle-* | powerpclittle-*)
10951aeda8abSMatthias Seidel        cpu=powerpcle
10961aeda8abSMatthias Seidel        ;;
10971aeda8abSMatthias Seidel    ppc64-*)
10981aeda8abSMatthias Seidel        cpu=powerpc64
10991aeda8abSMatthias Seidel        ;;
11001aeda8abSMatthias Seidel    ppc64le-* | powerpc64little-*)
11011aeda8abSMatthias Seidel        cpu=powerpc64le
11021aeda8abSMatthias Seidel        ;;
11031aeda8abSMatthias Seidel    sb1-*)
11041aeda8abSMatthias Seidel        cpu=mipsisa64sb1
11051aeda8abSMatthias Seidel        ;;
11061aeda8abSMatthias Seidel    sb1el-*)
11071aeda8abSMatthias Seidel        cpu=mipsisa64sb1el
11081aeda8abSMatthias Seidel        ;;
11091aeda8abSMatthias Seidel    sh5e[lb]-*)
1110d7a033b7Smseidel        cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
11111aeda8abSMatthias Seidel        ;;
11121aeda8abSMatthias Seidel    spur-*)
11131aeda8abSMatthias Seidel        cpu=spur
11141aeda8abSMatthias Seidel        ;;
11151aeda8abSMatthias Seidel    strongarm-* | thumb-*)
11161aeda8abSMatthias Seidel        cpu=arm
11171aeda8abSMatthias Seidel        ;;
11181aeda8abSMatthias Seidel    tx39-*)
11191aeda8abSMatthias Seidel        cpu=mipstx39
11201aeda8abSMatthias Seidel        ;;
11211aeda8abSMatthias Seidel    tx39el-*)
11221aeda8abSMatthias Seidel        cpu=mipstx39el
11231aeda8abSMatthias Seidel        ;;
11241aeda8abSMatthias Seidel    x64-*)
11251aeda8abSMatthias Seidel        cpu=x86_64
11261aeda8abSMatthias Seidel        ;;
11271aeda8abSMatthias Seidel    xscale-* | xscalee[bl]-*)
1128d7a033b7Smseidel        cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
11291aeda8abSMatthias Seidel        ;;
1130d7a033b7Smseidel    arm64-* | aarch64le-*)
11314b6f5201Smseidel        cpu=aarch64
11324b6f5201Smseidel        ;;
11331aeda8abSMatthias Seidel
113482437902SMatthias Seidel    # Recognize the canonical CPU Types that limit and/or modify the
11351aeda8abSMatthias Seidel    # company names they are paired with.
11361aeda8abSMatthias Seidel    cr16-*)
11374b6f5201Smseidel        basic_os=${basic_os:-elf}
11381aeda8abSMatthias Seidel        ;;
11391aeda8abSMatthias Seidel    crisv32-* | etraxfs*-*)
11401aeda8abSMatthias Seidel        cpu=crisv32
11411aeda8abSMatthias Seidel        vendor=axis
11421aeda8abSMatthias Seidel        ;;
11431aeda8abSMatthias Seidel    cris-* | etrax*-*)
11441aeda8abSMatthias Seidel        cpu=cris
11451aeda8abSMatthias Seidel        vendor=axis
11461aeda8abSMatthias Seidel        ;;
11471aeda8abSMatthias Seidel    crx-*)
11484b6f5201Smseidel        basic_os=${basic_os:-elf}
11491aeda8abSMatthias Seidel        ;;
11501aeda8abSMatthias Seidel    neo-tandem)
11511aeda8abSMatthias Seidel        cpu=neo
11521aeda8abSMatthias Seidel        vendor=tandem
11531aeda8abSMatthias Seidel        ;;
11541aeda8abSMatthias Seidel    nse-tandem)
11551aeda8abSMatthias Seidel        cpu=nse
11561aeda8abSMatthias Seidel        vendor=tandem
11571aeda8abSMatthias Seidel        ;;
11581aeda8abSMatthias Seidel    nsr-tandem)
11591aeda8abSMatthias Seidel        cpu=nsr
11601aeda8abSMatthias Seidel        vendor=tandem
11611aeda8abSMatthias Seidel        ;;
11621aeda8abSMatthias Seidel    nsv-tandem)
11631aeda8abSMatthias Seidel        cpu=nsv
11641aeda8abSMatthias Seidel        vendor=tandem
11651aeda8abSMatthias Seidel        ;;
11661aeda8abSMatthias Seidel    nsx-tandem)
11671aeda8abSMatthias Seidel        cpu=nsx
11681aeda8abSMatthias Seidel        vendor=tandem
11691aeda8abSMatthias Seidel        ;;
11704b6f5201Smseidel    mipsallegrexel-sony)
11714b6f5201Smseidel        cpu=mipsallegrexel
11724b6f5201Smseidel        vendor=sony
11731aeda8abSMatthias Seidel        ;;
11741aeda8abSMatthias Seidel    tile*-*)
11754b6f5201Smseidel        basic_os=${basic_os:-linux-gnu}
11761aeda8abSMatthias Seidel        ;;
11771aeda8abSMatthias Seidel
11781aeda8abSMatthias Seidel    *)
117982437902SMatthias Seidel        # Recognize the canonical CPU types that are allowed with any
11801aeda8abSMatthias Seidel        # company name.
11811aeda8abSMatthias Seidel        case $cpu in
1182cdf0e10cSrcweir            1750a | 580 \
1183cdf0e10cSrcweir            | a29k \
1184*68bb4a96Smseidel            | aarch64 | aarch64_be | aarch64c | arm64ec \
11851aeda8abSMatthias Seidel            | abacus \
11861aeda8abSMatthias Seidel            | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
11871aeda8abSMatthias Seidel            | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
11881aeda8abSMatthias Seidel            | alphapca5[67] | alpha64pca5[67] \
1189187b4248SPedro Giffuni            | am33_2.0 \
119082437902SMatthias Seidel            | amdgcn \
1191d7a033b7Smseidel            | arc | arceb | arc32 | arc64 \
11921aeda8abSMatthias Seidel            | arm | arm[lb]e | arme[lb] | armv* \
1193ee1eb700SMatthias Seidel            | avr | avr32 \
11941aeda8abSMatthias Seidel            | asmjs \
1195ee1eb700SMatthias Seidel            | ba \
1196ee1eb700SMatthias Seidel            | be32 | be64 \
1197aa9f3106Smseidel            | bfin | bpf | bs2000 \
11981aeda8abSMatthias Seidel            | c[123]* | c30 | [cjt]90 | c4x \
11991aeda8abSMatthias Seidel            | c8051 | clipper | craynv | csky | cydra \
1200cdf0e10cSrcweir            | d10v | d30v | dlx | dsp16xx \
12011aeda8abSMatthias Seidel            | e2k | elxsi | epiphany \
12021aeda8abSMatthias Seidel            | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1203*68bb4a96Smseidel            | javascript \
12041aeda8abSMatthias Seidel            | h8300 | h8500 \
12051aeda8abSMatthias Seidel            | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1206ee1eb700SMatthias Seidel            | hexagon \
12071aeda8abSMatthias Seidel            | i370 | i*86 | i860 | i960 | ia16 | ia64 \
1208187b4248SPedro Giffuni            | ip2k | iq2000 \
1209ee1eb700SMatthias Seidel            | k1om \
1210*68bb4a96Smseidel            | kvx \
1211ee1eb700SMatthias Seidel            | le32 | le64 \
1212187b4248SPedro Giffuni            | lm32 \
121359c94e95Smseidel            | loongarch32 | loongarch64 \
12141aeda8abSMatthias Seidel            | m32c | m32r | m32rle \
121582437902SMatthias Seidel            | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
121682437902SMatthias Seidel            | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
12171aeda8abSMatthias Seidel            | m88110 | m88k | maxq | mb | mcore | mep | metag \
12181aeda8abSMatthias Seidel            | microblaze | microblazeel \
1219*68bb4a96Smseidel            | mips* \
12201aeda8abSMatthias Seidel            | mmix \
1221cdf0e10cSrcweir            | mn10200 | mn10300 \
1222187b4248SPedro Giffuni            | moxie \
1223187b4248SPedro Giffuni            | mt \
1224cdf0e10cSrcweir            | msp430 \
1225*68bb4a96Smseidel            | nanomips* \
1226ee1eb700SMatthias Seidel            | nds32 | nds32le | nds32be \
12271aeda8abSMatthias Seidel            | nfp \
1228ee1eb700SMatthias Seidel            | nios | nios2 | nios2eb | nios2el \
122982437902SMatthias Seidel            | none | np1 | ns16k | ns32k | nvptx \
12301aeda8abSMatthias Seidel            | open8 \
12311aeda8abSMatthias Seidel            | or1k* \
12321aeda8abSMatthias Seidel            | or32 \
12331aeda8abSMatthias Seidel            | orion \
123482437902SMatthias Seidel            | picochip \
12351aeda8abSMatthias Seidel            | pdp10 | pdp11 | pj | pjl | pn | power \
12361aeda8abSMatthias Seidel            | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1237ee1eb700SMatthias Seidel            | pru \
1238cdf0e10cSrcweir            | pyramid \
123968398e2cSmseidel            | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
12401aeda8abSMatthias Seidel            | rl78 | romp | rs6000 | rx \
12414b6f5201Smseidel            | s390 | s390x \
1242187b4248SPedro Giffuni            | score \
124382437902SMatthias Seidel            | sh | shl \
124482437902SMatthias Seidel            | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
12451aeda8abSMatthias Seidel            | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
12461aeda8abSMatthias Seidel            | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
12471aeda8abSMatthias Seidel            | sparclite \
12481aeda8abSMatthias Seidel            | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1249ee1eb700SMatthias Seidel            | spu \
12501aeda8abSMatthias Seidel            | tahoe \
125168398e2cSmseidel            | thumbv7* \
12521aeda8abSMatthias Seidel            | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
12531aeda8abSMatthias Seidel            | tron \
1254187b4248SPedro Giffuni            | ubicom32 \
125582437902SMatthias Seidel            | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
12561aeda8abSMatthias Seidel            | vax \
1257*68bb4a96Smseidel            | vc4 \
1258ee1eb700SMatthias Seidel            | visium \
125982437902SMatthias Seidel            | w65 \
126082437902SMatthias Seidel            | wasm32 | wasm64 \
12611aeda8abSMatthias Seidel            | we32k \
12621aeda8abSMatthias Seidel            | x86 | x86_64 | xc16x | xgate | xps100 \
12631aeda8abSMatthias Seidel            | xstormy16 | xtensa* \
12641aeda8abSMatthias Seidel            | ymp \
1265187b4248SPedro Giffuni            | z8k | z80)
1266187b4248SPedro Giffuni                ;;
1267cdf0e10cSrcweir
12681aeda8abSMatthias Seidel            *)
1269*68bb4a96Smseidel                echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
1270cdf0e10cSrcweir                exit 1
1271cdf0e10cSrcweir                ;;
1272cdf0e10cSrcweir        esac
1273cdf0e10cSrcweir        ;;
1274cdf0e10cSrcweiresac
1275cdf0e10cSrcweir
1276cdf0e10cSrcweir# Here we canonicalize certain aliases for manufacturers.
12771aeda8abSMatthias Seidelcase $vendor in
12781aeda8abSMatthias Seidel    digital*)
12791aeda8abSMatthias Seidel        vendor=dec
1280cdf0e10cSrcweir        ;;
12811aeda8abSMatthias Seidel    commodore*)
12821aeda8abSMatthias Seidel        vendor=cbm
1283cdf0e10cSrcweir        ;;
1284cdf0e10cSrcweir    *)
1285cdf0e10cSrcweir        ;;
1286cdf0e10cSrcweiresac
1287cdf0e10cSrcweir
1288cdf0e10cSrcweir# Decode manufacturer-specific aliases for certain operating systems.
1289cdf0e10cSrcweir
1290*68bb4a96Smseidelif test x"$basic_os" != x
1291cdf0e10cSrcweirthen
12924b6f5201Smseidel
1293d7a033b7Smseidel# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
12944b6f5201Smseidel# set os.
1295*68bb4a96Smseidelobj=
12964b6f5201Smseidelcase $basic_os in
12974b6f5201Smseidel    gnu/linux*)
12984b6f5201Smseidel        kernel=linux
1299d7a033b7Smseidel        os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
13004b6f5201Smseidel        ;;
13014b6f5201Smseidel    os2-emx)
13024b6f5201Smseidel        kernel=os2
1303d7a033b7Smseidel        os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
13044b6f5201Smseidel        ;;
13054b6f5201Smseidel    nto-qnx*)
13064b6f5201Smseidel        kernel=nto
1307d7a033b7Smseidel        os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
13084b6f5201Smseidel        ;;
13094b6f5201Smseidel    *-*)
13104b6f5201Smseidel        # shellcheck disable=SC2162
1311d7a033b7Smseidel        saved_IFS=$IFS
13124b6f5201Smseidel        IFS="-" read kernel os <<EOF
13134b6f5201Smseidel$basic_os
13144b6f5201SmseidelEOF
1315d7a033b7Smseidel        IFS=$saved_IFS
13164b6f5201Smseidel        ;;
13174b6f5201Smseidel    # Default OS when just kernel was specified
13184b6f5201Smseidel    nto*)
13194b6f5201Smseidel        kernel=nto
1320d7a033b7Smseidel        os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
13214b6f5201Smseidel        ;;
13224b6f5201Smseidel    linux*)
13234b6f5201Smseidel        kernel=linux
1324d7a033b7Smseidel        os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
13254b6f5201Smseidel        ;;
132659c94e95Smseidel    managarm*)
132759c94e95Smseidel        kernel=managarm
132859c94e95Smseidel        os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
132959c94e95Smseidel        ;;
13304b6f5201Smseidel    *)
13314b6f5201Smseidel        kernel=
13324b6f5201Smseidel        os=$basic_os
13334b6f5201Smseidel        ;;
13344b6f5201Smseidelesac
13354b6f5201Smseidel
13364b6f5201Smseidel# Now, normalize the OS (knowing we just have one component, it's not a kernel,
13374b6f5201Smseidel# etc.)
1338cdf0e10cSrcweircase $os in
1339ee1eb700SMatthias Seidel    # First match some system type aliases that might get confused
1340ee1eb700SMatthias Seidel    # with valid system types.
13411aeda8abSMatthias Seidel    # solaris* is a basic system type, with this one exception.
13421aeda8abSMatthias Seidel    auroraux)
13431aeda8abSMatthias Seidel        os=auroraux
1344187b4248SPedro Giffuni        ;;
13451aeda8abSMatthias Seidel    bluegene*)
13461aeda8abSMatthias Seidel        os=cnk
13471aeda8abSMatthias Seidel        ;;
13481aeda8abSMatthias Seidel    solaris1 | solaris1.*)
1349d7a033b7Smseidel        os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1350cdf0e10cSrcweir        ;;
13511aeda8abSMatthias Seidel    solaris)
13521aeda8abSMatthias Seidel        os=solaris2
1353cdf0e10cSrcweir        ;;
13541aeda8abSMatthias Seidel    unixware*)
13551aeda8abSMatthias Seidel        os=sysv4.2uw
1356cdf0e10cSrcweir        ;;
13571a5d95c5SMatthias Seidel    # es1800 is here to avoid being matched by es* (a different OS)
13581aeda8abSMatthias Seidel    es1800*)
13591aeda8abSMatthias Seidel        os=ose
13601aeda8abSMatthias Seidel        ;;
13611aeda8abSMatthias Seidel    # Some version numbers need modification
13621aeda8abSMatthias Seidel    chorusos*)
13631aeda8abSMatthias Seidel        os=chorusos
13641aeda8abSMatthias Seidel        ;;
13651aeda8abSMatthias Seidel    isc)
13661aeda8abSMatthias Seidel        os=isc2.2
13671aeda8abSMatthias Seidel        ;;
13681aeda8abSMatthias Seidel    sco6)
13691aeda8abSMatthias Seidel        os=sco5v6
13701aeda8abSMatthias Seidel        ;;
13711aeda8abSMatthias Seidel    sco5)
13721aeda8abSMatthias Seidel        os=sco3.2v5
13731aeda8abSMatthias Seidel        ;;
13741aeda8abSMatthias Seidel    sco4)
13751aeda8abSMatthias Seidel        os=sco3.2v4
13761aeda8abSMatthias Seidel        ;;
13771aeda8abSMatthias Seidel    sco3.2.[4-9]*)
1378d7a033b7Smseidel        os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
13791aeda8abSMatthias Seidel        ;;
13804b6f5201Smseidel    sco*v* | scout)
13811aeda8abSMatthias Seidel        # Don't match below
13821aeda8abSMatthias Seidel        ;;
13831aeda8abSMatthias Seidel    sco*)
13841aeda8abSMatthias Seidel        os=sco3.2v2
13851aeda8abSMatthias Seidel        ;;
13861aeda8abSMatthias Seidel    psos*)
13871aeda8abSMatthias Seidel        os=psos
13881a5d95c5SMatthias Seidel        ;;
13891aeda8abSMatthias Seidel    qnx*)
13904b6f5201Smseidel        os=qnx
1391cdf0e10cSrcweir        ;;
13921aeda8abSMatthias Seidel    hiux*)
13931aeda8abSMatthias Seidel        os=hiuxwe2
1394cdf0e10cSrcweir        ;;
13951aeda8abSMatthias Seidel    lynx*178)
13961aeda8abSMatthias Seidel        os=lynxos178
13971aeda8abSMatthias Seidel        ;;
13981aeda8abSMatthias Seidel    lynx*5)
13991aeda8abSMatthias Seidel        os=lynxos5
14001aeda8abSMatthias Seidel        ;;
14014b6f5201Smseidel    lynxos*)
14024b6f5201Smseidel        # don't get caught up in next wildcard
14034b6f5201Smseidel        ;;
14041aeda8abSMatthias Seidel    lynx*)
14051aeda8abSMatthias Seidel        os=lynxos
14061aeda8abSMatthias Seidel        ;;
14074b6f5201Smseidel    mac[0-9]*)
1408d7a033b7Smseidel        os=`echo "$os" | sed -e 's|mac|macos|'`
14091aeda8abSMatthias Seidel        ;;
14101aeda8abSMatthias Seidel    opened*)
14111aeda8abSMatthias Seidel        os=openedition
14121aeda8abSMatthias Seidel        ;;
14131aeda8abSMatthias Seidel    os400*)
14141aeda8abSMatthias Seidel        os=os400
14151aeda8abSMatthias Seidel        ;;
14161aeda8abSMatthias Seidel    sunos5*)
1417d7a033b7Smseidel        os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1418cdf0e10cSrcweir        ;;
14191aeda8abSMatthias Seidel    sunos6*)
1420d7a033b7Smseidel        os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1421cdf0e10cSrcweir        ;;
14221aeda8abSMatthias Seidel    wince*)
14231aeda8abSMatthias Seidel        os=wince
1424cdf0e10cSrcweir        ;;
14251aeda8abSMatthias Seidel    utek*)
14261aeda8abSMatthias Seidel        os=bsd
1427187b4248SPedro Giffuni        ;;
14281aeda8abSMatthias Seidel    dynix*)
14291aeda8abSMatthias Seidel        os=bsd
1430cdf0e10cSrcweir        ;;
14311aeda8abSMatthias Seidel    acis*)
14321aeda8abSMatthias Seidel        os=aos
1433cdf0e10cSrcweir        ;;
14341aeda8abSMatthias Seidel    atheos*)
14351aeda8abSMatthias Seidel        os=atheos
1436cdf0e10cSrcweir        ;;
14371aeda8abSMatthias Seidel    syllable*)
14381aeda8abSMatthias Seidel        os=syllable
1439cdf0e10cSrcweir        ;;
14401aeda8abSMatthias Seidel    386bsd)
14411aeda8abSMatthias Seidel        os=bsd
1442cdf0e10cSrcweir        ;;
14431aeda8abSMatthias Seidel    ctix* | uts*)
14441aeda8abSMatthias Seidel        os=sysv
1445187b4248SPedro Giffuni        ;;
14461aeda8abSMatthias Seidel    nova*)
14471aeda8abSMatthias Seidel        os=rtmk-nova
1448cdf0e10cSrcweir        ;;
14491aeda8abSMatthias Seidel    ns2)
14501aeda8abSMatthias Seidel        os=nextstep2
1451cdf0e10cSrcweir        ;;
1452cdf0e10cSrcweir    # Preserve the version number of sinix5.
14531aeda8abSMatthias Seidel    sinix5.*)
1454d7a033b7Smseidel        os=`echo "$os" | sed -e 's|sinix|sysv|'`
1455cdf0e10cSrcweir        ;;
14561aeda8abSMatthias Seidel    sinix*)
14571aeda8abSMatthias Seidel        os=sysv4
1458cdf0e10cSrcweir        ;;
14591aeda8abSMatthias Seidel    tpf*)
14601aeda8abSMatthias Seidel        os=tpf
1461187b4248SPedro Giffuni        ;;
14621aeda8abSMatthias Seidel    triton*)
14631aeda8abSMatthias Seidel        os=sysv3
1464cdf0e10cSrcweir        ;;
14651aeda8abSMatthias Seidel    oss*)
14661aeda8abSMatthias Seidel        os=sysv3
1467cdf0e10cSrcweir        ;;
14681aeda8abSMatthias Seidel    svr4*)
14691aeda8abSMatthias Seidel        os=sysv4
1470cdf0e10cSrcweir        ;;
14711aeda8abSMatthias Seidel    svr3)
14721aeda8abSMatthias Seidel        os=sysv3
1473cdf0e10cSrcweir        ;;
14741aeda8abSMatthias Seidel    sysvr4)
14751aeda8abSMatthias Seidel        os=sysv4
1476cdf0e10cSrcweir        ;;
14771aeda8abSMatthias Seidel    ose*)
14781aeda8abSMatthias Seidel        os=ose
1479cdf0e10cSrcweir        ;;
14801aeda8abSMatthias Seidel    *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
14811aeda8abSMatthias Seidel        os=mint
1482cdf0e10cSrcweir        ;;
14831aeda8abSMatthias Seidel    dicos*)
14841aeda8abSMatthias Seidel        os=dicos
1485187b4248SPedro Giffuni        ;;
14861aeda8abSMatthias Seidel    pikeos*)
148786278b1cSMatthias Seidel        # Until real need of OS specific support for
148886278b1cSMatthias Seidel        # particular features comes up, bare metal
148986278b1cSMatthias Seidel        # configurations are quite functional.
14901aeda8abSMatthias Seidel        case $cpu in
149186278b1cSMatthias Seidel            arm*)
14921aeda8abSMatthias Seidel            os=eabi
149386278b1cSMatthias Seidel            ;;
149486278b1cSMatthias Seidel            *)
1495*68bb4a96Smseidel            os=
1496*68bb4a96Smseidel            obj=elf
149786278b1cSMatthias Seidel            ;;
149886278b1cSMatthias Seidel        esac
149986278b1cSMatthias Seidel        ;;
1500*68bb4a96Smseidel    aout* | coff* | elf* | pe*)
1501*68bb4a96Smseidel        # These are machine code file formats, not OSes
1502*68bb4a96Smseidel        obj=$os
1503*68bb4a96Smseidel        os=
1504*68bb4a96Smseidel        ;;
1505cdf0e10cSrcweir    *)
15064b6f5201Smseidel        # No normalization, but not necessarily accepted, that comes below.
1507cdf0e10cSrcweir        ;;
1508cdf0e10cSrcweiresac
15094b6f5201Smseidel
1510cdf0e10cSrcweirelse
1511cdf0e10cSrcweir
1512cdf0e10cSrcweir# Here we handle the default operating systems that come with various machines.
1513cdf0e10cSrcweir# The value should be what the vendor currently ships out the door with their
1514cdf0e10cSrcweir# machine or put another way, the most popular os provided with the machine.
1515cdf0e10cSrcweir
1516cdf0e10cSrcweir# Note that if you're going to try to match "-MANUFACTURER" here (say,
1517cdf0e10cSrcweir# "-sun"), then you have to tell the case statement up towards the top
1518cdf0e10cSrcweir# that MANUFACTURER isn't an operating system.  Otherwise, code above
1519cdf0e10cSrcweir# will signal an error saying that MANUFACTURER isn't an operating
1520cdf0e10cSrcweir# system, and we'll never get to this point.
1521cdf0e10cSrcweir
15224b6f5201Smseidelkernel=
1523*68bb4a96Smseidelobj=
15241aeda8abSMatthias Seidelcase $cpu-$vendor in
1525187b4248SPedro Giffuni    score-*)
1526*68bb4a96Smseidel        os=
1527*68bb4a96Smseidel        obj=elf
1528187b4248SPedro Giffuni        ;;
1529187b4248SPedro Giffuni    spu-*)
1530*68bb4a96Smseidel        os=
1531*68bb4a96Smseidel        obj=elf
1532187b4248SPedro Giffuni        ;;
1533cdf0e10cSrcweir    *-acorn)
15341aeda8abSMatthias Seidel        os=riscix1.2
1535cdf0e10cSrcweir        ;;
1536cdf0e10cSrcweir    arm*-rebel)
15374b6f5201Smseidel        kernel=linux
15384b6f5201Smseidel        os=gnu
1539cdf0e10cSrcweir        ;;
1540cdf0e10cSrcweir    arm*-semi)
1541*68bb4a96Smseidel        os=
1542*68bb4a96Smseidel        obj=aout
1543cdf0e10cSrcweir        ;;
1544cdf0e10cSrcweir    c4x-* | tic4x-*)
1545*68bb4a96Smseidel        os=
1546*68bb4a96Smseidel        obj=coff
1547cdf0e10cSrcweir        ;;
1548ee1eb700SMatthias Seidel    c8051-*)
1549*68bb4a96Smseidel        os=
1550*68bb4a96Smseidel        obj=elf
15511aeda8abSMatthias Seidel        ;;
15521aeda8abSMatthias Seidel    clipper-intergraph)
15531aeda8abSMatthias Seidel        os=clix
1554ee1eb700SMatthias Seidel        ;;
1555ee1eb700SMatthias Seidel    hexagon-*)
1556*68bb4a96Smseidel        os=
1557*68bb4a96Smseidel        obj=elf
1558ee1eb700SMatthias Seidel        ;;
1559ee1eb700SMatthias Seidel    tic54x-*)
1560*68bb4a96Smseidel        os=
1561*68bb4a96Smseidel        obj=coff
1562ee1eb700SMatthias Seidel        ;;
1563ee1eb700SMatthias Seidel    tic55x-*)
1564*68bb4a96Smseidel        os=
1565*68bb4a96Smseidel        obj=coff
1566ee1eb700SMatthias Seidel        ;;
1567ee1eb700SMatthias Seidel    tic6x-*)
1568*68bb4a96Smseidel        os=
1569*68bb4a96Smseidel        obj=coff
1570ee1eb700SMatthias Seidel        ;;
1571cdf0e10cSrcweir    # This must come before the *-dec entry.
1572cdf0e10cSrcweir    pdp10-*)
15731aeda8abSMatthias Seidel        os=tops20
1574cdf0e10cSrcweir        ;;
1575cdf0e10cSrcweir    pdp11-*)
15761aeda8abSMatthias Seidel        os=none
1577cdf0e10cSrcweir        ;;
1578cdf0e10cSrcweir    *-dec | vax-*)
15791aeda8abSMatthias Seidel        os=ultrix4.2
1580cdf0e10cSrcweir        ;;
1581cdf0e10cSrcweir    m68*-apollo)
15821aeda8abSMatthias Seidel        os=domain
1583cdf0e10cSrcweir        ;;
1584cdf0e10cSrcweir    i386-sun)
15851aeda8abSMatthias Seidel        os=sunos4.0.2
1586cdf0e10cSrcweir        ;;
1587cdf0e10cSrcweir    m68000-sun)
15881aeda8abSMatthias Seidel        os=sunos3
1589cdf0e10cSrcweir        ;;
1590cdf0e10cSrcweir    m68*-cisco)
1591*68bb4a96Smseidel        os=
1592*68bb4a96Smseidel        obj=aout
1593cdf0e10cSrcweir        ;;
1594187b4248SPedro Giffuni    mep-*)
1595*68bb4a96Smseidel        os=
1596*68bb4a96Smseidel        obj=elf
1597187b4248SPedro Giffuni        ;;
1598cdf0e10cSrcweir    mips*-cisco)
1599*68bb4a96Smseidel        os=
1600*68bb4a96Smseidel        obj=elf
1601cdf0e10cSrcweir        ;;
1602*68bb4a96Smseidel    mips*-*|nanomips*-*)
1603*68bb4a96Smseidel        os=
1604*68bb4a96Smseidel        obj=elf
1605cdf0e10cSrcweir        ;;
1606cdf0e10cSrcweir    or32-*)
1607*68bb4a96Smseidel        os=
1608*68bb4a96Smseidel        obj=coff
1609cdf0e10cSrcweir        ;;
1610cdf0e10cSrcweir    *-tti)  # must be before sparc entry or we get the wrong os.
16111aeda8abSMatthias Seidel        os=sysv3
1612cdf0e10cSrcweir        ;;
1613cdf0e10cSrcweir    sparc-* | *-sun)
16141aeda8abSMatthias Seidel        os=sunos4.1.1
1615cdf0e10cSrcweir        ;;
1616ee1eb700SMatthias Seidel    pru-*)
1617*68bb4a96Smseidel        os=
1618*68bb4a96Smseidel        obj=elf
1619ee1eb700SMatthias Seidel        ;;
1620cdf0e10cSrcweir    *-be)
16211aeda8abSMatthias Seidel        os=beos
1622cdf0e10cSrcweir        ;;
1623cdf0e10cSrcweir    *-ibm)
16241aeda8abSMatthias Seidel        os=aix
1625cdf0e10cSrcweir        ;;
1626187b4248SPedro Giffuni    *-knuth)
16271aeda8abSMatthias Seidel        os=mmixware
1628187b4248SPedro Giffuni        ;;
1629cdf0e10cSrcweir    *-wec)
16301aeda8abSMatthias Seidel        os=proelf
1631cdf0e10cSrcweir        ;;
1632cdf0e10cSrcweir    *-winbond)
16331aeda8abSMatthias Seidel        os=proelf
1634cdf0e10cSrcweir        ;;
1635cdf0e10cSrcweir    *-oki)
16361aeda8abSMatthias Seidel        os=proelf
1637cdf0e10cSrcweir        ;;
1638cdf0e10cSrcweir    *-hp)
16391aeda8abSMatthias Seidel        os=hpux
1640cdf0e10cSrcweir        ;;
1641cdf0e10cSrcweir    *-hitachi)
16421aeda8abSMatthias Seidel        os=hiux
1643cdf0e10cSrcweir        ;;
1644cdf0e10cSrcweir    i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
16451aeda8abSMatthias Seidel        os=sysv
1646cdf0e10cSrcweir        ;;
1647cdf0e10cSrcweir    *-cbm)
16481aeda8abSMatthias Seidel        os=amigaos
1649cdf0e10cSrcweir        ;;
1650cdf0e10cSrcweir    *-dg)
16511aeda8abSMatthias Seidel        os=dgux
1652cdf0e10cSrcweir        ;;
1653cdf0e10cSrcweir    *-dolphin)
16541aeda8abSMatthias Seidel        os=sysv3
1655cdf0e10cSrcweir        ;;
1656cdf0e10cSrcweir    m68k-ccur)
16571aeda8abSMatthias Seidel        os=rtu
1658cdf0e10cSrcweir        ;;
1659cdf0e10cSrcweir    m88k-omron*)
16601aeda8abSMatthias Seidel        os=luna
1661cdf0e10cSrcweir        ;;
1662cdf0e10cSrcweir    *-next)
16631aeda8abSMatthias Seidel        os=nextstep
1664cdf0e10cSrcweir        ;;
1665cdf0e10cSrcweir    *-sequent)
16661aeda8abSMatthias Seidel        os=ptx
1667cdf0e10cSrcweir        ;;
1668cdf0e10cSrcweir    *-crds)
16691aeda8abSMatthias Seidel        os=unos
1670cdf0e10cSrcweir        ;;
1671cdf0e10cSrcweir    *-ns)
16721aeda8abSMatthias Seidel        os=genix
1673cdf0e10cSrcweir        ;;
1674cdf0e10cSrcweir    i370-*)
16751aeda8abSMatthias Seidel        os=mvs
1676cdf0e10cSrcweir        ;;
1677cdf0e10cSrcweir    *-gould)
16781aeda8abSMatthias Seidel        os=sysv
1679cdf0e10cSrcweir        ;;
1680cdf0e10cSrcweir    *-highlevel)
16811aeda8abSMatthias Seidel        os=bsd
1682cdf0e10cSrcweir        ;;
1683cdf0e10cSrcweir    *-encore)
16841aeda8abSMatthias Seidel        os=bsd
1685cdf0e10cSrcweir        ;;
1686cdf0e10cSrcweir    *-sgi)
16871aeda8abSMatthias Seidel        os=irix
1688cdf0e10cSrcweir        ;;
1689cdf0e10cSrcweir    *-siemens)
16901aeda8abSMatthias Seidel        os=sysv4
1691cdf0e10cSrcweir        ;;
1692cdf0e10cSrcweir    *-masscomp)
16931aeda8abSMatthias Seidel        os=rtu
1694cdf0e10cSrcweir        ;;
1695cdf0e10cSrcweir    f30[01]-fujitsu | f700-fujitsu)
16961aeda8abSMatthias Seidel        os=uxpv
1697cdf0e10cSrcweir        ;;
1698cdf0e10cSrcweir    *-rom68k)
1699*68bb4a96Smseidel        os=
1700*68bb4a96Smseidel        obj=coff
1701cdf0e10cSrcweir        ;;
1702cdf0e10cSrcweir    *-*bug)
1703*68bb4a96Smseidel        os=
1704*68bb4a96Smseidel        obj=coff
1705cdf0e10cSrcweir        ;;
1706cdf0e10cSrcweir    *-apple)
17071aeda8abSMatthias Seidel        os=macos
1708cdf0e10cSrcweir        ;;
1709cdf0e10cSrcweir    *-atari*)
17101aeda8abSMatthias Seidel        os=mint
17111aeda8abSMatthias Seidel        ;;
17121aeda8abSMatthias Seidel    *-wrs)
17131aeda8abSMatthias Seidel        os=vxworks
1714cdf0e10cSrcweir        ;;
1715cdf0e10cSrcweir    *)
17161aeda8abSMatthias Seidel        os=none
1717cdf0e10cSrcweir        ;;
1718cdf0e10cSrcweiresac
17194b6f5201Smseidel
1720cdf0e10cSrcweirfi
1721cdf0e10cSrcweir
1722*68bb4a96Smseidel# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1723*68bb4a96Smseidel
17244b6f5201Smseidelcase $os in
172568398e2cSmseidel    # Sometimes we do "kernel-libc", so those need to count as OSes.
1726*68bb4a96Smseidel    llvm* | musl* | newlib* | relibc* | uclibc*)
17274b6f5201Smseidel        ;;
172868398e2cSmseidel    # Likewise for "kernel-abi"
172968398e2cSmseidel    eabi* | gnueabi*)
173068398e2cSmseidel        ;;
173168398e2cSmseidel    # VxWorks passes extra cpu info in the 4th filed.
173268398e2cSmseidel    simlinux | simwindows | spe)
17334b6f5201Smseidel        ;;
1734*68bb4a96Smseidel    # See `case $cpu-$os` validation below
1735*68bb4a96Smseidel    ghcjs)
1736*68bb4a96Smseidel        ;;
17374b6f5201Smseidel    # Now accept the basic system types.
17384b6f5201Smseidel    # The portable systems comes first.
17394b6f5201Smseidel    # Each alternative MUST end in a * to match a version number.
17404b6f5201Smseidel    gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
17414b6f5201Smseidel         | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
17424b6f5201Smseidel         | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
17434b6f5201Smseidel         | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
17444b6f5201Smseidel         | hiux* | abug | nacl* | netware* | windows* \
1745*68bb4a96Smseidel         | os9* | macos* | osx* | ios* | tvos* | watchos* \
17464b6f5201Smseidel         | mpw* | magic* | mmixware* | mon960* | lnews* \
17474b6f5201Smseidel         | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
17484b6f5201Smseidel         | aos* | aros* | cloudabi* | sortix* | twizzler* \
17494b6f5201Smseidel         | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
17504b6f5201Smseidel         | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
17514b6f5201Smseidel         | mirbsd* | netbsd* | dicos* | openedition* | ose* \
1752d7a033b7Smseidel         | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
17534b6f5201Smseidel         | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1754*68bb4a96Smseidel         | bosx* | nextstep* | cxux* | oabi* \
1755*68bb4a96Smseidel         | ptx* | ecoff* | winnt* | domain* | vsta* \
17564b6f5201Smseidel         | udi* | lites* | ieee* | go32* | aux* | hcos* \
1757d7a033b7Smseidel         | chorusrdb* | cegcc* | glidix* | serenity* \
1758*68bb4a96Smseidel         | cygwin* | msys* | moss* | proelf* | rtems* \
17594b6f5201Smseidel         | midipix* | mingw32* | mingw64* | mint* \
17604b6f5201Smseidel         | uxpv* | beos* | mpeix* | udk* | moxiebox* \
17614b6f5201Smseidel         | interix* | uwin* | mks* | rhapsody* | darwin* \
17624b6f5201Smseidel         | openstep* | oskit* | conix* | pw32* | nonstopux* \
17634b6f5201Smseidel         | storm-chaos* | tops10* | tenex* | tops20* | its* \
17644b6f5201Smseidel         | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
17654b6f5201Smseidel         | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
17664b6f5201Smseidel         | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
17674b6f5201Smseidel         | skyos* | haiku* | rdos* | toppers* | drops* | es* \
17684b6f5201Smseidel         | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
17694b6f5201Smseidel         | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1770d7a033b7Smseidel         | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
1771*68bb4a96Smseidel         | fiwix* | mlibc* | cos* | mbr* | ironclad* )
17724b6f5201Smseidel        ;;
17734b6f5201Smseidel    # This one is extra strict with allowed versions
17744b6f5201Smseidel    sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
17754b6f5201Smseidel        # Don't forget version if it is 3.2v4 or newer.
17764b6f5201Smseidel        ;;
1777*68bb4a96Smseidel    # This refers to builds using the UEFI calling convention
1778*68bb4a96Smseidel    # (which depends on the architecture) and PE file format.
1779*68bb4a96Smseidel    # Note that this is both a different calling convention and
1780*68bb4a96Smseidel    # different file format than that of GNU-EFI
1781*68bb4a96Smseidel    # (x86_64-w64-mingw32).
1782*68bb4a96Smseidel    uefi)
1783*68bb4a96Smseidel        ;;
17844b6f5201Smseidel    none)
17854b6f5201Smseidel        ;;
1786*68bb4a96Smseidel    kernel* | msvc* )
178759c94e95Smseidel        # Restricted further below
178859c94e95Smseidel        ;;
1789*68bb4a96Smseidel    '')
1790*68bb4a96Smseidel        if test x"$obj" = x
1791*68bb4a96Smseidel        then
1792*68bb4a96Smseidel            echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
1793*68bb4a96Smseidel        fi
1794*68bb4a96Smseidel        ;;
17954b6f5201Smseidel    *)
1796*68bb4a96Smseidel        echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
1797*68bb4a96Smseidel        exit 1
1798*68bb4a96Smseidel        ;;
1799*68bb4a96Smseidelesac
1800*68bb4a96Smseidel
1801*68bb4a96Smseidelcase $obj in
1802*68bb4a96Smseidel    aout* | coff* | elf* | pe*)
1803*68bb4a96Smseidel        ;;
1804*68bb4a96Smseidel    '')
1805*68bb4a96Smseidel        # empty is fine
1806*68bb4a96Smseidel        ;;
1807*68bb4a96Smseidel    *)
1808*68bb4a96Smseidel        echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
1809*68bb4a96Smseidel        exit 1
1810*68bb4a96Smseidel        ;;
1811*68bb4a96Smseidelesac
1812*68bb4a96Smseidel
1813*68bb4a96Smseidel# Here we handle the constraint that a (synthetic) cpu and os are
1814*68bb4a96Smseidel# valid only in combination with each other and nowhere else.
1815*68bb4a96Smseidelcase $cpu-$os in
1816*68bb4a96Smseidel    # The "javascript-unknown-ghcjs" triple is used by GHC; we
1817*68bb4a96Smseidel    # accept it here in order to tolerate that, but reject any
1818*68bb4a96Smseidel    # variations.
1819*68bb4a96Smseidel    javascript-ghcjs)
1820*68bb4a96Smseidel        ;;
1821*68bb4a96Smseidel    javascript-* | *-ghcjs)
1822*68bb4a96Smseidel        echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
18234b6f5201Smseidel        exit 1
18244b6f5201Smseidel        ;;
18254b6f5201Smseidelesac
18264b6f5201Smseidel
18274b6f5201Smseidel# As a final step for OS-related things, validate the OS-kernel combination
18284b6f5201Smseidel# (given a valid OS), if there is a kernel.
1829*68bb4a96Smseidelcase $kernel-$os-$obj in
1830*68bb4a96Smseidel    linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
1831*68bb4a96Smseidel            | linux-mlibc*- | linux-musl*- | linux-newlib*- \
1832*68bb4a96Smseidel            | linux-relibc*- | linux-uclibc*- )
18334b6f5201Smseidel        ;;
1834*68bb4a96Smseidel    uclinux-uclibc*- )
18354b6f5201Smseidel        ;;
1836*68bb4a96Smseidel    managarm-mlibc*- | managarm-kernel*- )
183759c94e95Smseidel        ;;
1838*68bb4a96Smseidel    windows*-msvc*-)
1839*68bb4a96Smseidel        ;;
1840*68bb4a96Smseidel    -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
1841*68bb4a96Smseidel            | -uclibc*- )
18424b6f5201Smseidel        # These are just libc implementations, not actual OSes, and thus
18434b6f5201Smseidel        # require a kernel.
1844*68bb4a96Smseidel        echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
18454b6f5201Smseidel        exit 1
18464b6f5201Smseidel        ;;
1847*68bb4a96Smseidel    -kernel*- )
1848*68bb4a96Smseidel        echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
184959c94e95Smseidel        exit 1
185059c94e95Smseidel        ;;
1851*68bb4a96Smseidel    *-kernel*- )
1852*68bb4a96Smseidel        echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
185359c94e95Smseidel        exit 1
185459c94e95Smseidel        ;;
1855*68bb4a96Smseidel    *-msvc*- )
1856*68bb4a96Smseidel        echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
1857*68bb4a96Smseidel        exit 1
18584b6f5201Smseidel        ;;
1859*68bb4a96Smseidel    kfreebsd*-gnu*- | kopensolaris*-gnu*-)
186068398e2cSmseidel        ;;
1861*68bb4a96Smseidel    vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
18624b6f5201Smseidel        ;;
1863*68bb4a96Smseidel    nto-qnx*-)
18644b6f5201Smseidel        ;;
1865*68bb4a96Smseidel    os2-emx-)
18664b6f5201Smseidel        ;;
1867*68bb4a96Smseidel    *-eabi*- | *-gnueabi*-)
1868*68bb4a96Smseidel        ;;
1869*68bb4a96Smseidel    none--*)
1870*68bb4a96Smseidel        # None (no kernel, i.e. freestanding / bare metal),
1871*68bb4a96Smseidel        # can be paired with an machine code file format
1872*68bb4a96Smseidel        ;;
1873*68bb4a96Smseidel    -*-)
18744b6f5201Smseidel        # Blank kernel with real OS is always fine.
18754b6f5201Smseidel        ;;
1876*68bb4a96Smseidel    --*)
1877*68bb4a96Smseidel        # Blank kernel and OS with real machine code file format is always fine.
1878*68bb4a96Smseidel        ;;
1879*68bb4a96Smseidel    *-*-*)
1880*68bb4a96Smseidel        echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
18814b6f5201Smseidel        exit 1
18824b6f5201Smseidel        ;;
18834b6f5201Smseidelesac
18844b6f5201Smseidel
1885cdf0e10cSrcweir# Here we handle the case where we know the os, and the CPU type, but not the
1886cdf0e10cSrcweir# manufacturer.  We pick the logical manufacturer.
18871aeda8abSMatthias Seidelcase $vendor in
18881aeda8abSMatthias Seidel    unknown)
18894b6f5201Smseidel        case $cpu-$os in
18904b6f5201Smseidel            *-riscix*)
1891cdf0e10cSrcweir                vendor=acorn
1892cdf0e10cSrcweir                ;;
18934b6f5201Smseidel            *-sunos*)
1894cdf0e10cSrcweir                vendor=sun
1895cdf0e10cSrcweir                ;;
18964b6f5201Smseidel            *-cnk* | *-aix*)
1897cdf0e10cSrcweir                vendor=ibm
1898cdf0e10cSrcweir                ;;
18994b6f5201Smseidel            *-beos*)
1900cdf0e10cSrcweir                vendor=be
1901cdf0e10cSrcweir                ;;
19024b6f5201Smseidel            *-hpux*)
1903cdf0e10cSrcweir                vendor=hp
1904cdf0e10cSrcweir                ;;
19054b6f5201Smseidel            *-mpeix*)
1906cdf0e10cSrcweir                vendor=hp
1907cdf0e10cSrcweir                ;;
19084b6f5201Smseidel            *-hiux*)
1909cdf0e10cSrcweir                vendor=hitachi
1910cdf0e10cSrcweir                ;;
19114b6f5201Smseidel            *-unos*)
1912cdf0e10cSrcweir                vendor=crds
1913cdf0e10cSrcweir                ;;
19144b6f5201Smseidel            *-dgux*)
1915cdf0e10cSrcweir                vendor=dg
1916cdf0e10cSrcweir                ;;
19174b6f5201Smseidel            *-luna*)
1918cdf0e10cSrcweir                vendor=omron
1919cdf0e10cSrcweir                ;;
19204b6f5201Smseidel            *-genix*)
1921cdf0e10cSrcweir                vendor=ns
1922cdf0e10cSrcweir                ;;
19234b6f5201Smseidel            *-clix*)
19241aeda8abSMatthias Seidel                vendor=intergraph
19251aeda8abSMatthias Seidel                ;;
19264b6f5201Smseidel            *-mvs* | *-opened*)
1927cdf0e10cSrcweir                vendor=ibm
1928cdf0e10cSrcweir                ;;
19294b6f5201Smseidel            *-os400*)
1930187b4248SPedro Giffuni                vendor=ibm
1931187b4248SPedro Giffuni                ;;
19324b6f5201Smseidel            s390-* | s390x-*)
19334b6f5201Smseidel                vendor=ibm
19344b6f5201Smseidel                ;;
19354b6f5201Smseidel            *-ptx*)
1936cdf0e10cSrcweir                vendor=sequent
1937cdf0e10cSrcweir                ;;
19384b6f5201Smseidel            *-tpf*)
1939187b4248SPedro Giffuni                vendor=ibm
1940187b4248SPedro Giffuni                ;;
19414b6f5201Smseidel            *-vxsim* | *-vxworks* | *-windiss*)
1942cdf0e10cSrcweir                vendor=wrs
1943cdf0e10cSrcweir                ;;
19444b6f5201Smseidel            *-aux*)
1945cdf0e10cSrcweir                vendor=apple
1946cdf0e10cSrcweir                ;;
19474b6f5201Smseidel            *-hms*)
1948cdf0e10cSrcweir                vendor=hitachi
1949cdf0e10cSrcweir                ;;
19504b6f5201Smseidel            *-mpw* | *-macos*)
1951cdf0e10cSrcweir                vendor=apple
1952cdf0e10cSrcweir                ;;
19534b6f5201Smseidel            *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1954cdf0e10cSrcweir                vendor=atari
1955cdf0e10cSrcweir                ;;
19564b6f5201Smseidel            *-vos*)
1957cdf0e10cSrcweir                vendor=stratus
1958cdf0e10cSrcweir                ;;
1959cdf0e10cSrcweir        esac
1960cdf0e10cSrcweir        ;;
1961cdf0e10cSrcweiresac
1962cdf0e10cSrcweir
1963*68bb4a96Smseidelecho "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
1964187b4248SPedro Giffuniexit
1965cdf0e10cSrcweir
1966cdf0e10cSrcweir# Local variables:
19671a5d95c5SMatthias Seidel# eval: (add-hook 'before-save-hook 'time-stamp)
1968cdf0e10cSrcweir# time-stamp-start: "timestamp='"
1969cdf0e10cSrcweir# time-stamp-format: "%:y-%02m-%02d"
1970cdf0e10cSrcweir# time-stamp-end: "'"
1971cdf0e10cSrcweir# End:
1972