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