Formerly generic/pow.c.~3~
[kopensolaris-gnu/glibc.git] / config.sub
1 #!/bin/sh
2 # Configuration validation subroutine script, version 1.1.
3 #   Copyright (C) 1991, 1992 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
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.
27
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.
35
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
40
41 # First pass through any local machine types.
42 case $1 in
43         *local*)
44                 echo $1
45                 exit 0
46                 ;;
47         *)
48         ;;
49 esac
50
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
56
57 # Lets recognize common machines as not being OS so that things like
58 # config.subr decstation-3100 work.
59 case $os in
60         -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
61         -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
62         -unicom* | -ibm* | -next* | -hp | -isi* | -apollo | -altos* | \
63         -convergent* | -ncr* | -news | -32* | -3600* | -3100* | \
64         -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
65         -harris | -dolphin)
66                 os=
67                 basic_machine=$1
68                 ;;
69         -sco*)
70                 os=-sco3.2v2
71                 basic_machine=i386-unknown
72                 ;;
73         -isc*)
74                 os=-isc
75                 basic_machine=i386-unknown
76                 ;;
77 esac
78
79 # Decode aliases for certain CPU-COMPANY combinations.
80 case $basic_machine in
81         # Recognize the basic CPU types with without company name.
82         # Some are omitted here because they have special meanings below.
83         tahoe | i[34]86 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \
84                 | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 | we32k)
85                 basic_machine=$basic_machine-unknown
86                 ;;
87         # Recognize the basic CPU types with with company name.
88         vax-* | tahoe-* | i[34]86-* | i860-* | m68k-* | m68000-* | m88k-* \
89               | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
90               | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
91               | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
92               | hppa1.0-* | hppa1.1-* | we32k-*)
93                 ;;
94         # Recognize the various machine names and aliases which stand
95         # for a CPU type and a company and sometimes even an OS.
96         vaxv)
97                 basic_machine=vax-dec
98                 os=-sysv
99                 ;;
100         vms)
101                 basic_machine=vax-dec
102                 os=-vms
103                 ;;
104         i386v32)
105                 basic_machine=i386-unknown
106                 os=-sysv32
107                 ;;
108         i386-sco* | i386sco | sco)
109                 basic_machine=i386-unknown
110                 os=-sco3.2v2
111                 ;;
112         i386-isc* | isc)
113                 basic_machine=i386-unknown
114                 os=-isc
115                 ;;
116         i486v32)
117                 basic_machine=i486-unknown
118                 os=-sysv32
119                 ;;
120         i486-sco* | i486sco | sco)
121                 basic_machine=i486-unknown
122                 os=-sco3.2v2
123                 ;;
124         i486-isc* | isc)
125                 basic_machine=i486-unknown
126                 os=-isc
127                 ;;
128         i386v4*)
129                 basic_machine=i386-unknown
130                 os=-sysv4
131                 ;;
132         i486v4*)
133                 basic_machine=i486-unknown
134                 os=-sysv4
135                 ;;
136         i386v)
137                 basic_machine=i386-unknown
138                 os=-sysv
139                 ;;
140         i486v)
141                 basic_machine=i486-unknown
142                 os=-sysv
143                 ;;
144         spur)
145                 basic_machine=spur-unknown
146                 ;;
147         alliant | fx80)
148                 basic_machine=fx80-alliant
149                 ;;
150         convex-c1)
151                 basic_machine=c1-convex
152                 os=-bsd
153                 ;;
154         convex-c2)
155                 basic_machine=c2-convex
156                 os=-bsd
157                 ;;
158         convex-c32)
159                 basic_machine=c32-convex
160                 os=-bsd
161                 ;;
162         convex-c34)
163                 basic_machine=c34-convex
164                 os=-bsd
165                 ;;
166         convex-c38)
167                 basic_machine=c38-convex
168                 os=-bsd
169                 ;;
170         m88k-omron*)
171                 basic_machine=m88k-omron
172                 ;;
173         merlin)
174                 basic_machine=ns32k-utek
175                 os=-sysv
176                 ;;
177         crds | unos)
178                 basic_machine=m68k-crds
179                 ;;
180         encore | umax | mmax)
181                 basic_machine=ns32k-encore
182                 os=-bsd
183                 ;;
184         genix)
185                 basic_machine=ns32k-ns
186                 ;;
187         iris | iris4d)
188                 basic_machine=mips-sgi
189                 case $os in
190                     -irix*)
191                         ;;
192                     *)
193                         os=-irix4
194                         ;;
195                 esac
196                 ;;
197         news | news700 | news800 | news900)
198                 basic_machine=m68k-sony
199                 os=-newsos
200                 ;;
201         3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
202                 basic_machine=m68000-att
203                 ;;
204         3b*)
205                 basic_machine=we32k-att
206                 ;;
207         delta | 3300 | motorola-3300 | motorola-delta \
208               | 3300-motorola | delta-motorola)
209                 basic_machine=m68k-motorola
210                 ;;
211         balance)
212                 basic_machine=ns32k-sequent
213                 os=-dynix
214                 ;;
215         pc532)
216                 basic_machine=ns32k-pc532
217                 ;;
218         symmetry)
219                 basic_machine=i386-sequent
220                 os=-dynix
221                 ;;
222         sun2)
223                 basic_machine=m68000-sun
224                 ;;
225         sun2os3)
226                 basic_machine=m68000-sun
227                 os=-sunos3
228                 ;;
229         sun2os4)
230                 basic_machine=m68000-sun
231                 os=-sunos4
232                 ;;
233         sun3os3)
234                 basic_machine=m68k-sun
235                 os=-sunos3
236                 ;;
237         sun3os4)
238                 basic_machine=m68k-sun
239                 os=-sunos4
240                 ;;
241         sun4os3)
242                 basic_machine=sparc-sun
243                 os=-sunos3
244                 ;;
245         sun4os4)
246                 basic_machine=sparc-sun
247                 os=-sunos4
248                 ;;
249         sun3)
250                 basic_machine=m68k-sun
251                 ;;
252         sun4)
253                 basic_machine=sparc-sun
254                 ;;
255         pbd)
256                 basic_machine=sparc-tti
257                 ;;
258         pbb)
259                 basic_machine=m68k-tti
260                 ;;
261         sun386 | sun386i | roadrunner)
262                 basic_machine=i386-sun
263                 ;;
264         ps2)
265                 basic_machine=i386-ibm
266                 ;;
267         fx2800)
268                 basic_machine=i860-alliant
269                 ;;
270         next)
271                 basic_machine=m68k-next
272                 os=-bsd
273                 ;;
274         amiga)
275                 basic_machine=m68k-cbm
276                 ;;
277         hp9k3[2-9][0-9])
278                 basic_machine=m68k-hp
279                 ;;
280         hp9k31[0-9] | hp9k2[0-9][0-9])
281                 basic_machine=m68000-hp
282                 ;;
283         hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
284                 basic_machine=hppa1.1-hp
285                 ;;
286         hp9k8[0-9][0-9] | hp8[0-9][0-9])
287                 basic_machine=hppa1.0-hp
288                 ;;
289         isi68 | isi)
290                 basic_machine=m68k-isi
291                 os=-sysv
292                 ;;
293         apollo68)
294                 basic_machine=m68k-apollo
295                 os=-sysv
296                 ;;
297         altos | altos3068)
298                 basic_machine=m68k-altos
299                 ;;
300         miniframe)
301                 basic_machine=m68000-convergent
302                 ;;
303         tower | tower-32)
304                 basic_machine=m68k-ncr
305                 ;;
306         news-3600 | risc-news)
307                 basic_machine=mips-sony
308                 os=-newsos
309                 ;;
310         decstation | decstation-3100 | pmax | pmin | dec3100 | decstatn)
311                 basic_machine=mips-dec
312                 ;;
313         magnum | m3230)
314                 basic_machine=mips-mips
315                 os=-sysv
316                 ;;
317         gmicro)
318                 basic_machine=tron-gmicro
319                 os=-sysv
320                 ;;
321         rtpc | rtpc-*)
322                 basic_machine=romp-ibm
323                 ;;
324         am29k)
325                 basic_machine=a29k-none
326                 os=-bsd
327                 ;;
328         amdahl)
329                 basic_machine=580-amdahl
330                 os=-sysv
331                 ;;
332         amigados)
333                 basic_machine=m68k-cbm
334                 os=-amigados
335                 ;;
336         amigaunix | amix)
337                 basic_machine=m68k-cbm
338                 os=-amix
339                 ;;
340         cray | ymp)
341                 basic_machine=ymp-cray
342                 os=-unicos
343                 ;;
344         cray2)
345                 basic_machine=cray2-cray
346                 os=-unicos
347                 ;;
348         xmp)
349                 basic_machine=xmp-cray
350                 os=-unicos
351                 ;;
352         delta88)
353                 basic_machine=m88k-motorola
354                 os=-m88kbcs
355                 ;;
356         dpx2)
357                 basic_machine=m68k-bull
358                 os=-sysv
359                 ;;
360         ebmon29k)
361                 basic_machine=a29k-amd
362                 os=-ebmon
363                 ;;
364         h8300hds)
365                 basic_machine=h8300-hitachi
366                 os=-hds
367                 ;;
368         harris)
369                 basic_machine=m88k-harris
370                 os=-m88kbcs
371                 ;;
372         hp300bsd)
373                 basic_machine=m68k-hp
374                 os=-bsd
375                 ;;
376         hp300hpux)
377                 basic_machine=m68k-hp
378                 os=-hpux
379                 ;;
380         hp9k2[0-9][0-9] | hp9k31[0-9])
381                 basic_machine=m68000-hp
382                 os=-hpux
383                 ;;
384         hp9k3[2-9][0-9])
385                 basic_machine=m68k-hp
386                 os=-hpux
387                 ;;
388         ncr3000)
389                 basic_machine=i486-ncr
390                 os=-sysv4
391                 ;;
392         news1000)
393                 basic_machine=m68030-sony
394                 os=-newsos
395                 ;;
396         nindy960)
397                 basic_machine=i960-intel
398                 os=-nindy
399                 ;;
400         pn)
401                 basic_machine=pn-gould
402                 os=-sysv
403                 ;;
404         np1)
405                 basic_machine=np1-gould
406                 os=-sysv
407                 ;;
408         ultra3)
409                 basic_machine=a29k-nyu
410                 os=-sym1
411                 ;;
412         vxworks960)
413                 basic_machine=i960-wrs
414                 os=-vxworks
415                 ;;
416         vxworks68)
417                 basic_machine=m68k-wrs
418                 os=-vxworks
419                 ;;
420         none)
421                 basic_machine=none-none
422                 os=-none
423                 ;;
424
425 # Here we handle the default manufacturer of certain CPU types.  It is in
426 # some cases the only manufacturer, in others, it is the most popular.
427         mips)
428                 basic_machine=mips-mips
429                 ;;
430         romp)
431                 basic_machine=romp-ibm
432                 ;;
433         rs6000)
434                 basic_machine=rs6000-ibm
435                 ;;
436         vax)
437                 basic_machine=vax-dec
438                 ;;
439         we32k)
440                 basic_machine=we32k-att
441                 ;;
442         sparc)
443                 basic_machine=sparc-sun
444                 ;;
445         *)
446                 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
447                 exit 1
448                 ;;
449 esac
450
451 # Here we canonicalize certain aliases for manufacturers.
452 case $basic_machine in
453         *-digital*)
454                 basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
455                 ;;
456         *-commodore*)
457                 basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
458                 ;;
459         *)
460                 ;;
461 esac
462
463 # Decode manufacturer-specific aliases for certain operating systems.
464
465 if [ "$os" ]
466 then
467 case $os in
468         # First accept the basic system types.
469         # The portable systems comes first.
470         # Each alternative must end in a *, to match a version number.
471         -bsd* | -sysv* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
472               | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos* | -hpux* \
473               | -unos* | -osf* | -luna* | -dgux* | -solari* | -sym* | -amix* \
474               | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \
475               | -nindy* | -vxworks* | -ebmon* | -hds* | -m88kbcs*)
476                 ;;
477         -osfrose*)
478                 os=-osfrose
479                 ;;
480         -osf*)
481                 os=-osf
482                 ;;
483         -utek*)
484                 os=-bsd
485                 ;;
486         -dynix*)
487                 os=-bsd
488                 ;;
489         -acis*)
490                 os=-aos
491                 ;;
492         -ctix* | -uts*)
493                 os=-sysv
494                 ;;
495         -triton*)
496                 os=-sysv3
497                 ;;
498         -oss*)
499                 os=-sysv3
500                 ;;
501         -svr4)
502                 os=-sysv4
503                 ;;
504         -svr3)
505                 os=-sysv3
506                 ;;
507         -none)
508                 ;;
509         *)
510                 # Get rid of the `-' at the beginning of $os.
511                 os=`echo $1 | sed 's/[^-]*-//'`
512                 echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
513                 exit 1
514                 ;;
515 esac
516 else
517
518 # Here we handle the default operating systems that come with various machines.
519 # The value should be what the vendor currently ships out the door with their
520 # machine or put another way, the most popular os provided with the machine.
521 case $basic_machine in
522         *-dec | vax-*)
523                 os=-ultrix4.2
524                 ;;
525         i386-sun)
526                 os=-sunos4.0.2
527                 ;;
528         m68000-sun)
529                 os=-sunos3
530                 # This also exists in the configure program, but was not the
531                 # default.
532                 # os=-sunos4
533                 ;;
534         *-tti)  # must be before sparc entry or we get the wrong os.
535                 os=-sysv3
536                 ;;
537         sparc-* | *-sun)
538                 os=-sunos4.1.1
539                 ;;
540         *-ibm)
541                 os=-aix
542                 ;;
543         *-hp)
544                 os=-hpux
545                 ;;
546         *-sgi | i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
547                 os=-sysv
548                 ;;
549         *-cbm)
550                 os=-amigados
551                 ;;
552         *-dg)
553                 os=-dgux
554                 ;;
555         *-dolphin)
556                 os=-sysv3
557                 ;;
558         m88k-omron*)
559                 os=-luna
560                 ;;
561         *-crds)
562                 os=-unos
563                 ;;
564         *-ns)
565                 os=-genix
566                 ;;
567         i[34]86-*)
568                 os=-sco3.2v2
569                 ;;
570         *)
571                 os=-none
572                 ;;
573 esac
574 fi
575
576 # Here we handle the case where we know the os, and the CPU type, but not the
577 # manufacturer.  We pick the logical manufacturer.
578 vendor=unknown
579 case $basic_machine in
580         *-unknown)
581                 case $os in
582                         -sunos*)
583                                 vendor=sun
584                                 ;;
585                         -aix*)
586                                 vendor=ibm
587                                 ;;
588                         -hpux*)
589                                 vendor=hp
590                                 ;;
591                         -unos*)
592                                 vendor=crds
593                                 ;;
594                         -dgux*)
595                                 vendor=dg
596                                 ;;
597                         -luna*)
598                                 vendor=omron
599                                 ;;
600                         -genix*)
601                                 vendor=ns
602                                 ;;
603                 esac
604                 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
605                 ;;
606 esac
607
608 echo $basic_machine$os