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