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