Move extern declarations to top of file.
[emacs.git] / config.sub
blob4b89603ccdc79e3e6c098668a230f243c5b3e6ed
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.
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.
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.
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.
23 # Configuration subroutine to validate and canonicalize a configuration type.
24 # Supply the specified configuration type as an argument.
25 # If it is invalid, we print an error message on stderr and exit with code 1.
26 # Otherwise, we print the canonical config type on stdout and succeed.
28 # This file is supposed to be the same for all GNU packages
29 # and recognize all the CPU types, system types and aliases
30 # that are meaningful with *any* GNU software.
31 # Each package is responsible for reporting which valid configurations
32 # it does not support. The user should be able to distinguish
33 # a failure to support a valid configuration from a meaningless
34 # configuration.
36 # The goal of this file is to map all the various variations of a given
37 # machine specification into a single specification in the form:
38 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
39 # It is wrong to echo any other type of specification.
41 # First pass through any local machine types.
42 case $1 in
43 *local*)
44 echo $1
45 exit 0
49 esac
51 # Separate what the user gave into CPU-COMPANY and OS (if any).
52 basic_machine=`echo $1 | sed 's/-[^-]*$//'`
53 if [ $basic_machine != $1 ]
54 then os=`echo $1 | sed 's/.*-/-/'`
55 else os=; fi
57 ### Let's recognize common machines as not being operating systems so
58 ### that things like config.sub decstation-3100 work. We also
59 ### recognize some manufacturers as not being operating systems, so we
60 ### can provide default operating systems below.
61 case $os in
62 -sun*os*)
63 # Prevent following clause from handling this invalid input.
65 -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
66 -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
67 -unicom* | -ibm* | -next* | -hp | -isi* | -apollo | -altos* | \
68 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
69 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
70 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp )
71 os=
72 basic_machine=$1
74 -hiux*)
75 os=-hiuxwe2
77 -sco4)
78 os=-sco3.2v4
79 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
81 -sco3.2.[4-9]*)
82 os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
83 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
85 -sco3.2v[4-9]*)
86 # Don't forget version if it is 3.2v4 or newer.
87 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
89 -sco*)
90 os=-sco3.2v2
91 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
93 -isc)
94 os=-isc2.2
95 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
97 -clix*)
98 basic_machine=clipper-intergraph
100 -isc*)
101 basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
103 -lynx)
104 os=-lynxos
106 esac
108 # Decode aliases for certain CPU-COMPANY combinations.
109 case $basic_machine in
110 # Recognize the basic CPU types without company name.
111 # Some are omitted here because they have special meanings below.
112 tahoe | i[34]86 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \
113 | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
114 | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \
115 | powerpc)
116 basic_machine=$basic_machine-unknown
118 # Object if more than one company name word.
119 *-*-*)
120 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
121 exit 1
123 # Recognize the basic CPU types with company name.
124 vax-* | tahoe-* | i[34]86-* | i860-* | m68k-* | m68000-* | m88k-* \
125 | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
126 | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
127 | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
128 | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
129 | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
130 | sh-* | powerpc-*)
132 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
133 basic_machine=m68000-att
135 3b*)
136 basic_machine=we32k-att
138 alliant | fx80)
139 basic_machine=fx80-alliant
141 altos | altos3068)
142 basic_machine=m68k-altos
144 am29k)
145 basic_machine=a29k-none
146 os=-bsd
148 amdahl)
149 basic_machine=580-amdahl
150 os=-sysv
152 amiga)
153 basic_machine=m68k-cbm
155 amigados)
156 basic_machine=m68k-cbm
157 os=-amigados
159 amigaunix | amix)
160 basic_machine=m68k-cbm
161 os=-sysv4
163 apollo68)
164 basic_machine=m68k-apollo
165 os=-sysv
167 balance)
168 basic_machine=ns32k-sequent
169 os=-dynix
171 convex-c1)
172 basic_machine=c1-convex
173 os=-bsd
175 convex-c2)
176 basic_machine=c2-convex
177 os=-bsd
179 convex-c32)
180 basic_machine=c32-convex
181 os=-bsd
183 convex-c34)
184 basic_machine=c34-convex
185 os=-bsd
187 convex-c38)
188 basic_machine=c38-convex
189 os=-bsd
191 cray | ymp)
192 basic_machine=ymp-cray
193 os=-unicos
195 cray2)
196 basic_machine=cray2-cray
197 os=-unicos
199 crds | unos)
200 basic_machine=m68k-crds
202 decstation | decstation-3100 | pmax | pmin | dec3100 | decstatn)
203 basic_machine=mips-dec
205 delta | 3300 | motorola-3300 | motorola-delta \
206 | 3300-motorola | delta-motorola)
207 basic_machine=m68k-motorola
209 delta88)
210 basic_machine=m88k-motorola
211 os=-sysv3
213 dpx2* | dpx2*-bull)
214 basic_machine=m68k-bull
215 os=-sysv3
217 ebmon29k)
218 basic_machine=a29k-amd
219 os=-ebmon
221 elxsi)
222 basic_machine=elxsi-elxsi
223 os=-bsd
225 encore | umax | mmax)
226 basic_machine=ns32k-encore
228 fx2800)
229 basic_machine=i860-alliant
231 genix)
232 basic_machine=ns32k-ns
234 gmicro)
235 basic_machine=tron-gmicro
236 os=-sysv
238 h3050r* | hiux*)
239 basic_machine=hppa1.1-hitachi
240 os=-hiuxwe2
242 h8300hms)
243 basic_machine=h8300-hitachi
244 os=-hms
246 harris)
247 basic_machine=m88k-harris
248 os=-sysv3
250 hp300bsd)
251 basic_machine=m68k-hp
252 os=-bsd
254 hp300hpux)
255 basic_machine=m68k-hp
256 os=-hpux
258 hp9k2[0-9][0-9] | hp9k31[0-9])
259 basic_machine=m68000-hp
260 os=-hpux
262 hp9k3[2-9][0-9])
263 basic_machine=m68k-hp
264 os=-hpux
266 hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
267 basic_machine=hppa1.1-hp
269 hp9k8[0-9][0-9] | hp8[0-9][0-9])
270 basic_machine=hppa1.0-hp
272 i370-ibm* | ibm*)
273 basic_machine=i370-ibm
274 os=-mvs
276 # I'm not sure what "Sysv32" means. Should this be sysv3.2?
277 i[34]86v32)
278 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
279 os=-sysv32
281 i[34]86v4*)
282 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
283 os=-sysv4
285 i[34]86v)
286 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
287 os=-sysv
289 i[34]86sol2)
290 basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
291 os=-solaris2
293 iris | iris4d)
294 basic_machine=mips-sgi
295 case $os in
296 -irix*)
299 os=-irix4
301 esac
303 isi68 | isi)
304 basic_machine=m68k-isi
305 os=-sysv
307 m88k-omron*)
308 basic_machine=m88k-omron
310 magnum | m3230)
311 basic_machine=mips-mips
312 os=-sysv
314 merlin)
315 basic_machine=ns32k-utek
316 os=-sysv
318 miniframe)
319 basic_machine=m68000-convergent
321 ncr3000)
322 basic_machine=i486-ncr
323 os=-sysv4
325 news | news700 | news800 | news900)
326 basic_machine=m68k-sony
327 os=-newsos
329 news1000)
330 basic_machine=m68030-sony
331 os=-newsos
333 news-3600 | risc-news)
334 basic_machine=mips-sony
335 os=-newsos
337 next)
338 basic_machine=m68k-next
339 os=-bsd
341 nh3000)
342 basic_machine=m68k-harris
343 os=-cxux
345 nh[45]000)
346 basic_machine=m88k-harris
347 os=-cxux
349 nindy960)
350 basic_machine=i960-intel
351 os=-nindy
353 np1)
354 basic_machine=np1-gould
356 pa-hitachi)
357 basic_machine=hppa1.1-hitachi
358 os=-hiuxwe2
360 paragon)
361 basic_machine=i860-intel
362 os=-osf
364 pbd)
365 basic_machine=sparc-tti
367 pbb)
368 basic_machine=m68k-tti
370 pc532)
371 basic_machine=ns32k-pc532
374 basic_machine=pn-gould
376 ps2)
377 basic_machine=i386-ibm
379 rtpc | rtpc-*)
380 basic_machine=romp-ibm
383 basic_machine=sh-hitachi
384 os=-hms
386 sps7)
387 basic_machine=m68k-bull
388 os=-sysv2
390 spur)
391 basic_machine=spur-unknown
393 sun2)
394 basic_machine=m68000-sun
396 sun2os3)
397 basic_machine=m68000-sun
398 os=-sunos3
400 sun2os4)
401 basic_machine=m68000-sun
402 os=-sunos4
404 sun3os3)
405 basic_machine=m68k-sun
406 os=-sunos3
408 sun3os4)
409 basic_machine=m68k-sun
410 os=-sunos4
412 sun4os3)
413 basic_machine=sparc-sun
414 os=-sunos3
416 sun4os4)
417 basic_machine=sparc-sun
418 os=-sunos4
420 sun3)
421 basic_machine=m68k-sun
423 sun4)
424 basic_machine=sparc-sun
426 sun386 | sun386i | roadrunner)
427 basic_machine=i386-sun
429 symmetry)
430 basic_machine=i386-sequent
431 os=-dynix
433 tower | tower-32)
434 basic_machine=m68k-ncr
436 ultra3)
437 basic_machine=a29k-nyu
438 os=-sym1
440 # Recognize the various machine names and aliases which stand
441 # for a CPU type and a company and sometimes even an OS.
442 vaxv)
443 basic_machine=vax-dec
444 os=-sysv
446 vms)
447 basic_machine=vax-dec
448 os=-vms
450 vxworks960)
451 basic_machine=i960-wrs
452 os=-vxworks
454 vxworks68)
455 basic_machine=m68k-wrs
456 os=-vxworks
458 xmp)
459 basic_machine=xmp-cray
460 os=-unicos
462 xps | xps100)
463 basic_machine=xps100-honeywell
465 none)
466 basic_machine=none-none
467 os=-none
470 # Here we handle the default manufacturer of certain CPU types. It is in
471 # some cases the only manufacturer, in others, it is the most popular.
472 mips)
473 basic_machine=mips-mips
475 romp)
476 basic_machine=romp-ibm
478 rs6000)
479 basic_machine=rs6000-ibm
481 vax)
482 basic_machine=vax-dec
484 we32k)
485 basic_machine=we32k-att
487 sparc)
488 basic_machine=sparc-sun
490 cydra)
491 basic_machine=cydra-cydrome
493 orion)
494 basic_machine=orion-highlevel
496 orion105)
497 basic_machine=clipper-highlevel
500 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
501 exit 1
503 esac
505 # Here we canonicalize certain aliases for manufacturers.
506 case $basic_machine in
507 *-digital*)
508 basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
510 *-commodore*)
511 basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
515 esac
517 # Decode manufacturer-specific aliases for certain operating systems.
519 if [ x"$os" != x"" ]
520 then
521 case $os in
522 # -solaris* is a basic system type, with this one exception.
523 -solaris1 | -solaris1.*)
524 os=`echo $os | sed -e 's|solaris1|sunos4|'`
526 -solaris)
527 os=-solaris2
529 # First accept the basic system types.
530 # The portable systems comes first.
531 # Each alternative must end in a *, to match a version number.
532 # -sysv* is not here because it comes later, after sysvr4.
533 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
534 | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]* | -hpux* \
535 | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
536 | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \
537 | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
538 | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
539 | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos*)
541 -sunos5*)
542 os=`echo $os | sed -e 's|sunos5|solaris2|'`
544 -sunos6*)
545 os=`echo $os | sed -e 's|sunos6|solaris3|'`
547 -osfrose*)
548 os=-osfrose
550 -osf*)
551 os=-osf
553 -utek*)
554 os=-bsd
556 -dynix*)
557 os=-bsd
559 -acis*)
560 os=-aos
562 -ctix* | -uts*)
563 os=-sysv
565 -triton*)
566 os=-sysv3
568 -oss*)
569 os=-sysv3
571 -svr4)
572 os=-sysv4
574 -svr3)
575 os=-sysv3
577 -sysvr4)
578 os=-sysv4
580 # This must come after -sysvr4.
581 -sysv*)
583 -xenix)
584 os=-xenix
586 -none)
589 # Get rid of the `-' at the beginning of $os.
590 os=`echo $1 | sed 's/[^-]*-//'`
591 echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
592 exit 1
594 esac
595 else
597 # Here we handle the default operating systems that come with various machines.
598 # The value should be what the vendor currently ships out the door with their
599 # machine or put another way, the most popular os provided with the machine.
601 # Note that if you're going to try to match "-MANUFACTURER" here (say,
602 # "-sun"), then you have to tell the case statement up towards the top
603 # that MANUFACTURER isn't an operating system. Otherwise, code above
604 # will signal an error saying that MANUFACTURER isn't an operating
605 # system, and we'll never get to this point.
607 case $basic_machine in
608 *-acorn)
609 os=-riscix1.2
611 *-dec | vax-*)
612 os=-ultrix4.2
614 i386-sun)
615 os=-sunos4.0.2
617 m68000-sun)
618 os=-sunos3
619 # This also exists in the configure program, but was not the
620 # default.
621 # os=-sunos4
623 *-tti) # must be before sparc entry or we get the wrong os.
624 os=-sysv3
626 sparc-* | *-sun)
627 os=-sunos4.1.1
629 *-ibm)
630 os=-aix
632 *-hp)
633 os=-hpux
635 *-hitachi)
636 os=-hiux
638 i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
639 os=-sysv
641 *-cbm)
642 os=-amigados
644 *-dg)
645 os=-dgux
647 *-dolphin)
648 os=-sysv3
650 m88k-omron*)
651 os=-luna
653 *-sequent)
654 os=-bsd
656 *-crds)
657 os=-unos
659 *-ns)
660 os=-genix
662 i370-*)
663 os=-mvs
665 *-next)
666 os=-bsd
668 i[34]86-*)
669 os=-sco3.2v2
671 *-gould)
672 os=-sysv
674 *-highlevel)
675 os=-bsd
677 *-encore)
678 os=-bsd
680 *-sgi)
681 os=-irix
683 *-masscomp)
684 os=-rtu
687 os=-none
689 esac
692 # Here we handle the case where we know the os, and the CPU type, but not the
693 # manufacturer. We pick the logical manufacturer.
694 vendor=unknown
695 case $basic_machine in
696 *-unknown)
697 case $os in
698 -riscix*)
699 vendor=acorn
701 -sunos*)
702 vendor=sun
704 -lynxos*)
705 vendor=lynx
707 -aix*)
708 vendor=ibm
710 -hpux*)
711 vendor=hp
713 -hiux*)
714 vendor=hitachi
716 -unos*)
717 vendor=crds
719 -dgux*)
720 vendor=dg
722 -luna*)
723 vendor=omron
725 -genix*)
726 vendor=ns
728 -mvs*)
729 vendor=ibm
731 esac
732 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
734 esac
736 echo $basic_machine$os