1#!/bin/sh 2# Configuration validation subroutine script, version 1.1. 3# Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. 4# This file is (in principle) common to ALL GNU software. 5# The presence of a machine in this file suggests that SOME GNU software 6# can handle that machine. It does not imply ALL GNU software can. 7# 8# This file is free software; you can redistribute it and/or modify 9# it under the terms of the GNU General Public License as published by 10# the Free Software Foundation; either version 2 of the License, or 11# (at your option) any later version. 12# 13# This program is distributed in the hope that it will be useful, 14# but WITHOUT ANY WARRANTY; without even the implied warranty of 15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16# GNU General Public License for more details. 17# 18# You should have received a copy of the GNU General Public License 19# along with this program; if not, write to the Free Software 20# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 22# As a special exception to the GNU General Public License, if you 23# distribute this file as part of a program that contains a 24# configuration script generated by Autoconf, you may include it under 25# the same distribution terms that you use for the rest of that program. 26 27# Configuration subroutine to validate and canonicalize a configuration type. 28# Supply the specified configuration type as an argument. 29# If it is invalid, we print an error message on stderr and exit with code 1. 30# Otherwise, we print the canonical config type on stdout and succeed. 31 32# This file is supposed to be the same for all GNU packages 33# and recognize all the CPU types, system types and aliases 34# that are meaningful with *any* GNU software. 35# Each package is responsible for reporting which valid configurations 36# it does not support. The user should be able to distinguish 37# a failure to support a valid configuration from a meaningless 38# configuration. 39 40# The goal of this file is to map all the various variations of a given 41# machine specification into a single specification in the form: 42# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 43# It is wrong to echo any other type of specification. 44 45# First pass through any local machine types. 46case $1 in 47 *local*) 48 echo $1 49 exit 0 50 ;; 51 *) 52 ;; 53esac 54 55# Separate what the user gave into CPU-COMPANY and OS (if any). 56basic_machine=`echo $1 | sed 's/-[^-]*$//'` 57if [ $basic_machine != $1 ] 58then os=`echo $1 | sed 's/.*-/-/'` 59else os=; fi 60 61### Let's recognize common machines as not being operating systems so 62### that things like config.sub decstation-3100 work. We also 63### recognize some manufacturers as not being operating systems, so we 64### can provide default operating systems below. 65case $os in 66 -sun*os*) 67 # Prevent following clause from handling this invalid input. 68 ;; 69 -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ 70 -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ 71 -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ 72 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ 73 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ 74 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp ) 75 os= 76 basic_machine=$1 77 ;; 78 -hiux*) 79 os=-hiuxwe2 80 ;; 81 -sco4) 82 os=-sco3.2v4 83 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 84 ;; 85 -sco3.2.[4-9]*) 86 os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` 87 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 88 ;; 89 -sco3.2v[4-9]*) 90 # Don't forget version if it is 3.2v4 or newer. 91 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 92 ;; 93 -sco*) 94 os=-sco3.2v2 95 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 96 ;; 97 -isc) 98 os=-isc2.2 99 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 100 ;; 101 -clix*) 102 basic_machine=clipper-intergraph 103 ;; 104 -isc*) 105 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` 106 ;; 107 -lynx) 108 os=-lynxos 109 ;; 110 -ptx*) 111 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` 112 ;; 113 -windowsnt*) 114 os=`echo $os | sed -e 's/windowsnt/winnt/'` 115 ;; 116esac 117 118# Decode aliases for certain CPU-COMPANY combinations. 119case $basic_machine in 120 # Recognize the basic CPU types without company name. 121 # Some are omitted here because they have special meanings below. 122 tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \ 123 | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ 124 | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \ 125 | powerpc | sparc64 | 1750a | dsp16xx | mips64 | mipsel \ 126 | pdp11 | mips64el | mips64orion | mips64orionel ) 127 basic_machine=$basic_machine-unknown 128 ;; 129 # Object if more than one company name word. 130 *-*-*) 131 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 132 exit 1 133 ;; 134 # Recognize the basic CPU types with company name. 135 vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \ 136 | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ 137 | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ 138 | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ 139 | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ 140 | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ 141 | pdp11-* | sh-* | powerpc-* | sparc64-* | mips64-* | mipsel-* \ 142 | mips64el-* | mips64orion-* | mips64orionel-* ) 143 ;; 144 # Recognize the various machine names and aliases which stand 145 # for a CPU type and a company and sometimes even an OS. 146 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) 147 basic_machine=m68000-att 148 ;; 149 3b*) 150 basic_machine=we32k-att 151 ;; 152 alliant | fx80) 153 basic_machine=fx80-alliant 154 ;; 155 altos | altos3068) 156 basic_machine=m68k-altos 157 ;; 158 am29k) 159 basic_machine=a29k-none 160 os=-bsd 161 ;; 162 amdahl) 163 basic_machine=580-amdahl 164 os=-sysv 165 ;; 166 amiga | amiga-*) 167 basic_machine=m68k-cbm 168 ;; 169 amigados) 170 basic_machine=m68k-cbm 171 os=-amigados 172 ;; 173 amigaunix | amix) 174 basic_machine=m68k-cbm 175 os=-sysv4 176 ;; 177 apollo68) 178 basic_machine=m68k-apollo 179 os=-sysv 180 ;; 181 balance) 182 basic_machine=ns32k-sequent 183 os=-dynix 184 ;; 185 convex-c1) 186 basic_machine=c1-convex 187 os=-bsd 188 ;; 189 convex-c2) 190 basic_machine=c2-convex 191 os=-bsd 192 ;; 193 convex-c32) 194 basic_machine=c32-convex 195 os=-bsd 196 ;; 197 convex-c34) 198 basic_machine=c34-convex 199 os=-bsd 200 ;; 201 convex-c38) 202 basic_machine=c38-convex 203 os=-bsd 204 ;; 205 cray | ymp) 206 basic_machine=ymp-cray 207 os=-unicos 208 ;; 209 cray2) 210 basic_machine=cray2-cray 211 os=-unicos 212 ;; 213 crds | unos) 214 basic_machine=m68k-crds 215 ;; 216 da30 | da30-*) 217 basic_machine=m68k-da30 218 ;; 219 decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) 220 basic_machine=mips-dec 221 ;; 222 delta | 3300 | motorola-3300 | motorola-delta \ 223 | 3300-motorola | delta-motorola) 224 basic_machine=m68k-motorola 225 ;; 226 delta88) 227 basic_machine=m88k-motorola 228 os=-sysv3 229 ;; 230 dpx20 | dpx20-*) 231 basic_machine=rs6000-bull 232 os=-bosx 233 ;; 234 dpx2* | dpx2*-bull) 235 basic_machine=m68k-bull 236 os=-sysv3 237 ;; 238 ebmon29k) 239 basic_machine=a29k-amd 240 os=-ebmon 241 ;; 242 elxsi) 243 basic_machine=elxsi-elxsi 244 os=-bsd 245 ;; 246 encore | umax | mmax) 247 basic_machine=ns32k-encore 248 ;; 249 fx2800) 250 basic_machine=i860-alliant 251 ;; 252 genix) 253 basic_machine=ns32k-ns 254 ;; 255 gmicro) 256 basic_machine=tron-gmicro 257 os=-sysv 258 ;; 259 h3050r* | hiux*) 260 basic_machine=hppa1.1-hitachi 261 os=-hiuxwe2 262 ;; 263 h8300hms) 264 basic_machine=h8300-hitachi 265 os=-hms 266 ;; 267 harris) 268 basic_machine=m88k-harris 269 os=-sysv3 270 ;; 271 hp300-*) 272 basic_machine=m68k-hp 273 ;; 274 hp300bsd) 275 basic_machine=m68k-hp 276 os=-bsd 277 ;; 278 hp300hpux) 279 basic_machine=m68k-hp 280 os=-hpux 281 ;; 282 hp9k2[0-9][0-9] | hp9k31[0-9]) 283 basic_machine=m68000-hp 284 ;; 285 hp9k3[2-9][0-9]) 286 basic_machine=m68k-hp 287 ;; 288 hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) 289 basic_machine=hppa1.1-hp 290 ;; 291 hp9k8[0-9][0-9] | hp8[0-9][0-9]) 292 basic_machine=hppa1.0-hp 293 ;; 294 i370-ibm* | ibm*) 295 basic_machine=i370-ibm 296 os=-mvs 297 ;; 298# I'm not sure what "Sysv32" means. Should this be sysv3.2? 299 i[345]86v32) 300 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` 301 os=-sysv32 302 ;; 303 i[345]86v4*) 304 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` 305 os=-sysv4 306 ;; 307 i[345]86v) 308 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` 309 os=-sysv 310 ;; 311 i[345]86sol2) 312 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` 313 os=-solaris2 314 ;; 315 iris | iris4d) 316 basic_machine=mips-sgi 317 case $os in 318 -irix*) 319 ;; 320 *) 321 os=-irix4 322 ;; 323 esac 324 ;; 325 isi68 | isi) 326 basic_machine=m68k-isi 327 os=-sysv 328 ;; 329 m88k-omron*) 330 basic_machine=m88k-omron 331 ;; 332 magnum | m3230) 333 basic_machine=mips-mips 334 os=-sysv 335 ;; 336 merlin) 337 basic_machine=ns32k-utek 338 os=-sysv 339 ;; 340 miniframe) 341 basic_machine=m68000-convergent 342 ;; 343 mips3*-*) 344 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` 345 ;; 346 mips3*) 347 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown 348 ;; 349 ncr3000) 350 basic_machine=i486-ncr 351 os=-sysv4 352 ;; 353 news | news700 | news800 | news900) 354 basic_machine=m68k-sony 355 os=-newsos 356 ;; 357 news1000) 358 basic_machine=m68030-sony 359 os=-newsos 360 ;; 361 news-3600 | risc-news) 362 basic_machine=mips-sony 363 os=-newsos 364 ;; 365 next | m*-next ) 366 basic_machine=m68k-next 367 case $os in 368 -nextstep* ) 369 ;; 370 -ns2*) 371 os=-nextstep2 372 ;; 373 *) 374 os=-nextstep3 375 ;; 376 esac 377 ;; 378 nh3000) 379 basic_machine=m68k-harris 380 os=-cxux 381 ;; 382 nh[45]000) 383 basic_machine=m88k-harris 384 os=-cxux 385 ;; 386 nindy960) 387 basic_machine=i960-intel 388 os=-nindy 389 ;; 390 np1) 391 basic_machine=np1-gould 392 ;; 393 pa-hitachi) 394 basic_machine=hppa1.1-hitachi 395 os=-hiuxwe2 396 ;; 397 paragon) 398 basic_machine=i860-intel 399 os=-osf 400 ;; 401 pbd) 402 basic_machine=sparc-tti 403 ;; 404 pbb) 405 basic_machine=m68k-tti 406 ;; 407 pc532 | pc532-*) 408 basic_machine=ns32k-pc532 409 ;; 410 pentium-*) 411 # We will change tis to say i586 once there has been 412 # time for various packages to start to recognize that. 413 basic_machine=i486-`echo $basic_machine | sed 's/^[^-]*-//'` 414 ;; 415 pn) 416 basic_machine=pn-gould 417 ;; 418 ps2) 419 basic_machine=i386-ibm 420 ;; 421 rtpc | rtpc-*) 422 basic_machine=romp-ibm 423 ;; 424 sequent) 425 basic_machine=i386-sequent 426 ;; 427 sh) 428 basic_machine=sh-hitachi 429 os=-hms 430 ;; 431 sps7) 432 basic_machine=m68k-bull 433 os=-sysv2 434 ;; 435 spur) 436 basic_machine=spur-unknown 437 ;; 438 sun2) 439 basic_machine=m68000-sun 440 ;; 441 sun2os3) 442 basic_machine=m68000-sun 443 os=-sunos3 444 ;; 445 sun2os4) 446 basic_machine=m68000-sun 447 os=-sunos4 448 ;; 449 sun3os3) 450 basic_machine=m68k-sun 451 os=-sunos3 452 ;; 453 sun3os4) 454 basic_machine=m68k-sun 455 os=-sunos4 456 ;; 457 sun4os3) 458 basic_machine=sparc-sun 459 os=-sunos3 460 ;; 461 sun4os4) 462 basic_machine=sparc-sun 463 os=-sunos4 464 ;; 465 sun3 | sun3-*) 466 basic_machine=m68k-sun 467 ;; 468 sun4) 469 basic_machine=sparc-sun 470 ;; 471 sun386 | sun386i | roadrunner) 472 basic_machine=i386-sun 473 ;; 474 symmetry) 475 basic_machine=i386-sequent 476 os=-dynix 477 ;; 478 tower | tower-32) 479 basic_machine=m68k-ncr 480 ;; 481 ultra3) 482 basic_machine=a29k-nyu 483 os=-sym1 484 ;; 485 vaxv) 486 basic_machine=vax-dec 487 os=-sysv 488 ;; 489 vms) 490 basic_machine=vax-dec 491 os=-vms 492 ;; 493 vxworks960) 494 basic_machine=i960-wrs 495 os=-vxworks 496 ;; 497 vxworks68) 498 basic_machine=m68k-wrs 499 os=-vxworks 500 ;; 501 xmp) 502 basic_machine=xmp-cray 503 os=-unicos 504 ;; 505 xps | xps100) 506 basic_machine=xps100-honeywell 507 ;; 508 none) 509 basic_machine=none-none 510 os=-none 511 ;; 512 513# Here we handle the default manufacturer of certain CPU types. It is in 514# some cases the only manufacturer, in others, it is the most popular. 515 mips) 516 basic_machine=mips-mips 517 ;; 518 romp) 519 basic_machine=romp-ibm 520 ;; 521 rs6000) 522 basic_machine=rs6000-ibm 523 ;; 524 vax) 525 basic_machine=vax-dec 526 ;; 527 pdp11) 528 basic_machine=pdp11-dec 529 ;; 530 we32k) 531 basic_machine=we32k-att 532 ;; 533 sparc) 534 basic_machine=sparc-sun 535 ;; 536 cydra) 537 basic_machine=cydra-cydrome 538 ;; 539 orion) 540 basic_machine=orion-highlevel 541 ;; 542 orion105) 543 basic_machine=clipper-highlevel 544 ;; 545 *) 546 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 547 exit 1 548 ;; 549esac 550 551# Here we canonicalize certain aliases for manufacturers. 552case $basic_machine in 553 *-digital*) 554 basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` 555 ;; 556 *-commodore*) 557 basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` 558 ;; 559 *) 560 ;; 561esac 562 563# Decode manufacturer-specific aliases for certain operating systems. 564 565if [ x"$os" != x"" ] 566then 567case $os in 568 # -solaris* is a basic system type, with this one exception. 569 -solaris1 | -solaris1.*) 570 os=`echo $os | sed -e 's|solaris1|sunos4|'` 571 ;; 572 -solaris) 573 os=-solaris2 574 ;; 575 -gnu/linux*) 576 os=`echo $os | sed -e 's|gnu/linux|linux|'` 577 ;; 578 # First accept the basic system types. 579 # The portable systems comes first. 580 # Each alternative must end in a *, to match a version number. 581 # -sysv* is not here because it comes later, after sysvr4. 582 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ 583 | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[345]* \ 584 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ 585 | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \ 586 | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ 587 | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ 588 | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ 589 | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ 590 | -ptx* | -coff* | -winnt*) 591 ;; 592 -sunos5*) 593 os=`echo $os | sed -e 's|sunos5|solaris2|'` 594 ;; 595 -sunos6*) 596 os=`echo $os | sed -e 's|sunos6|solaris3|'` 597 ;; 598 -osfrose*) 599 os=-osfrose 600 ;; 601 -osf*) 602 os=-osf 603 ;; 604 -utek*) 605 os=-bsd 606 ;; 607 -dynix*) 608 os=-bsd 609 ;; 610 -acis*) 611 os=-aos 612 ;; 613 -ctix* | -uts*) 614 os=-sysv 615 ;; 616 -triton*) 617 os=-sysv3 618 ;; 619 -oss*) 620 os=-sysv3 621 ;; 622 -svr4) 623 os=-sysv4 624 ;; 625 -svr3) 626 os=-sysv3 627 ;; 628 -sysvr4) 629 os=-sysv4 630 ;; 631 # This must come after -sysvr4. 632 -sysv*) 633 ;; 634 -xenix) 635 os=-xenix 636 ;; 637 -none) 638 ;; 639 *) 640 # Get rid of the `-' at the beginning of $os. 641 os=`echo $os | sed 's/[^-]*-//'` 642 echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 643 exit 1 644 ;; 645esac 646else 647 648# Here we handle the default operating systems that come with various machines. 649# The value should be what the vendor currently ships out the door with their 650# machine or put another way, the most popular os provided with the machine. 651 652# Note that if you're going to try to match "-MANUFACTURER" here (say, 653# "-sun"), then you have to tell the case statement up towards the top 654# that MANUFACTURER isn't an operating system. Otherwise, code above 655# will signal an error saying that MANUFACTURER isn't an operating 656# system, and we'll never get to this point. 657 658case $basic_machine in 659 *-acorn) 660 os=-riscix1.2 661 ;; 662 pdp11-*) 663 os=-none 664 ;; 665 *-dec | vax-*) 666 os=-ultrix4.2 667 ;; 668 i386-sun) 669 os=-sunos4.0.2 670 ;; 671 m68000-sun) 672 os=-sunos3 673 # This also exists in the configure program, but was not the 674 # default. 675 # os=-sunos4 676 ;; 677 *-tti) # must be before sparc entry or we get the wrong os. 678 os=-sysv3 679 ;; 680 sparc-* | *-sun) 681 os=-sunos4.1.1 682 ;; 683 *-ibm) 684 os=-aix 685 ;; 686 *-hp) 687 os=-hpux 688 ;; 689 *-hitachi) 690 os=-hiux 691 ;; 692 i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) 693 os=-sysv 694 ;; 695 *-cbm) 696 os=-amigados 697 ;; 698 *-dg) 699 os=-dgux 700 ;; 701 *-dolphin) 702 os=-sysv3 703 ;; 704 m68k-ccur) 705 os=-rtu 706 ;; 707 m88k-omron*) 708 os=-luna 709 ;; 710 *-sequent) 711 os=-ptx 712 ;; 713 *-crds) 714 os=-unos 715 ;; 716 *-ns) 717 os=-genix 718 ;; 719 i370-*) 720 os=-mvs 721 ;; 722 *-next) 723 os=-nextstep3 724 ;; 725 *-gould) 726 os=-sysv 727 ;; 728 *-highlevel) 729 os=-bsd 730 ;; 731 *-encore) 732 os=-bsd 733 ;; 734 *-sgi) 735 os=-irix 736 ;; 737 *-masscomp) 738 os=-rtu 739 ;; 740 *) 741 os=-none 742 ;; 743esac 744fi 745 746# Here we handle the case where we know the os, and the CPU type, but not the 747# manufacturer. We pick the logical manufacturer. 748vendor=unknown 749case $basic_machine in 750 *-unknown) 751 case $os in 752 -riscix*) 753 vendor=acorn 754 ;; 755 -sunos*) 756 vendor=sun 757 ;; 758 -lynxos*) 759 vendor=lynx 760 ;; 761 -aix*) 762 vendor=ibm 763 ;; 764 -hpux*) 765 vendor=hp 766 ;; 767 -hiux*) 768 vendor=hitachi 769 ;; 770 -unos*) 771 vendor=crds 772 ;; 773 -dgux*) 774 vendor=dg 775 ;; 776 -luna*) 777 vendor=omron 778 ;; 779 -genix*) 780 vendor=ns 781 ;; 782 -mvs*) 783 vendor=ibm 784 ;; 785 -ptx*) 786 vendor=sequent 787 ;; 788 esac 789 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` 790 ;; 791esac 792 793echo $basic_machine$os 794