1cdf0e10cSrcweir#! /bin/sh 2cdf0e10cSrcweir# Configuration validation subroutine script. 3*ff1d3d89Smseidel# Copyright 1992-2024 Free Software Foundation, Inc. 4cdf0e10cSrcweir 509be380fSmseidel# shellcheck disable=SC2006,SC2268 # see below for rationale 609be380fSmseidel 7*ff1d3d89Smseideltimestamp='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 11d50f3220Smseidel# 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: 381adde547Smseidel# 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 5509be380fSmseidel# The "shellcheck disable" line above the timestamp inhibits complaints 5609be380fSmseidel# about features and limitations of the classic Bourne shell that were 5709be380fSmseidel# superseded or lifted in POSIX. However, this script identifies a wide 5809be380fSmseidel# variety of pre-POSIX systems that do not have POSIX shells at all, and 5909be380fSmseidel# even some reasonably current systems (Solaris 10 as case-in-point) still 6009be380fSmseidel# have a pre-POSIX /bin/sh. 6109be380fSmseidel 6209be380fSmseidelme=`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*ff1d3d89SmseidelCopyright 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*ff1d3d89SmseidelTry '$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 -* ) 1013ace3152SMatthias 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 1233ace3152SMatthias Seidel# shellcheck disable=SC2162 12409be380fSmseidelsaved_IFS=$IFS 1253ace3152SMatthias SeidelIFS="-" read field1 field2 field3 field4 <<EOF 1261aeda8abSMatthias Seidel$1 1271aeda8abSMatthias SeidelEOF 12809be380fSmseidelIFS=$saved_IFS 1291aeda8abSMatthias Seidel 1301aeda8abSMatthias Seidel# Separate into logical components for further validation 1311aeda8abSMatthias Seidelcase $1 in 1321aeda8abSMatthias Seidel *-*-*-*-*) 133*ff1d3d89Smseidel echo "Invalid configuration '$1': more than four components" >&2 1341aeda8abSMatthias Seidel exit 1 1351aeda8abSMatthias Seidel ;; 1361aeda8abSMatthias Seidel *-*-*-*) 1371aeda8abSMatthias Seidel basic_machine=$field1-$field2 1385bf8527aSmseidel 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 1455bf8527aSmseidel nto-qnx* | linux-* | uclinux-uclibc* \ 1461aeda8abSMatthias Seidel | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ 1471aeda8abSMatthias Seidel | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ 148*ff1d3d89Smseidel | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ 149*ff1d3d89Smseidel | windows-* ) 1501aeda8abSMatthias Seidel basic_machine=$field1 1515bf8527aSmseidel basic_os=$maybe_os 152cdf0e10cSrcweir ;; 153ee1eb700SMatthias Seidel android-linux) 1541aeda8abSMatthias Seidel basic_machine=$field1-unknown 1555bf8527aSmseidel basic_os=linux-android 156ee1eb700SMatthias Seidel ;; 157cdf0e10cSrcweir *) 1581aeda8abSMatthias Seidel basic_machine=$field1-$field2 1595bf8527aSmseidel basic_os=$field3 1601aeda8abSMatthias Seidel ;; 1611aeda8abSMatthias Seidel esac 1621aeda8abSMatthias Seidel ;; 1631aeda8abSMatthias Seidel *-*) 1643ace3152SMatthias 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 1685bf8527aSmseidel 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 1765bf8527aSmseidel basic_os=$field2 1771aeda8abSMatthias Seidel ;; 17809be380fSmseidel zephyr*) 17909be380fSmseidel basic_machine=$field1-unknown 18009be380fSmseidel basic_os=$field2 18109be380fSmseidel ;; 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 1935bf8527aSmseidel basic_os= 1941aeda8abSMatthias Seidel ;; 1951aeda8abSMatthias Seidel *) 1961aeda8abSMatthias Seidel basic_machine=$field1 1975bf8527aSmseidel 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 2095bf8527aSmseidel basic_os=bsd 2101aeda8abSMatthias Seidel ;; 2111aeda8abSMatthias Seidel a29khif) 2121aeda8abSMatthias Seidel basic_machine=a29k-amd 2135bf8527aSmseidel basic_os=udi 2141aeda8abSMatthias Seidel ;; 2151aeda8abSMatthias Seidel adobe68k) 2161aeda8abSMatthias Seidel basic_machine=m68010-adobe 2175bf8527aSmseidel basic_os=scout 2181aeda8abSMatthias Seidel ;; 2191aeda8abSMatthias Seidel alliant) 2201aeda8abSMatthias Seidel basic_machine=fx80-alliant 2215bf8527aSmseidel basic_os= 2221aeda8abSMatthias Seidel ;; 2231aeda8abSMatthias Seidel altos | altos3068) 2241aeda8abSMatthias Seidel basic_machine=m68k-altos 2255bf8527aSmseidel basic_os= 2261aeda8abSMatthias Seidel ;; 2271aeda8abSMatthias Seidel am29k) 2281aeda8abSMatthias Seidel basic_machine=a29k-none 2295bf8527aSmseidel basic_os=bsd 2301aeda8abSMatthias Seidel ;; 2311aeda8abSMatthias Seidel amdahl) 2321aeda8abSMatthias Seidel basic_machine=580-amdahl 2335bf8527aSmseidel basic_os=sysv 2341aeda8abSMatthias Seidel ;; 2351aeda8abSMatthias Seidel amiga) 2361aeda8abSMatthias Seidel basic_machine=m68k-unknown 2375bf8527aSmseidel basic_os= 2381aeda8abSMatthias Seidel ;; 2391aeda8abSMatthias Seidel amigaos | amigados) 2401aeda8abSMatthias Seidel basic_machine=m68k-unknown 2415bf8527aSmseidel basic_os=amigaos 2421aeda8abSMatthias Seidel ;; 2431aeda8abSMatthias Seidel amigaunix | amix) 2441aeda8abSMatthias Seidel basic_machine=m68k-unknown 2455bf8527aSmseidel basic_os=sysv4 2461aeda8abSMatthias Seidel ;; 2471aeda8abSMatthias Seidel apollo68) 2481aeda8abSMatthias Seidel basic_machine=m68k-apollo 2495bf8527aSmseidel basic_os=sysv 2501aeda8abSMatthias Seidel ;; 2511aeda8abSMatthias Seidel apollo68bsd) 2521aeda8abSMatthias Seidel basic_machine=m68k-apollo 2535bf8527aSmseidel basic_os=bsd 2541aeda8abSMatthias Seidel ;; 2551aeda8abSMatthias Seidel aros) 2561aeda8abSMatthias Seidel basic_machine=i386-pc 2575bf8527aSmseidel basic_os=aros 2581aeda8abSMatthias Seidel ;; 2591aeda8abSMatthias Seidel aux) 2601aeda8abSMatthias Seidel basic_machine=m68k-apple 2615bf8527aSmseidel basic_os=aux 2621aeda8abSMatthias Seidel ;; 2631aeda8abSMatthias Seidel balance) 2641aeda8abSMatthias Seidel basic_machine=ns32k-sequent 2655bf8527aSmseidel basic_os=dynix 2661aeda8abSMatthias Seidel ;; 2671aeda8abSMatthias Seidel blackfin) 2681aeda8abSMatthias Seidel basic_machine=bfin-unknown 2695bf8527aSmseidel basic_os=linux 2701aeda8abSMatthias Seidel ;; 2711aeda8abSMatthias Seidel cegcc) 2721aeda8abSMatthias Seidel basic_machine=arm-unknown 2735bf8527aSmseidel basic_os=cegcc 2741aeda8abSMatthias Seidel ;; 2751aeda8abSMatthias Seidel convex-c1) 2761aeda8abSMatthias Seidel basic_machine=c1-convex 2775bf8527aSmseidel basic_os=bsd 2781aeda8abSMatthias Seidel ;; 2791aeda8abSMatthias Seidel convex-c2) 2801aeda8abSMatthias Seidel basic_machine=c2-convex 2815bf8527aSmseidel basic_os=bsd 2821aeda8abSMatthias Seidel ;; 2831aeda8abSMatthias Seidel convex-c32) 2841aeda8abSMatthias Seidel basic_machine=c32-convex 2855bf8527aSmseidel basic_os=bsd 2861aeda8abSMatthias Seidel ;; 2871aeda8abSMatthias Seidel convex-c34) 2881aeda8abSMatthias Seidel basic_machine=c34-convex 2895bf8527aSmseidel basic_os=bsd 2901aeda8abSMatthias Seidel ;; 2911aeda8abSMatthias Seidel convex-c38) 2921aeda8abSMatthias Seidel basic_machine=c38-convex 2935bf8527aSmseidel basic_os=bsd 2941aeda8abSMatthias Seidel ;; 2951aeda8abSMatthias Seidel cray) 2961aeda8abSMatthias Seidel basic_machine=j90-cray 2975bf8527aSmseidel basic_os=unicos 2981aeda8abSMatthias Seidel ;; 2991aeda8abSMatthias Seidel crds | unos) 3001aeda8abSMatthias Seidel basic_machine=m68k-crds 3015bf8527aSmseidel basic_os= 3021aeda8abSMatthias Seidel ;; 3031aeda8abSMatthias Seidel da30) 3041aeda8abSMatthias Seidel basic_machine=m68k-da30 3055bf8527aSmseidel basic_os= 3061aeda8abSMatthias Seidel ;; 3071aeda8abSMatthias Seidel decstation | pmax | pmin | dec3100 | decstatn) 3081aeda8abSMatthias Seidel basic_machine=mips-dec 3095bf8527aSmseidel basic_os= 3101aeda8abSMatthias Seidel ;; 3111aeda8abSMatthias Seidel delta88) 3121aeda8abSMatthias Seidel basic_machine=m88k-motorola 3135bf8527aSmseidel basic_os=sysv3 3141aeda8abSMatthias Seidel ;; 3151aeda8abSMatthias Seidel dicos) 3161aeda8abSMatthias Seidel basic_machine=i686-pc 3175bf8527aSmseidel basic_os=dicos 3181aeda8abSMatthias Seidel ;; 3191aeda8abSMatthias Seidel djgpp) 3201aeda8abSMatthias Seidel basic_machine=i586-pc 3215bf8527aSmseidel basic_os=msdosdjgpp 3221aeda8abSMatthias Seidel ;; 3231aeda8abSMatthias Seidel ebmon29k) 3241aeda8abSMatthias Seidel basic_machine=a29k-amd 3255bf8527aSmseidel basic_os=ebmon 3261aeda8abSMatthias Seidel ;; 3271aeda8abSMatthias Seidel es1800 | OSE68k | ose68k | ose | OSE) 3281aeda8abSMatthias Seidel basic_machine=m68k-ericsson 3295bf8527aSmseidel basic_os=ose 3301aeda8abSMatthias Seidel ;; 3311aeda8abSMatthias Seidel gmicro) 3321aeda8abSMatthias Seidel basic_machine=tron-gmicro 3335bf8527aSmseidel basic_os=sysv 3341aeda8abSMatthias Seidel ;; 3351aeda8abSMatthias Seidel go32) 3361aeda8abSMatthias Seidel basic_machine=i386-pc 3375bf8527aSmseidel basic_os=go32 3381aeda8abSMatthias Seidel ;; 3391aeda8abSMatthias Seidel h8300hms) 3401aeda8abSMatthias Seidel basic_machine=h8300-hitachi 3415bf8527aSmseidel basic_os=hms 3421aeda8abSMatthias Seidel ;; 3431aeda8abSMatthias Seidel h8300xray) 3441aeda8abSMatthias Seidel basic_machine=h8300-hitachi 3455bf8527aSmseidel basic_os=xray 3461aeda8abSMatthias Seidel ;; 3471aeda8abSMatthias Seidel h8500hms) 3481aeda8abSMatthias Seidel basic_machine=h8500-hitachi 3495bf8527aSmseidel basic_os=hms 3501aeda8abSMatthias Seidel ;; 3511aeda8abSMatthias Seidel harris) 3521aeda8abSMatthias Seidel basic_machine=m88k-harris 3535bf8527aSmseidel basic_os=sysv3 3541aeda8abSMatthias Seidel ;; 355859e76afSmseidel hp300 | hp300hpux) 3561aeda8abSMatthias Seidel basic_machine=m68k-hp 3575bf8527aSmseidel basic_os=hpux 3581aeda8abSMatthias Seidel ;; 3591aeda8abSMatthias Seidel hp300bsd) 3601aeda8abSMatthias Seidel basic_machine=m68k-hp 3615bf8527aSmseidel basic_os=bsd 3621aeda8abSMatthias Seidel ;; 3631aeda8abSMatthias Seidel hppaosf) 3641aeda8abSMatthias Seidel basic_machine=hppa1.1-hp 3655bf8527aSmseidel basic_os=osf 3661aeda8abSMatthias Seidel ;; 3671aeda8abSMatthias Seidel hppro) 3681aeda8abSMatthias Seidel basic_machine=hppa1.1-hp 3695bf8527aSmseidel basic_os=proelf 3701aeda8abSMatthias Seidel ;; 3711aeda8abSMatthias Seidel i386mach) 3721aeda8abSMatthias Seidel basic_machine=i386-mach 3735bf8527aSmseidel basic_os=mach 3741aeda8abSMatthias Seidel ;; 3751aeda8abSMatthias Seidel isi68 | isi) 3761aeda8abSMatthias Seidel basic_machine=m68k-isi 3775bf8527aSmseidel basic_os=sysv 3781aeda8abSMatthias Seidel ;; 3791aeda8abSMatthias Seidel m68knommu) 3801aeda8abSMatthias Seidel basic_machine=m68k-unknown 3815bf8527aSmseidel basic_os=linux 3821aeda8abSMatthias Seidel ;; 3831aeda8abSMatthias Seidel magnum | m3230) 3841aeda8abSMatthias Seidel basic_machine=mips-mips 3855bf8527aSmseidel basic_os=sysv 3861aeda8abSMatthias Seidel ;; 3871aeda8abSMatthias Seidel merlin) 3881aeda8abSMatthias Seidel basic_machine=ns32k-utek 3895bf8527aSmseidel basic_os=sysv 3901aeda8abSMatthias Seidel ;; 3911aeda8abSMatthias Seidel mingw64) 3921aeda8abSMatthias Seidel basic_machine=x86_64-pc 3935bf8527aSmseidel basic_os=mingw64 3941aeda8abSMatthias Seidel ;; 3951aeda8abSMatthias Seidel mingw32) 3961aeda8abSMatthias Seidel basic_machine=i686-pc 3975bf8527aSmseidel basic_os=mingw32 3981aeda8abSMatthias Seidel ;; 3991aeda8abSMatthias Seidel mingw32ce) 4001aeda8abSMatthias Seidel basic_machine=arm-unknown 4015bf8527aSmseidel basic_os=mingw32ce 4021aeda8abSMatthias Seidel ;; 4031aeda8abSMatthias Seidel monitor) 4041aeda8abSMatthias Seidel basic_machine=m68k-rom68k 4055bf8527aSmseidel basic_os=coff 4061aeda8abSMatthias Seidel ;; 4071aeda8abSMatthias Seidel morphos) 4081aeda8abSMatthias Seidel basic_machine=powerpc-unknown 4095bf8527aSmseidel basic_os=morphos 4101aeda8abSMatthias Seidel ;; 4111aeda8abSMatthias Seidel moxiebox) 4121aeda8abSMatthias Seidel basic_machine=moxie-unknown 4135bf8527aSmseidel basic_os=moxiebox 4141aeda8abSMatthias Seidel ;; 4151aeda8abSMatthias Seidel msdos) 4161aeda8abSMatthias Seidel basic_machine=i386-pc 4175bf8527aSmseidel basic_os=msdos 4181aeda8abSMatthias Seidel ;; 4191aeda8abSMatthias Seidel msys) 4201aeda8abSMatthias Seidel basic_machine=i686-pc 4215bf8527aSmseidel basic_os=msys 4221aeda8abSMatthias Seidel ;; 4231aeda8abSMatthias Seidel mvs) 4241aeda8abSMatthias Seidel basic_machine=i370-ibm 4255bf8527aSmseidel basic_os=mvs 4261aeda8abSMatthias Seidel ;; 4271aeda8abSMatthias Seidel nacl) 4281aeda8abSMatthias Seidel basic_machine=le32-unknown 4295bf8527aSmseidel basic_os=nacl 4301aeda8abSMatthias Seidel ;; 4311aeda8abSMatthias Seidel ncr3000) 4321aeda8abSMatthias Seidel basic_machine=i486-ncr 4335bf8527aSmseidel basic_os=sysv4 4341aeda8abSMatthias Seidel ;; 4351aeda8abSMatthias Seidel netbsd386) 4361aeda8abSMatthias Seidel basic_machine=i386-pc 4375bf8527aSmseidel basic_os=netbsd 4381aeda8abSMatthias Seidel ;; 4391aeda8abSMatthias Seidel netwinder) 4401aeda8abSMatthias Seidel basic_machine=armv4l-rebel 4415bf8527aSmseidel basic_os=linux 4421aeda8abSMatthias Seidel ;; 4431aeda8abSMatthias Seidel news | news700 | news800 | news900) 4441aeda8abSMatthias Seidel basic_machine=m68k-sony 4455bf8527aSmseidel basic_os=newsos 4461aeda8abSMatthias Seidel ;; 4471aeda8abSMatthias Seidel news1000) 4481aeda8abSMatthias Seidel basic_machine=m68030-sony 4495bf8527aSmseidel basic_os=newsos 4501aeda8abSMatthias Seidel ;; 4511aeda8abSMatthias Seidel necv70) 4521aeda8abSMatthias Seidel basic_machine=v70-nec 4535bf8527aSmseidel basic_os=sysv 4541aeda8abSMatthias Seidel ;; 4551aeda8abSMatthias Seidel nh3000) 4561aeda8abSMatthias Seidel basic_machine=m68k-harris 4575bf8527aSmseidel basic_os=cxux 4581aeda8abSMatthias Seidel ;; 4591aeda8abSMatthias Seidel nh[45]000) 4601aeda8abSMatthias Seidel basic_machine=m88k-harris 4615bf8527aSmseidel basic_os=cxux 4621aeda8abSMatthias Seidel ;; 4631aeda8abSMatthias Seidel nindy960) 4641aeda8abSMatthias Seidel basic_machine=i960-intel 4655bf8527aSmseidel basic_os=nindy 4661aeda8abSMatthias Seidel ;; 4671aeda8abSMatthias Seidel mon960) 4681aeda8abSMatthias Seidel basic_machine=i960-intel 4695bf8527aSmseidel basic_os=mon960 4701aeda8abSMatthias Seidel ;; 4711aeda8abSMatthias Seidel nonstopux) 4721aeda8abSMatthias Seidel basic_machine=mips-compaq 4735bf8527aSmseidel basic_os=nonstopux 4741aeda8abSMatthias Seidel ;; 4751aeda8abSMatthias Seidel os400) 4761aeda8abSMatthias Seidel basic_machine=powerpc-ibm 4775bf8527aSmseidel basic_os=os400 4781aeda8abSMatthias Seidel ;; 4791aeda8abSMatthias Seidel OSE68000 | ose68000) 4801aeda8abSMatthias Seidel basic_machine=m68000-ericsson 4815bf8527aSmseidel basic_os=ose 4821aeda8abSMatthias Seidel ;; 4831aeda8abSMatthias Seidel os68k) 4841aeda8abSMatthias Seidel basic_machine=m68k-none 4855bf8527aSmseidel basic_os=os68k 4861aeda8abSMatthias Seidel ;; 4871aeda8abSMatthias Seidel paragon) 4881aeda8abSMatthias Seidel basic_machine=i860-intel 4895bf8527aSmseidel basic_os=osf 4901aeda8abSMatthias Seidel ;; 4911aeda8abSMatthias Seidel parisc) 4921aeda8abSMatthias Seidel basic_machine=hppa-unknown 4935bf8527aSmseidel basic_os=linux 4945bf8527aSmseidel ;; 4955bf8527aSmseidel psp) 4965bf8527aSmseidel basic_machine=mipsallegrexel-sony 4975bf8527aSmseidel basic_os=psp 4981aeda8abSMatthias Seidel ;; 4991aeda8abSMatthias Seidel pw32) 5001aeda8abSMatthias Seidel basic_machine=i586-unknown 5015bf8527aSmseidel basic_os=pw32 5021aeda8abSMatthias Seidel ;; 5031aeda8abSMatthias Seidel rdos | rdos64) 5041aeda8abSMatthias Seidel basic_machine=x86_64-pc 5055bf8527aSmseidel basic_os=rdos 5061aeda8abSMatthias Seidel ;; 5071aeda8abSMatthias Seidel rdos32) 5081aeda8abSMatthias Seidel basic_machine=i386-pc 5095bf8527aSmseidel basic_os=rdos 5101aeda8abSMatthias Seidel ;; 5111aeda8abSMatthias Seidel rom68k) 5121aeda8abSMatthias Seidel basic_machine=m68k-rom68k 5135bf8527aSmseidel basic_os=coff 5141aeda8abSMatthias Seidel ;; 5151aeda8abSMatthias Seidel sa29200) 5161aeda8abSMatthias Seidel basic_machine=a29k-amd 5175bf8527aSmseidel basic_os=udi 5181aeda8abSMatthias Seidel ;; 5191aeda8abSMatthias Seidel sei) 5201aeda8abSMatthias Seidel basic_machine=mips-sei 5215bf8527aSmseidel basic_os=seiux 5221aeda8abSMatthias Seidel ;; 5231aeda8abSMatthias Seidel sequent) 5241aeda8abSMatthias Seidel basic_machine=i386-sequent 5255bf8527aSmseidel basic_os= 5261aeda8abSMatthias Seidel ;; 5271aeda8abSMatthias Seidel sps7) 5281aeda8abSMatthias Seidel basic_machine=m68k-bull 5295bf8527aSmseidel basic_os=sysv2 5301aeda8abSMatthias Seidel ;; 5311aeda8abSMatthias Seidel st2000) 5321aeda8abSMatthias Seidel basic_machine=m68k-tandem 5335bf8527aSmseidel basic_os= 5341aeda8abSMatthias Seidel ;; 5351aeda8abSMatthias Seidel stratus) 5361aeda8abSMatthias Seidel basic_machine=i860-stratus 5375bf8527aSmseidel basic_os=sysv4 5381aeda8abSMatthias Seidel ;; 5391aeda8abSMatthias Seidel sun2) 5401aeda8abSMatthias Seidel basic_machine=m68000-sun 5415bf8527aSmseidel basic_os= 5421aeda8abSMatthias Seidel ;; 5431aeda8abSMatthias Seidel sun2os3) 5441aeda8abSMatthias Seidel basic_machine=m68000-sun 5455bf8527aSmseidel basic_os=sunos3 5461aeda8abSMatthias Seidel ;; 5471aeda8abSMatthias Seidel sun2os4) 5481aeda8abSMatthias Seidel basic_machine=m68000-sun 5495bf8527aSmseidel basic_os=sunos4 5501aeda8abSMatthias Seidel ;; 5511aeda8abSMatthias Seidel sun3) 5521aeda8abSMatthias Seidel basic_machine=m68k-sun 5535bf8527aSmseidel basic_os= 5541aeda8abSMatthias Seidel ;; 5551aeda8abSMatthias Seidel sun3os3) 5561aeda8abSMatthias Seidel basic_machine=m68k-sun 5575bf8527aSmseidel basic_os=sunos3 5581aeda8abSMatthias Seidel ;; 5591aeda8abSMatthias Seidel sun3os4) 5601aeda8abSMatthias Seidel basic_machine=m68k-sun 5615bf8527aSmseidel basic_os=sunos4 5621aeda8abSMatthias Seidel ;; 5631aeda8abSMatthias Seidel sun4) 5641aeda8abSMatthias Seidel basic_machine=sparc-sun 5655bf8527aSmseidel basic_os= 5661aeda8abSMatthias Seidel ;; 5671aeda8abSMatthias Seidel sun4os3) 5681aeda8abSMatthias Seidel basic_machine=sparc-sun 5695bf8527aSmseidel basic_os=sunos3 5701aeda8abSMatthias Seidel ;; 5711aeda8abSMatthias Seidel sun4os4) 5721aeda8abSMatthias Seidel basic_machine=sparc-sun 5735bf8527aSmseidel basic_os=sunos4 5741aeda8abSMatthias Seidel ;; 5751aeda8abSMatthias Seidel sun4sol2) 5761aeda8abSMatthias Seidel basic_machine=sparc-sun 5775bf8527aSmseidel basic_os=solaris2 5781aeda8abSMatthias Seidel ;; 5791aeda8abSMatthias Seidel sun386 | sun386i | roadrunner) 5801aeda8abSMatthias Seidel basic_machine=i386-sun 5815bf8527aSmseidel basic_os= 5821aeda8abSMatthias Seidel ;; 5831aeda8abSMatthias Seidel sv1) 5841aeda8abSMatthias Seidel basic_machine=sv1-cray 5855bf8527aSmseidel basic_os=unicos 5861aeda8abSMatthias Seidel ;; 5871aeda8abSMatthias Seidel symmetry) 5881aeda8abSMatthias Seidel basic_machine=i386-sequent 5895bf8527aSmseidel basic_os=dynix 5901aeda8abSMatthias Seidel ;; 5911aeda8abSMatthias Seidel t3e) 5921aeda8abSMatthias Seidel basic_machine=alphaev5-cray 5935bf8527aSmseidel basic_os=unicos 5941aeda8abSMatthias Seidel ;; 5951aeda8abSMatthias Seidel t90) 5961aeda8abSMatthias Seidel basic_machine=t90-cray 5975bf8527aSmseidel basic_os=unicos 5981aeda8abSMatthias Seidel ;; 5991aeda8abSMatthias Seidel toad1) 6001aeda8abSMatthias Seidel basic_machine=pdp10-xkl 6015bf8527aSmseidel basic_os=tops20 6021aeda8abSMatthias Seidel ;; 6031aeda8abSMatthias Seidel tpf) 6041aeda8abSMatthias Seidel basic_machine=s390x-ibm 6055bf8527aSmseidel basic_os=tpf 6061aeda8abSMatthias Seidel ;; 6071aeda8abSMatthias Seidel udi29k) 6081aeda8abSMatthias Seidel basic_machine=a29k-amd 6095bf8527aSmseidel basic_os=udi 6101aeda8abSMatthias Seidel ;; 6111aeda8abSMatthias Seidel ultra3) 6121aeda8abSMatthias Seidel basic_machine=a29k-nyu 6135bf8527aSmseidel basic_os=sym1 6141aeda8abSMatthias Seidel ;; 6151aeda8abSMatthias Seidel v810 | necv810) 6161aeda8abSMatthias Seidel basic_machine=v810-nec 6175bf8527aSmseidel basic_os=none 6181aeda8abSMatthias Seidel ;; 6191aeda8abSMatthias Seidel vaxv) 6201aeda8abSMatthias Seidel basic_machine=vax-dec 6215bf8527aSmseidel basic_os=sysv 6221aeda8abSMatthias Seidel ;; 6231aeda8abSMatthias Seidel vms) 6241aeda8abSMatthias Seidel basic_machine=vax-dec 6255bf8527aSmseidel basic_os=vms 6261aeda8abSMatthias Seidel ;; 627859e76afSmseidel vsta) 628859e76afSmseidel basic_machine=i386-pc 6295bf8527aSmseidel basic_os=vsta 630859e76afSmseidel ;; 6311aeda8abSMatthias Seidel vxworks960) 6321aeda8abSMatthias Seidel basic_machine=i960-wrs 6335bf8527aSmseidel basic_os=vxworks 6341aeda8abSMatthias Seidel ;; 6351aeda8abSMatthias Seidel vxworks68) 6361aeda8abSMatthias Seidel basic_machine=m68k-wrs 6375bf8527aSmseidel basic_os=vxworks 6381aeda8abSMatthias Seidel ;; 6391aeda8abSMatthias Seidel vxworks29k) 6401aeda8abSMatthias Seidel basic_machine=a29k-wrs 6415bf8527aSmseidel basic_os=vxworks 6421aeda8abSMatthias Seidel ;; 6431aeda8abSMatthias Seidel xbox) 6441aeda8abSMatthias Seidel basic_machine=i686-pc 6455bf8527aSmseidel basic_os=mingw32 6461aeda8abSMatthias Seidel ;; 6471aeda8abSMatthias Seidel ymp) 6481aeda8abSMatthias Seidel basic_machine=ymp-cray 6495bf8527aSmseidel basic_os=unicos 6501aeda8abSMatthias Seidel ;; 6511aeda8abSMatthias Seidel *) 6521aeda8abSMatthias Seidel basic_machine=$1 6535bf8527aSmseidel 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 7055bf8527aSmseidel basic_os=cnk 7061aeda8abSMatthias Seidel ;; 7071aeda8abSMatthias Seidel decsystem10* | dec10*) 7081aeda8abSMatthias Seidel cpu=pdp10 7091aeda8abSMatthias Seidel vendor=dec 7105bf8527aSmseidel basic_os=tops10 7111aeda8abSMatthias Seidel ;; 7121aeda8abSMatthias Seidel decsystem20* | dec20*) 7131aeda8abSMatthias Seidel cpu=pdp10 7141aeda8abSMatthias Seidel vendor=dec 7155bf8527aSmseidel 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 7255bf8527aSmseidel 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 7345bf8527aSmseidel 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 7475bf8527aSmseidel 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) 78809be380fSmseidel cpu=`echo "$1" | sed -e 's/86.*/86/'` 7891aeda8abSMatthias Seidel vendor=pc 7905bf8527aSmseidel basic_os=sysv32 7911aeda8abSMatthias Seidel ;; 7921aeda8abSMatthias Seidel i*86v4*) 79309be380fSmseidel cpu=`echo "$1" | sed -e 's/86.*/86/'` 7941aeda8abSMatthias Seidel vendor=pc 7955bf8527aSmseidel basic_os=sysv4 7961aeda8abSMatthias Seidel ;; 7971aeda8abSMatthias Seidel i*86v) 79809be380fSmseidel cpu=`echo "$1" | sed -e 's/86.*/86/'` 7991aeda8abSMatthias Seidel vendor=pc 8005bf8527aSmseidel basic_os=sysv 8011aeda8abSMatthias Seidel ;; 8021aeda8abSMatthias Seidel i*86sol2) 80309be380fSmseidel cpu=`echo "$1" | sed -e 's/86.*/86/'` 8041aeda8abSMatthias Seidel vendor=pc 8055bf8527aSmseidel basic_os=solaris2 8061aeda8abSMatthias Seidel ;; 8071aeda8abSMatthias Seidel j90 | j90-cray) 8081aeda8abSMatthias Seidel cpu=j90 8091aeda8abSMatthias Seidel vendor=cray 8105bf8527aSmseidel basic_os=${basic_os:-unicos} 8111aeda8abSMatthias Seidel ;; 8121aeda8abSMatthias Seidel iris | iris4d) 8131aeda8abSMatthias Seidel cpu=mips 8141aeda8abSMatthias Seidel vendor=sgi 8155bf8527aSmseidel case $basic_os in 8161aeda8abSMatthias Seidel irix*) 8171aeda8abSMatthias Seidel ;; 8181aeda8abSMatthias Seidel *) 8195bf8527aSmseidel 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 8305bf8527aSmseidel basic_os=mint 8311aeda8abSMatthias Seidel ;; 8321aeda8abSMatthias Seidel news-3600 | risc-news) 8331aeda8abSMatthias Seidel cpu=mips 8341aeda8abSMatthias Seidel vendor=sony 8355bf8527aSmseidel basic_os=newsos 8361aeda8abSMatthias Seidel ;; 8371aeda8abSMatthias Seidel next | m*-next) 8381aeda8abSMatthias Seidel cpu=m68k 8391aeda8abSMatthias Seidel vendor=next 8405bf8527aSmseidel case $basic_os in 8413ace3152SMatthias Seidel openstep*) 8423ace3152SMatthias Seidel ;; 8431aeda8abSMatthias Seidel nextstep*) 8441aeda8abSMatthias Seidel ;; 8451aeda8abSMatthias Seidel ns2*) 8465bf8527aSmseidel basic_os=nextstep2 8471aeda8abSMatthias Seidel ;; 8481aeda8abSMatthias Seidel *) 8495bf8527aSmseidel 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 8605bf8527aSmseidel basic_os=proelf 8611aeda8abSMatthias Seidel ;; 8621aeda8abSMatthias Seidel pa-hitachi) 8631aeda8abSMatthias Seidel cpu=hppa1.1 8641aeda8abSMatthias Seidel vendor=hitachi 8655bf8527aSmseidel 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 9025bf8527aSmseidel basic_os=${basic_os:-elf} 9031aeda8abSMatthias Seidel ;; 9041aeda8abSMatthias Seidel simso-wrs) 9051aeda8abSMatthias Seidel cpu=sparclite 9061aeda8abSMatthias Seidel vendor=wrs 9075bf8527aSmseidel 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 9245bf8527aSmseidel 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 93609be380fSmseidel vendor=`echo "$basic_machine" | sed 's/-.*//'` 9371aeda8abSMatthias Seidel ;; 9381aeda8abSMatthias Seidel 9391aeda8abSMatthias Seidel *-*) 9403ace3152SMatthias Seidel # shellcheck disable=SC2162 94109be380fSmseidel saved_IFS=$IFS 9423ace3152SMatthias Seidel IFS="-" read cpu vendor <<EOF 9431aeda8abSMatthias Seidel$basic_machine 9441aeda8abSMatthias SeidelEOF 94509be380fSmseidel IFS=$saved_IFS 9461aeda8abSMatthias Seidel ;; 947*ff1d3d89Smseidel # 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 9753ace3152SMatthias 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 9795bf8527aSmseidel basic_os=${basic_os:-unicosmp} 9801aeda8abSMatthias Seidel ;; 9811aeda8abSMatthias Seidel c90-unknown | c90-cray) 9821aeda8abSMatthias Seidel vendor=cray 9835bf8527aSmseidel 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 102409be380fSmseidel armh-unknown | armh-alt) 102509be380fSmseidel cpu=armv7l 102609be380fSmseidel vendor=alt 102709be380fSmseidel basic_os=${basic_os:-linux-gnueabihf} 102809be380fSmseidel ;; 10291aeda8abSMatthias Seidel dpx20-unknown | dpx20-bull) 10301aeda8abSMatthias Seidel cpu=rs6000 10311aeda8abSMatthias Seidel vendor=bull 10325bf8527aSmseidel 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 10415bf8527aSmseidel 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 10545bf8527aSmseidel 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 10645bf8527aSmseidel 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 10745bf8527aSmseidel basic_os=linux 10751aeda8abSMatthias Seidel ;; 10761aeda8abSMatthias Seidel pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) 10771aeda8abSMatthias Seidel cpu=i586 10781aeda8abSMatthias Seidel ;; 1079*ff1d3d89Smseidel 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]-*) 111009be380fSmseidel 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]-*) 112809be380fSmseidel cpu=`echo "$cpu" | sed 's/^xscale/arm/'` 11291aeda8abSMatthias Seidel ;; 113009be380fSmseidel arm64-* | aarch64le-*) 11315bf8527aSmseidel cpu=aarch64 11325bf8527aSmseidel ;; 11331aeda8abSMatthias Seidel 11343ace3152SMatthias Seidel # Recognize the canonical CPU Types that limit and/or modify the 11351aeda8abSMatthias Seidel # company names they are paired with. 11361aeda8abSMatthias Seidel cr16-*) 11375bf8527aSmseidel 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-*) 11485bf8527aSmseidel 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 ;; 11705bf8527aSmseidel mipsallegrexel-sony) 11715bf8527aSmseidel cpu=mipsallegrexel 11725bf8527aSmseidel vendor=sony 11731aeda8abSMatthias Seidel ;; 11741aeda8abSMatthias Seidel tile*-*) 11755bf8527aSmseidel basic_os=${basic_os:-linux-gnu} 11761aeda8abSMatthias Seidel ;; 11771aeda8abSMatthias Seidel 11781aeda8abSMatthias Seidel *) 11793ace3152SMatthias 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*ff1d3d89Smseidel | 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 \ 11903ace3152SMatthias Seidel | amdgcn \ 119109be380fSmseidel | 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 \ 1197859e76afSmseidel | 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*ff1d3d89Smseidel | 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*ff1d3d89Smseidel | kvx \ 1211ee1eb700SMatthias Seidel | le32 | le64 \ 1212187b4248SPedro Giffuni | lm32 \ 1213d50f3220Smseidel | loongarch32 | loongarch64 \ 12141aeda8abSMatthias Seidel | m32c | m32r | m32rle \ 12153ace3152SMatthias Seidel | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ 12163ace3152SMatthias Seidel | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ 12171aeda8abSMatthias Seidel | m88110 | m88k | maxq | mb | mcore | mep | metag \ 12181aeda8abSMatthias Seidel | microblaze | microblazeel \ 1219*ff1d3d89Smseidel | mips* \ 12201aeda8abSMatthias Seidel | mmix \ 1221cdf0e10cSrcweir | mn10200 | mn10300 \ 1222187b4248SPedro Giffuni | moxie \ 1223187b4248SPedro Giffuni | mt \ 1224cdf0e10cSrcweir | msp430 \ 1225*ff1d3d89Smseidel | nanomips* \ 1226ee1eb700SMatthias Seidel | nds32 | nds32le | nds32be \ 12271aeda8abSMatthias Seidel | nfp \ 1228ee1eb700SMatthias Seidel | nios | nios2 | nios2eb | nios2el \ 12293ace3152SMatthias Seidel | none | np1 | ns16k | ns32k | nvptx \ 12301aeda8abSMatthias Seidel | open8 \ 12311aeda8abSMatthias Seidel | or1k* \ 12321aeda8abSMatthias Seidel | or32 \ 12331aeda8abSMatthias Seidel | orion \ 12343ace3152SMatthias Seidel | picochip \ 12351aeda8abSMatthias Seidel | pdp10 | pdp11 | pj | pjl | pn | power \ 12361aeda8abSMatthias Seidel | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ 1237ee1eb700SMatthias Seidel | pru \ 1238cdf0e10cSrcweir | pyramid \ 12391adde547Smseidel | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ 12401aeda8abSMatthias Seidel | rl78 | romp | rs6000 | rx \ 12415bf8527aSmseidel | s390 | s390x \ 1242187b4248SPedro Giffuni | score \ 12433ace3152SMatthias Seidel | sh | shl \ 12443ace3152SMatthias 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 \ 12511adde547Smseidel | thumbv7* \ 12521aeda8abSMatthias Seidel | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ 12531aeda8abSMatthias Seidel | tron \ 1254187b4248SPedro Giffuni | ubicom32 \ 12553ace3152SMatthias Seidel | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ 12561aeda8abSMatthias Seidel | vax \ 1257*ff1d3d89Smseidel | vc4 \ 1258ee1eb700SMatthias Seidel | visium \ 12593ace3152SMatthias Seidel | w65 \ 12603ace3152SMatthias 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*ff1d3d89Smseidel 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*ff1d3d89Smseidelif test x"$basic_os" != x 1291cdf0e10cSrcweirthen 12925bf8527aSmseidel 129309be380fSmseidel# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just 12945bf8527aSmseidel# set os. 1295*ff1d3d89Smseidelobj= 12965bf8527aSmseidelcase $basic_os in 12975bf8527aSmseidel gnu/linux*) 12985bf8527aSmseidel kernel=linux 129909be380fSmseidel os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` 13005bf8527aSmseidel ;; 13015bf8527aSmseidel os2-emx) 13025bf8527aSmseidel kernel=os2 130309be380fSmseidel os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` 13045bf8527aSmseidel ;; 13055bf8527aSmseidel nto-qnx*) 13065bf8527aSmseidel kernel=nto 130709be380fSmseidel os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` 13085bf8527aSmseidel ;; 13095bf8527aSmseidel *-*) 13105bf8527aSmseidel # shellcheck disable=SC2162 131109be380fSmseidel saved_IFS=$IFS 13125bf8527aSmseidel IFS="-" read kernel os <<EOF 13135bf8527aSmseidel$basic_os 13145bf8527aSmseidelEOF 131509be380fSmseidel IFS=$saved_IFS 13165bf8527aSmseidel ;; 13175bf8527aSmseidel # Default OS when just kernel was specified 13185bf8527aSmseidel nto*) 13195bf8527aSmseidel kernel=nto 132009be380fSmseidel os=`echo "$basic_os" | sed -e 's|nto|qnx|'` 13215bf8527aSmseidel ;; 13225bf8527aSmseidel linux*) 13235bf8527aSmseidel kernel=linux 132409be380fSmseidel os=`echo "$basic_os" | sed -e 's|linux|gnu|'` 13255bf8527aSmseidel ;; 1326d50f3220Smseidel managarm*) 1327d50f3220Smseidel kernel=managarm 1328d50f3220Smseidel os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` 1329d50f3220Smseidel ;; 13305bf8527aSmseidel *) 13315bf8527aSmseidel kernel= 13325bf8527aSmseidel os=$basic_os 13335bf8527aSmseidel ;; 13345bf8527aSmseidelesac 13355bf8527aSmseidel 13365bf8527aSmseidel# Now, normalize the OS (knowing we just have one component, it's not a kernel, 13375bf8527aSmseidel# 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.*) 134909be380fSmseidel 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]*) 137809be380fSmseidel os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` 13791aeda8abSMatthias Seidel ;; 13805bf8527aSmseidel 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*) 13905bf8527aSmseidel 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 ;; 14015bf8527aSmseidel lynxos*) 14025bf8527aSmseidel # don't get caught up in next wildcard 14035bf8527aSmseidel ;; 14041aeda8abSMatthias Seidel lynx*) 14051aeda8abSMatthias Seidel os=lynxos 14061aeda8abSMatthias Seidel ;; 14075bf8527aSmseidel mac[0-9]*) 140809be380fSmseidel 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*) 141709be380fSmseidel os=`echo "$os" | sed -e 's|sunos5|solaris2|'` 1418cdf0e10cSrcweir ;; 14191aeda8abSMatthias Seidel sunos6*) 142009be380fSmseidel 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.*) 145409be380fSmseidel 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*ff1d3d89Smseidel os= 1496*ff1d3d89Smseidel obj=elf 149786278b1cSMatthias Seidel ;; 149886278b1cSMatthias Seidel esac 149986278b1cSMatthias Seidel ;; 1500*ff1d3d89Smseidel aout* | coff* | elf* | pe*) 1501*ff1d3d89Smseidel # These are machine code file formats, not OSes 1502*ff1d3d89Smseidel obj=$os 1503*ff1d3d89Smseidel os= 1504*ff1d3d89Smseidel ;; 1505cdf0e10cSrcweir *) 15065bf8527aSmseidel # No normalization, but not necessarily accepted, that comes below. 1507cdf0e10cSrcweir ;; 1508cdf0e10cSrcweiresac 15095bf8527aSmseidel 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 15225bf8527aSmseidelkernel= 1523*ff1d3d89Smseidelobj= 15241aeda8abSMatthias Seidelcase $cpu-$vendor in 1525187b4248SPedro Giffuni score-*) 1526*ff1d3d89Smseidel os= 1527*ff1d3d89Smseidel obj=elf 1528187b4248SPedro Giffuni ;; 1529187b4248SPedro Giffuni spu-*) 1530*ff1d3d89Smseidel os= 1531*ff1d3d89Smseidel obj=elf 1532187b4248SPedro Giffuni ;; 1533cdf0e10cSrcweir *-acorn) 15341aeda8abSMatthias Seidel os=riscix1.2 1535cdf0e10cSrcweir ;; 1536cdf0e10cSrcweir arm*-rebel) 15375bf8527aSmseidel kernel=linux 15385bf8527aSmseidel os=gnu 1539cdf0e10cSrcweir ;; 1540cdf0e10cSrcweir arm*-semi) 1541*ff1d3d89Smseidel os= 1542*ff1d3d89Smseidel obj=aout 1543cdf0e10cSrcweir ;; 1544cdf0e10cSrcweir c4x-* | tic4x-*) 1545*ff1d3d89Smseidel os= 1546*ff1d3d89Smseidel obj=coff 1547cdf0e10cSrcweir ;; 1548ee1eb700SMatthias Seidel c8051-*) 1549*ff1d3d89Smseidel os= 1550*ff1d3d89Smseidel obj=elf 15511aeda8abSMatthias Seidel ;; 15521aeda8abSMatthias Seidel clipper-intergraph) 15531aeda8abSMatthias Seidel os=clix 1554ee1eb700SMatthias Seidel ;; 1555ee1eb700SMatthias Seidel hexagon-*) 1556*ff1d3d89Smseidel os= 1557*ff1d3d89Smseidel obj=elf 1558ee1eb700SMatthias Seidel ;; 1559ee1eb700SMatthias Seidel tic54x-*) 1560*ff1d3d89Smseidel os= 1561*ff1d3d89Smseidel obj=coff 1562ee1eb700SMatthias Seidel ;; 1563ee1eb700SMatthias Seidel tic55x-*) 1564*ff1d3d89Smseidel os= 1565*ff1d3d89Smseidel obj=coff 1566ee1eb700SMatthias Seidel ;; 1567ee1eb700SMatthias Seidel tic6x-*) 1568*ff1d3d89Smseidel os= 1569*ff1d3d89Smseidel 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*ff1d3d89Smseidel os= 1592*ff1d3d89Smseidel obj=aout 1593cdf0e10cSrcweir ;; 1594187b4248SPedro Giffuni mep-*) 1595*ff1d3d89Smseidel os= 1596*ff1d3d89Smseidel obj=elf 1597187b4248SPedro Giffuni ;; 1598cdf0e10cSrcweir mips*-cisco) 1599*ff1d3d89Smseidel os= 1600*ff1d3d89Smseidel obj=elf 1601cdf0e10cSrcweir ;; 1602*ff1d3d89Smseidel mips*-*|nanomips*-*) 1603*ff1d3d89Smseidel os= 1604*ff1d3d89Smseidel obj=elf 1605cdf0e10cSrcweir ;; 1606cdf0e10cSrcweir or32-*) 1607*ff1d3d89Smseidel os= 1608*ff1d3d89Smseidel 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*ff1d3d89Smseidel os= 1618*ff1d3d89Smseidel 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*ff1d3d89Smseidel os= 1700*ff1d3d89Smseidel obj=coff 1701cdf0e10cSrcweir ;; 1702cdf0e10cSrcweir *-*bug) 1703*ff1d3d89Smseidel os= 1704*ff1d3d89Smseidel 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 17195bf8527aSmseidel 1720cdf0e10cSrcweirfi 1721cdf0e10cSrcweir 1722*ff1d3d89Smseidel# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). 1723*ff1d3d89Smseidel 17245bf8527aSmseidelcase $os in 17251adde547Smseidel # Sometimes we do "kernel-libc", so those need to count as OSes. 1726*ff1d3d89Smseidel llvm* | musl* | newlib* | relibc* | uclibc*) 17275bf8527aSmseidel ;; 17281adde547Smseidel # Likewise for "kernel-abi" 17291adde547Smseidel eabi* | gnueabi*) 17301adde547Smseidel ;; 17311adde547Smseidel # VxWorks passes extra cpu info in the 4th filed. 17321adde547Smseidel simlinux | simwindows | spe) 17335bf8527aSmseidel ;; 1734*ff1d3d89Smseidel # See `case $cpu-$os` validation below 1735*ff1d3d89Smseidel ghcjs) 1736*ff1d3d89Smseidel ;; 17375bf8527aSmseidel # Now accept the basic system types. 17385bf8527aSmseidel # The portable systems comes first. 17395bf8527aSmseidel # Each alternative MUST end in a * to match a version number. 17405bf8527aSmseidel gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ 17415bf8527aSmseidel | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ 17425bf8527aSmseidel | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ 17435bf8527aSmseidel | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ 17445bf8527aSmseidel | hiux* | abug | nacl* | netware* | windows* \ 1745*ff1d3d89Smseidel | os9* | macos* | osx* | ios* | tvos* | watchos* \ 17465bf8527aSmseidel | mpw* | magic* | mmixware* | mon960* | lnews* \ 17475bf8527aSmseidel | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ 17485bf8527aSmseidel | aos* | aros* | cloudabi* | sortix* | twizzler* \ 17495bf8527aSmseidel | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ 17505bf8527aSmseidel | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ 17515bf8527aSmseidel | mirbsd* | netbsd* | dicos* | openedition* | ose* \ 175209be380fSmseidel | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ 17535bf8527aSmseidel | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ 1754*ff1d3d89Smseidel | bosx* | nextstep* | cxux* | oabi* \ 1755*ff1d3d89Smseidel | ptx* | ecoff* | winnt* | domain* | vsta* \ 17565bf8527aSmseidel | udi* | lites* | ieee* | go32* | aux* | hcos* \ 175709be380fSmseidel | chorusrdb* | cegcc* | glidix* | serenity* \ 1758*ff1d3d89Smseidel | cygwin* | msys* | moss* | proelf* | rtems* \ 17595bf8527aSmseidel | midipix* | mingw32* | mingw64* | mint* \ 17605bf8527aSmseidel | uxpv* | beos* | mpeix* | udk* | moxiebox* \ 17615bf8527aSmseidel | interix* | uwin* | mks* | rhapsody* | darwin* \ 17625bf8527aSmseidel | openstep* | oskit* | conix* | pw32* | nonstopux* \ 17635bf8527aSmseidel | storm-chaos* | tops10* | tenex* | tops20* | its* \ 17645bf8527aSmseidel | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ 17655bf8527aSmseidel | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ 17665bf8527aSmseidel | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ 17675bf8527aSmseidel | skyos* | haiku* | rdos* | toppers* | drops* | es* \ 17685bf8527aSmseidel | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ 17695bf8527aSmseidel | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ 177009be380fSmseidel | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ 1771*ff1d3d89Smseidel | fiwix* | mlibc* | cos* | mbr* | ironclad* ) 17725bf8527aSmseidel ;; 17735bf8527aSmseidel # This one is extra strict with allowed versions 17745bf8527aSmseidel sco3.2v2 | sco3.2v[4-9]* | sco5v6*) 17755bf8527aSmseidel # Don't forget version if it is 3.2v4 or newer. 17765bf8527aSmseidel ;; 1777*ff1d3d89Smseidel # This refers to builds using the UEFI calling convention 1778*ff1d3d89Smseidel # (which depends on the architecture) and PE file format. 1779*ff1d3d89Smseidel # Note that this is both a different calling convention and 1780*ff1d3d89Smseidel # different file format than that of GNU-EFI 1781*ff1d3d89Smseidel # (x86_64-w64-mingw32). 1782*ff1d3d89Smseidel uefi) 1783*ff1d3d89Smseidel ;; 17845bf8527aSmseidel none) 17855bf8527aSmseidel ;; 1786*ff1d3d89Smseidel kernel* | msvc* ) 1787d50f3220Smseidel # Restricted further below 1788d50f3220Smseidel ;; 1789*ff1d3d89Smseidel '') 1790*ff1d3d89Smseidel if test x"$obj" = x 1791*ff1d3d89Smseidel then 1792*ff1d3d89Smseidel echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 1793*ff1d3d89Smseidel fi 1794*ff1d3d89Smseidel ;; 17955bf8527aSmseidel *) 1796*ff1d3d89Smseidel echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 1797*ff1d3d89Smseidel exit 1 1798*ff1d3d89Smseidel ;; 1799*ff1d3d89Smseidelesac 1800*ff1d3d89Smseidel 1801*ff1d3d89Smseidelcase $obj in 1802*ff1d3d89Smseidel aout* | coff* | elf* | pe*) 1803*ff1d3d89Smseidel ;; 1804*ff1d3d89Smseidel '') 1805*ff1d3d89Smseidel # empty is fine 1806*ff1d3d89Smseidel ;; 1807*ff1d3d89Smseidel *) 1808*ff1d3d89Smseidel echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 1809*ff1d3d89Smseidel exit 1 1810*ff1d3d89Smseidel ;; 1811*ff1d3d89Smseidelesac 1812*ff1d3d89Smseidel 1813*ff1d3d89Smseidel# Here we handle the constraint that a (synthetic) cpu and os are 1814*ff1d3d89Smseidel# valid only in combination with each other and nowhere else. 1815*ff1d3d89Smseidelcase $cpu-$os in 1816*ff1d3d89Smseidel # The "javascript-unknown-ghcjs" triple is used by GHC; we 1817*ff1d3d89Smseidel # accept it here in order to tolerate that, but reject any 1818*ff1d3d89Smseidel # variations. 1819*ff1d3d89Smseidel javascript-ghcjs) 1820*ff1d3d89Smseidel ;; 1821*ff1d3d89Smseidel javascript-* | *-ghcjs) 1822*ff1d3d89Smseidel echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 18235bf8527aSmseidel exit 1 18245bf8527aSmseidel ;; 18255bf8527aSmseidelesac 18265bf8527aSmseidel 18275bf8527aSmseidel# As a final step for OS-related things, validate the OS-kernel combination 18285bf8527aSmseidel# (given a valid OS), if there is a kernel. 1829*ff1d3d89Smseidelcase $kernel-$os-$obj in 1830*ff1d3d89Smseidel linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ 1831*ff1d3d89Smseidel | linux-mlibc*- | linux-musl*- | linux-newlib*- \ 1832*ff1d3d89Smseidel | linux-relibc*- | linux-uclibc*- ) 18335bf8527aSmseidel ;; 1834*ff1d3d89Smseidel uclinux-uclibc*- ) 18355bf8527aSmseidel ;; 1836*ff1d3d89Smseidel managarm-mlibc*- | managarm-kernel*- ) 1837d50f3220Smseidel ;; 1838*ff1d3d89Smseidel windows*-msvc*-) 1839*ff1d3d89Smseidel ;; 1840*ff1d3d89Smseidel -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ 1841*ff1d3d89Smseidel | -uclibc*- ) 18425bf8527aSmseidel # These are just libc implementations, not actual OSes, and thus 18435bf8527aSmseidel # require a kernel. 1844*ff1d3d89Smseidel echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 18455bf8527aSmseidel exit 1 18465bf8527aSmseidel ;; 1847*ff1d3d89Smseidel -kernel*- ) 1848*ff1d3d89Smseidel echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 1849d50f3220Smseidel exit 1 1850d50f3220Smseidel ;; 1851*ff1d3d89Smseidel *-kernel*- ) 1852*ff1d3d89Smseidel echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 1853d50f3220Smseidel exit 1 1854d50f3220Smseidel ;; 1855*ff1d3d89Smseidel *-msvc*- ) 1856*ff1d3d89Smseidel echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 1857*ff1d3d89Smseidel exit 1 18585bf8527aSmseidel ;; 1859*ff1d3d89Smseidel kfreebsd*-gnu*- | kopensolaris*-gnu*-) 18601adde547Smseidel ;; 1861*ff1d3d89Smseidel vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) 18625bf8527aSmseidel ;; 1863*ff1d3d89Smseidel nto-qnx*-) 18645bf8527aSmseidel ;; 1865*ff1d3d89Smseidel os2-emx-) 18665bf8527aSmseidel ;; 1867*ff1d3d89Smseidel *-eabi*- | *-gnueabi*-) 1868*ff1d3d89Smseidel ;; 1869*ff1d3d89Smseidel none--*) 1870*ff1d3d89Smseidel # None (no kernel, i.e. freestanding / bare metal), 1871*ff1d3d89Smseidel # can be paired with an machine code file format 1872*ff1d3d89Smseidel ;; 1873*ff1d3d89Smseidel -*-) 18745bf8527aSmseidel # Blank kernel with real OS is always fine. 18755bf8527aSmseidel ;; 1876*ff1d3d89Smseidel --*) 1877*ff1d3d89Smseidel # Blank kernel and OS with real machine code file format is always fine. 1878*ff1d3d89Smseidel ;; 1879*ff1d3d89Smseidel *-*-*) 1880*ff1d3d89Smseidel echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 18815bf8527aSmseidel exit 1 18825bf8527aSmseidel ;; 18835bf8527aSmseidelesac 18845bf8527aSmseidel 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) 18895bf8527aSmseidel case $cpu-$os in 18905bf8527aSmseidel *-riscix*) 1891cdf0e10cSrcweir vendor=acorn 1892cdf0e10cSrcweir ;; 18935bf8527aSmseidel *-sunos*) 1894cdf0e10cSrcweir vendor=sun 1895cdf0e10cSrcweir ;; 18965bf8527aSmseidel *-cnk* | *-aix*) 1897cdf0e10cSrcweir vendor=ibm 1898cdf0e10cSrcweir ;; 18995bf8527aSmseidel *-beos*) 1900cdf0e10cSrcweir vendor=be 1901cdf0e10cSrcweir ;; 19025bf8527aSmseidel *-hpux*) 1903cdf0e10cSrcweir vendor=hp 1904cdf0e10cSrcweir ;; 19055bf8527aSmseidel *-mpeix*) 1906cdf0e10cSrcweir vendor=hp 1907cdf0e10cSrcweir ;; 19085bf8527aSmseidel *-hiux*) 1909cdf0e10cSrcweir vendor=hitachi 1910cdf0e10cSrcweir ;; 19115bf8527aSmseidel *-unos*) 1912cdf0e10cSrcweir vendor=crds 1913cdf0e10cSrcweir ;; 19145bf8527aSmseidel *-dgux*) 1915cdf0e10cSrcweir vendor=dg 1916cdf0e10cSrcweir ;; 19175bf8527aSmseidel *-luna*) 1918cdf0e10cSrcweir vendor=omron 1919cdf0e10cSrcweir ;; 19205bf8527aSmseidel *-genix*) 1921cdf0e10cSrcweir vendor=ns 1922cdf0e10cSrcweir ;; 19235bf8527aSmseidel *-clix*) 19241aeda8abSMatthias Seidel vendor=intergraph 19251aeda8abSMatthias Seidel ;; 19265bf8527aSmseidel *-mvs* | *-opened*) 1927cdf0e10cSrcweir vendor=ibm 1928cdf0e10cSrcweir ;; 19295bf8527aSmseidel *-os400*) 1930187b4248SPedro Giffuni vendor=ibm 1931187b4248SPedro Giffuni ;; 19325bf8527aSmseidel s390-* | s390x-*) 19335bf8527aSmseidel vendor=ibm 19345bf8527aSmseidel ;; 19355bf8527aSmseidel *-ptx*) 1936cdf0e10cSrcweir vendor=sequent 1937cdf0e10cSrcweir ;; 19385bf8527aSmseidel *-tpf*) 1939187b4248SPedro Giffuni vendor=ibm 1940187b4248SPedro Giffuni ;; 19415bf8527aSmseidel *-vxsim* | *-vxworks* | *-windiss*) 1942cdf0e10cSrcweir vendor=wrs 1943cdf0e10cSrcweir ;; 19445bf8527aSmseidel *-aux*) 1945cdf0e10cSrcweir vendor=apple 1946cdf0e10cSrcweir ;; 19475bf8527aSmseidel *-hms*) 1948cdf0e10cSrcweir vendor=hitachi 1949cdf0e10cSrcweir ;; 19505bf8527aSmseidel *-mpw* | *-macos*) 1951cdf0e10cSrcweir vendor=apple 1952cdf0e10cSrcweir ;; 19535bf8527aSmseidel *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) 1954cdf0e10cSrcweir vendor=atari 1955cdf0e10cSrcweir ;; 19565bf8527aSmseidel *-vos*) 1957cdf0e10cSrcweir vendor=stratus 1958cdf0e10cSrcweir ;; 1959cdf0e10cSrcweir esac 1960cdf0e10cSrcweir ;; 1961cdf0e10cSrcweiresac 1962cdf0e10cSrcweir 1963*ff1d3d89Smseidelecho "$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