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