Skip to content
Permalink
Newer
Older
100755 1884 lines (1835 sloc) 34.4 KB
1
#! /bin/sh
2
# Configuration validation subroutine script.
3
# Copyright 1992-2021 Free Software Foundation, Inc.
5
# shellcheck disable=SC2006,SC2268 # see below for rationale
6
7
timestamp='2021-08-14'
9
# This file is free software; you can redistribute it and/or modify it
10
# under the terms of the GNU General Public License as published by
11
# the Free Software Foundation; either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful, but
15
# WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
# General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program; if not, see <https://www.gnu.org/licenses/>.
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
26
# program. This Exception is an additional permission under section 7
27
# of the GNU General Public License, version 3 ("GPLv3").
30
# Please send patches to <config-patches@gnu.org>.
31
#
32
# Configuration subroutine to validate and canonicalize a configuration type.
33
# Supply the specified configuration type as an argument.
34
# If it is invalid, we print an error message on stderr and exit with code 1.
35
# Otherwise, we print the canonical config type on stdout and succeed.
36
37
# You can get the latest version of this script from:
38
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
39
40
# This file is supposed to be the same for all GNU packages
41
# and recognize all the CPU types, system types and aliases
42
# that are meaningful with *any* GNU software.
43
# Each package is responsible for reporting which valid configurations
44
# it does not support. The user should be able to distinguish
45
# a failure to support a valid configuration from a meaningless
46
# configuration.
47
48
# The goal of this file is to map all the various variations of a given
49
# machine specification into a single specification in the form:
50
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51
# or in some cases, the newer four-part form:
52
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53
# It is wrong to echo any other type of specification.
54
55
# The "shellcheck disable" line above the timestamp inhibits complaints
56
# about features and limitations of the classic Bourne shell that were
57
# superseded or lifted in POSIX. However, this script identifies a wide
58
# variety of pre-POSIX systems that do not have POSIX shells at all, and
59
# even some reasonably current systems (Solaris 10 as case-in-point) still
60
# have a pre-POSIX /bin/sh.
61
62
me=`echo "$0" | sed -e 's,.*/,,'`
65
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66
67
Canonicalize a configuration name.
68
70
-h, --help print this help, then exit
71
-t, --time-stamp print date of last modification, then exit
72
-v, --version print version number, then exit
73
74
Report bugs and patches to <config-patches@gnu.org>."
75
76
version="\
77
GNU config.sub ($timestamp)
78
79
Copyright 1992-2021 Free Software Foundation, Inc.
80
81
This is free software; see the source for copying conditions. There is NO
82
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
83
84
help="
85
Try \`$me --help' for more information."
86
87
# Parse command line
88
while test $# -gt 0 ; do
89
case $1 in
90
--time-stamp | --time* | -t )
91
echo "$timestamp" ; exit ;;
92
--version | -v )
93
echo "$version" ; exit ;;
94
--help | --h* | -h )
95
echo "$usage"; exit ;;
96
-- ) # Stop option processing
97
shift; break ;;
98
- ) # Use stdin as input.
99
break ;;
100
-* )
101
echo "$me: invalid option $1$help" >&2
102
exit 1 ;;
103
104
*local*)
105
# First pass through any local machine types.
107
exit ;;
108
109
* )
110
break ;;
111
esac
112
done
113
114
case $# in
115
0) echo "$me: missing argument$help" >&2
116
exit 1;;
117
1) ;;
118
*) echo "$me: too many arguments$help" >&2
119
exit 1;;
120
esac
121
122
# Split fields of configuration type
123
# shellcheck disable=SC2162
125
IFS="-" read field1 field2 field3 field4 <<EOF
126
$1
127
EOF
130
# Separate into logical components for further validation
131
case $1 in
132
*-*-*-*-*)
133
echo Invalid configuration \`"$1"\': more than four components >&2
134
exit 1
136
*-*-*-*)
137
basic_machine=$field1-$field2
138
basic_os=$field3-$field4
140
*-*-*)
141
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
142
# parts
143
maybe_os=$field2-$field3
144
case $maybe_os in
145
nto-qnx* | linux-* | uclinux-uclibc* \
146
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
147
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
148
| storm-chaos* | os2-emx* | rtmk-nova*)
149
basic_machine=$field1
150
basic_os=$maybe_os
151
;;
152
android-linux)
153
basic_machine=$field1-unknown
154
basic_os=linux-android
155
;;
156
*)
157
basic_machine=$field1-$field2
158
basic_os=$field3
159
;;
160
esac
162
*-*)
163
# A lone config we happen to match not fitting any pattern
164
case $field1-$field2 in
165
decstation-3100)
166
basic_machine=mips-dec
167
basic_os=
168
;;
169
*-*)
170
# Second component is usually, but not always the OS
171
case $field2 in
172
# Prevent following clause from handling this valid os
173
sun*os*)
174
basic_machine=$field1
175
basic_os=$field2
176
;;
177
zephyr*)
178
basic_machine=$field1-unknown
179
basic_os=$field2
180
;;
181
# Manufacturers
182
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
183
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
184
| unicom* | ibm* | next | hp | isi* | apollo | altos* \
185
| convergent* | ncr* | news | 32* | 3600* | 3100* \
186
| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
187
| ultra | tti* | harris | dolphin | highlevel | gould \
188
| cbm | ns | masscomp | apple | axis | knuth | cray \
189
| microblaze* | sim | cisco \
190
| oki | wec | wrs | winbond)
191
basic_machine=$field1-$field2
192
basic_os=
193
;;
194
*)
195
basic_machine=$field1
196
basic_os=$field2
197
;;
198
esac
199
;;
200
esac
202
*)
203
# Convert single-component short-hands not valid as part of
204
# multi-component configurations.
205
case $field1 in
206
386bsd)
207
basic_machine=i386-pc
208
basic_os=bsd
209
;;
210
a29khif)
211
basic_machine=a29k-amd
212
basic_os=udi
213
;;
214
adobe68k)
215
basic_machine=m68010-adobe
216
basic_os=scout
217
;;
218
alliant)
219
basic_machine=fx80-alliant
220
basic_os=
221
;;
222
altos | altos3068)
223
basic_machine=m68k-altos
224
basic_os=
225
;;
226
am29k)
227
basic_machine=a29k-none
228
basic_os=bsd
229
;;
230
amdahl)
231
basic_machine=580-amdahl
232
basic_os=sysv
233
;;
234
amiga)
235
basic_machine=m68k-unknown
236
basic_os=
237
;;
238
amigaos | amigados)
239
basic_machine=m68k-unknown
240
basic_os=amigaos
241
;;
242
amigaunix | amix)
243
basic_machine=m68k-unknown
244
basic_os=sysv4
245
;;
246
apollo68)
247
basic_machine=m68k-apollo
248
basic_os=sysv
249
;;
250
apollo68bsd)
251
basic_machine=m68k-apollo
252
basic_os=bsd
253
;;
254
aros)
255
basic_machine=i386-pc
256
basic_os=aros
257
;;
258
aux)
259
basic_machine=m68k-apple
260
basic_os=aux
261
;;
262
balance)
263
basic_machine=ns32k-sequent
264
basic_os=dynix
265
;;
266
blackfin)
267
basic_machine=bfin-unknown
268
basic_os=linux
269
;;
270
cegcc)
271
basic_machine=arm-unknown
272
basic_os=cegcc
273
;;
274
convex-c1)
275
basic_machine=c1-convex
276
basic_os=bsd
277
;;
278
convex-c2)
279
basic_machine=c2-convex
280
basic_os=bsd
281
;;
282
convex-c32)
283
basic_machine=c32-convex
284
basic_os=bsd
285
;;
286
convex-c34)
287
basic_machine=c34-convex
288
basic_os=bsd
289
;;
290
convex-c38)
291
basic_machine=c38-convex
292
basic_os=bsd
293
;;
294
cray)
295
basic_machine=j90-cray
296
basic_os=unicos
297
;;
298
crds | unos)
299
basic_machine=m68k-crds
300
basic_os=
301
;;
302
da30)
303
basic_machine=m68k-da30
304
basic_os=
305
;;
306
decstation | pmax | pmin | dec3100 | decstatn)
307
basic_machine=mips-dec
308
basic_os=
309
;;
310
delta88)
311
basic_machine=m88k-motorola
312
basic_os=sysv3
313
;;
314
dicos)
315
basic_machine=i686-pc
316
basic_os=dicos
317
;;
318
djgpp)
319
basic_machine=i586-pc
320
basic_os=msdosdjgpp
321
;;
322
ebmon29k)
323
basic_machine=a29k-amd
324
basic_os=ebmon
325
;;
326
es1800 | OSE68k | ose68k | ose | OSE)
327
basic_machine=m68k-ericsson
328
basic_os=ose
329
;;
330
gmicro)
331
basic_machine=tron-gmicro
332
basic_os=sysv
333
;;
334
go32)
335
basic_machine=i386-pc
336
basic_os=go32
337
;;
338
h8300hms)
339
basic_machine=h8300-hitachi
340
basic_os=hms
341
;;
342
h8300xray)
343
basic_machine=h8300-hitachi
344
basic_os=xray
345
;;
346
h8500hms)
347
basic_machine=h8500-hitachi
348
basic_os=hms
349
;;
350
harris)
351
basic_machine=m88k-harris
352
basic_os=sysv3
353
;;
354
hp300 | hp300hpux)
355
basic_machine=m68k-hp
356
basic_os=hpux
357
;;
358
hp300bsd)
359
basic_machine=m68k-hp
360
basic_os=bsd
361
;;
362
hppaosf)
363
basic_machine=hppa1.1-hp
364
basic_os=osf
365
;;
366
hppro)
367
basic_machine=hppa1.1-hp
368
basic_os=proelf
369
;;
370
i386mach)
371
basic_machine=i386-mach
372
basic_os=mach
373
;;
374
isi68 | isi)
375
basic_machine=m68k-isi
376
basic_os=sysv
377
;;
378
m68knommu)
379
basic_machine=m68k-unknown
380
basic_os=linux
381
;;
382
magnum | m3230)
383
basic_machine=mips-mips
384
basic_os=sysv
385
;;
386
merlin)
387
basic_machine=ns32k-utek
388
basic_os=sysv
389
;;
390
mingw64)
391
basic_machine=x86_64-pc
392
basic_os=mingw64
393
;;
394
mingw32)
395
basic_machine=i686-pc
396
basic_os=mingw32
397
;;
398
mingw32ce)
399
basic_machine=arm-unknown
400
basic_os=mingw32ce
401
;;
402
monitor)
403
basic_machine=m68k-rom68k
404
basic_os=coff
405
;;
406
morphos)
407
basic_machine=powerpc-unknown
408
basic_os=morphos
409
;;
410
moxiebox)
411
basic_machine=moxie-unknown
412
basic_os=moxiebox
413
;;
414
msdos)
415
basic_machine=i386-pc
416
basic_os=msdos
417
;;
418
msys)
419
basic_machine=i686-pc
420
basic_os=msys
421
;;
422
mvs)
423
basic_machine=i370-ibm
424
basic_os=mvs
425
;;
426
nacl)
427
basic_machine=le32-unknown
428
basic_os=nacl
429
;;
430
ncr3000)
431
basic_machine=i486-ncr
432
basic_os=sysv4
433
;;
434
netbsd386)
435
basic_machine=i386-pc
436
basic_os=netbsd
437
;;
438
netwinder)
439
basic_machine=armv4l-rebel
440
basic_os=linux
441
;;
442
news | news700 | news800 | news900)
443
basic_machine=m68k-sony
444
basic_os=newsos
445
;;
446
news1000)
447
basic_machine=m68030-sony
448
basic_os=newsos
449
;;
450
necv70)
451
basic_machine=v70-nec
452
basic_os=sysv
453
;;
454
nh3000)
455
basic_machine=m68k-harris
456
basic_os=cxux
457
;;
458
nh[45]000)
459
basic_machine=m88k-harris
460
basic_os=cxux
461
;;
462
nindy960)
463
basic_machine=i960-intel
464
basic_os=nindy
465
;;
466
mon960)
467
basic_machine=i960-intel
468
basic_os=mon960
469
;;
470
nonstopux)
471
basic_machine=mips-compaq
472
basic_os=nonstopux
473
;;
474
os400)
475
basic_machine=powerpc-ibm
476
basic_os=os400
477
;;
478
OSE68000 | ose68000)
479
basic_machine=m68000-ericsson
480
basic_os=ose
481
;;
482
os68k)
483
basic_machine=m68k-none
484
basic_os=os68k
485
;;
486
paragon)
487
basic_machine=i860-intel
488
basic_os=osf
489
;;
490
parisc)
491
basic_machine=hppa-unknown
492
basic_os=linux
493
;;
494
psp)
495
basic_machine=mipsallegrexel-sony
496
basic_os=psp
497
;;
498
pw32)
499
basic_machine=i586-unknown
500
basic_os=pw32
501
;;
502
rdos | rdos64)
503
basic_machine=x86_64-pc
504
basic_os=rdos
505
;;
506
rdos32)
507
basic_machine=i386-pc
508
basic_os=rdos
509
;;
510
rom68k)
511
basic_machine=m68k-rom68k
512
basic_os=coff
513
;;
514
sa29200)
515
basic_machine=a29k-amd
516
basic_os=udi
517
;;
518
sei)
519
basic_machine=mips-sei
520
basic_os=seiux
521
;;
522
sequent)
523
basic_machine=i386-sequent
524
basic_os=
525
;;
526
sps7)
527
basic_machine=m68k-bull
528
basic_os=sysv2
529
;;
530
st2000)
531
basic_machine=m68k-tandem
532
basic_os=
533
;;
534
stratus)
535
basic_machine=i860-stratus
536
basic_os=sysv4
537
;;
538
sun2)
539
basic_machine=m68000-sun
540
basic_os=
541
;;
542
sun2os3)
543
basic_machine=m68000-sun
544
basic_os=sunos3
545
;;
546
sun2os4)
547
basic_machine=m68000-sun
548
basic_os=sunos4
549
;;
550
sun3)
551
basic_machine=m68k-sun
552
basic_os=
553
;;
554
sun3os3)
555
basic_machine=m68k-sun
556
basic_os=sunos3
557
;;
558
sun3os4)
559
basic_machine=m68k-sun
560
basic_os=sunos4
561
;;
562
sun4)
563
basic_machine=sparc-sun
564
basic_os=
565
;;
566
sun4os3)
567
basic_machine=sparc-sun
568
basic_os=sunos3
569
;;
570
sun4os4)
571
basic_machine=sparc-sun
572
basic_os=sunos4
573
;;
574
sun4sol2)
575
basic_machine=sparc-sun
576
basic_os=solaris2
577
;;
578
sun386 | sun386i | roadrunner)
579
basic_machine=i386-sun
580
basic_os=
581
;;
582
sv1)
583
basic_machine=sv1-cray
584
basic_os=unicos
585
;;
586
symmetry)
587
basic_machine=i386-sequent
588
basic_os=dynix
589
;;
590
t3e)
591
basic_machine=alphaev5-cray
592
basic_os=unicos
593
;;
594
t90)
595
basic_machine=t90-cray
596
basic_os=unicos
597
;;
598
toad1)
599
basic_machine=pdp10-xkl
600
basic_os=tops20
601
;;
602
tpf)
603
basic_machine=s390x-ibm
604
basic_os=tpf
605
;;
606
udi29k)
607
basic_machine=a29k-amd
608
basic_os=udi
609
;;
610
ultra3)
611
basic_machine=a29k-nyu
612
basic_os=sym1
613
;;
614
v810 | necv810)
615
basic_machine=v810-nec
616
basic_os=none
617
;;
618
vaxv)
619
basic_machine=vax-dec
620
basic_os=sysv
621
;;
622
vms)
623
basic_machine=vax-dec
624
basic_os=vms
625
;;
626
vsta)
627
basic_machine=i386-pc
628
basic_os=vsta
629
;;
630
vxworks960)
631
basic_machine=i960-wrs
632
basic_os=vxworks
633
;;
634
vxworks68)
635
basic_machine=m68k-wrs
636
basic_os=vxworks
637
;;
638
vxworks29k)
639
basic_machine=a29k-wrs
640
basic_os=vxworks
641
;;
642
xbox)
643
basic_machine=i686-pc
644
basic_os=mingw32
645
;;
646
ymp)
647
basic_machine=ymp-cray
648
basic_os=unicos
649
;;
650
*)
651
basic_machine=$1
652
basic_os=
653
;;
654
esac
658
# Decode 1-component or ad-hoc basic machines
660
# Here we handle the default manufacturer of certain CPU types. It is in
661
# some cases the only manufacturer, in others, it is the most popular.
662
w89k)
663
cpu=hppa1.1
664
vendor=winbond
666
op50n)
667
cpu=hppa1.1
668
vendor=oki
670
op60c)
671
cpu=hppa1.1
672
vendor=oki
674
ibm*)
675
cpu=i370
676
vendor=ibm
678
orion105)
679
cpu=clipper
680
vendor=highlevel
682
mac | mpw | mac-mpw)
683
cpu=m68k
684
vendor=apple
686
pmac | pmac-mpw)
687
cpu=powerpc
688
vendor=apple
689
;;
690
691
# Recognize the various machine names and aliases which stand
692
# for a CPU type and a company and sometimes even an OS.
693
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
702
cpu=powerpc
703
vendor=ibm
704
basic_os=cnk
705
;;
706
decsystem10* | dec10*)
707
cpu=pdp10
708
vendor=dec
709
basic_os=tops10
710
;;
711
decsystem20* | dec20*)
712
cpu=pdp10
713
vendor=dec
714
basic_os=tops20
715
;;
716
delta | 3300 | motorola-3300 | motorola-delta \
717
| 3300-motorola | delta-motorola)
722
cpu=m68k
723
vendor=bull
724
basic_os=sysv3
725
;;
726
encore | umax | mmax)
730
elxsi)
731
cpu=elxsi
732
vendor=elxsi
733
basic_os=${basic_os:-bsd}
744
cpu=hppa1.1
745
vendor=hitachi
746
basic_os=hiuxwe2
747
;;
748
hp3k9[0-9][0-9] | hp9[0-9][0-9])
751
;;
752
hp9k2[0-9][0-9] | hp9k31[0-9])
759
;;
760
hp9k6[0-9][0-9] | hp6[0-9][0-9])
763
;;
764
hp9k7[0-79][0-9] | hp7[0-79][0-9])
767
;;
768
hp9k78[0-9] | hp78[0-9])
769
# FIXME: really hppa2.0-hp
772
;;
773
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
774
# FIXME: really hppa2.0-hp
777
;;
778
hp9k8[0-9][13679] | hp8[0-9][13679])
781
;;
782
hp9k8[0-9][0-9] | hp8[0-9][0-9])
787
cpu=`echo "$1" | sed -e 's/86.*/86/'`
788
vendor=pc
789
basic_os=sysv32
792
cpu=`echo "$1" | sed -e 's/86.*/86/'`
797
cpu=`echo "$1" | sed -e 's/86.*/86/'`
802
cpu=`echo "$1" | sed -e 's/86.*/86/'`
803
vendor=pc
804
basic_os=solaris2
806
j90 | j90-cray)
807
cpu=j90
808
vendor=cray
809
basic_os=${basic_os:-unicos}
812
cpu=mips
813
vendor=sgi
814
case $basic_os in
815
irix*)
819
;;
820
esac
821
;;
822
miniframe)
823
cpu=m68000
824
vendor=convergent
826
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
827
cpu=m68k
828
vendor=atari
829
basic_os=mint
830
;;
831
news-3600 | risc-news)
832
cpu=mips
833
vendor=sony
834
basic_os=newsos
837
cpu=m68k
838
vendor=next
839
case $basic_os in
840
openstep*)
841
;;
842
nextstep*)
849
;;
850
esac
851
;;
852
np1)
857
cpu=hppa1.1
858
vendor=oki
859
basic_os=proelf
862
cpu=hppa1.1
863
vendor=hitachi
864
basic_os=hiuxwe2
874
pc532)
875
cpu=ns32k
876
vendor=pc532
882
power)
883
cpu=power
884
vendor=ibm
886
ps2)
887
cpu=i386
888
vendor=ibm
890
rm[46]00)
891
cpu=mips
892
vendor=siemens
894
rtpc | rtpc-*)
895
cpu=romp
896
vendor=ibm
898
sde)
899
cpu=mipsisa32
900
vendor=sde
901
basic_os=${basic_os:-elf}
903
simso-wrs)
904
cpu=sparclite
905
vendor=wrs
906
basic_os=vxworks
908
tower | tower-32)
909
cpu=m68k
910
vendor=ncr
912
vpp*|vx|vx-*)
913
cpu=f301
914
vendor=fujitsu
916
w65)
917
cpu=w65
918
vendor=wdc
920
w89k-*)
921
cpu=hppa1.1
922
vendor=winbond
923
basic_os=proelf
925
none)
926
cpu=none
927
vendor=none
929
leon|leon[3-9])
930
cpu=sparc
931
vendor=$basic_machine
933
leon-*|leon[3-9]-*)
934
cpu=sparc
935
vendor=`echo "$basic_machine" | sed 's/-.*//'`
937
938
*-*)
939
# shellcheck disable=SC2162
941
IFS="-" read cpu vendor <<EOF
942
$basic_machine
943
EOF
946
# We use `pc' rather than `unknown'
947
# because (1) that's what they normally are, and
948
# (2) the word "unknown" tends to confuse beginning users.
949
i*86 | x86_64)
950
cpu=$basic_machine
951
vendor=pc
953
# These rules are duplicated from below for sake of the special case above;
954
# i.e. things that normalized to x86 arches should also default to "pc"
955
pc98)
956
cpu=i386
957
vendor=pc
959
x64 | amd64)
960
cpu=x86_64
961
vendor=pc
963
# Recognize the basic CPU types without company name.
964
*)
965
cpu=$basic_machine
966
vendor=unknown
968
esac
969
970
unset -v basic_machine
971
972
# Decode basic machines in the full and proper CPU-Company form.
973
case $cpu-$vendor in
974
# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
975
# some cases the only manufacturer, in others, it is the most popular.
976
craynv-unknown)
977
vendor=cray
978
basic_os=${basic_os:-unicosmp}
980
c90-unknown | c90-cray)
981
vendor=cray
982
basic_os=${Basic_os:-unicos}
984
fx80-unknown)
985
vendor=alliant
990
mmix-unknown)
991
vendor=knuth
993
microblaze-unknown | microblazeel-unknown)
994
vendor=xilinx
996
rs6000-unknown)
997
vendor=ibm
1002
pdp11-unknown)
1003
vendor=dec
1005
we32k-unknown)
1006
vendor=att
1008
cydra-unknown)
1009
vendor=cydrome
1014
orion-unknown)
1015
vendor=highlevel
1017
xps-unknown | xps100-unknown)
1018
cpu=xps100
1019
vendor=honeywell
1021
1022
# Here we normalize CPU types with a missing or matching vendor
1023
dpx20-unknown | dpx20-bull)
1024
cpu=rs6000
1025
vendor=bull
1026
basic_os=${basic_os:-bosx}
1028
1029
# Here we normalize CPU types irrespective of the vendor
1030
amd64-*)
1031
cpu=x86_64
1033
blackfin-*)
1034
cpu=bfin
1035
basic_os=linux
1046
e500v[12]-*)
1047
cpu=powerpc
1048
basic_os=${basic_os}"spe"
1056
m68knommu-*)
1057
cpu=m68k
1058
basic_os=linux
1060
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1061
cpu=s12z
1066
parisc-*)
1067
cpu=hppa
1068
basic_os=linux
1070
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1071
cpu=i586
1073
pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
1074
cpu=i686
1076
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1077
cpu=i686
1085
ppc-* | ppcbe-*)
1086
cpu=powerpc
1088
ppcle-* | powerpclittle-*)
1089
cpu=powerpcle
1094
ppc64le-* | powerpc64little-*)
1095
cpu=powerpc64le
1097
sb1-*)
1098
cpu=mipsisa64sb1
1100
sb1el-*)
1101
cpu=mipsisa64sb1el
1104
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1109
strongarm-* | thumb-*)
1110
cpu=arm
1115
tx39el-*)
1116
cpu=mipstx39el
1120
;;
1121
xscale-* | xscalee[bl]-*)
1122
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1128
# Recognize the canonical CPU Types that limit and/or modify the
1129
# company names they are paired with.
1130
cr16-*)
1131
basic_os=${basic_os:-elf}
1133
crisv32-* | etraxfs*-*)
1134
cpu=crisv32
1135
vendor=axis
1137
cris-* | etrax*-*)
1138
cpu=cris
1139
vendor=axis
1141
crx-*)
1142
basic_os=${basic_os:-elf}
1144
neo-tandem)
1145
cpu=neo
1146
vendor=tandem
1148
nse-tandem)
1149
cpu=nse
1150
vendor=tandem
1152
nsr-tandem)
1153
cpu=nsr
1154
vendor=tandem
1156
nsv-tandem)
1157
cpu=nsv
1158
vendor=tandem
1160
nsx-tandem)
1161
cpu=nsx
1162
vendor=tandem
1164
mipsallegrexel-sony)
1165
cpu=mipsallegrexel
1166
vendor=sony
1168
tile*-*)
1169
basic_os=${basic_os:-linux-gnu}
1173
# Recognize the canonical CPU types that are allowed with any
1174
# company name.
1175
case $cpu in
1176
1750a | 580 \
1177
| a29k \
1178
| aarch64 | aarch64_be \
1179
| abacus \
1180
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
1181
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
1182
| alphapca5[67] | alpha64pca5[67] \
1183
| am33_2.0 \
1184
| amdgcn \
1185
| arc | arceb | arc32 | arc64 \
1186
| arm | arm[lb]e | arme[lb] | armv* \
1187
| avr | avr32 \
1188
| asmjs \
1189
| ba \
1190
| be32 | be64 \
1191
| bfin | bpf | bs2000 \
1192
| c[123]* | c30 | [cjt]90 | c4x \
1193
| c8051 | clipper | craynv | csky | cydra \
1194
| d10v | d30v | dlx | dsp16xx \
1195
| e2k | elxsi | epiphany \
1196
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
1197
| h8300 | h8500 \
1198
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
1199
| hexagon \
1200
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
1201
| ip2k | iq2000 \
1202
| k1om \
1203
| le32 | le64 \
1204
| lm32 \
1205
| loongarch32 | loongarch64 | loongarchx32 \
1206
| m32c | m32r | m32rle \
1207
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
1208
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
1209
| m88110 | m88k | maxq | mb | mcore | mep | metag \
1210
| microblaze | microblazeel \
1211
| mips | mipsbe | mipseb | mipsel | mipsle \
1212
| mips16 \
1213
| mips64 | mips64eb | mips64el \
1214
| mips64octeon | mips64octeonel \
1215
| mips64orion | mips64orionel \
1216
| mips64r5900 | mips64r5900el \
1217
| mips64vr | mips64vrel \
1218
| mips64vr4100 | mips64vr4100el \
1219
| mips64vr4300 | mips64vr4300el \
1220
| mips64vr5000 | mips64vr5000el \
1221
| mips64vr5900 | mips64vr5900el \
1222
| mipsisa32 | mipsisa32el \
1223
| mipsisa32r2 | mipsisa32r2el \
1224
| mipsisa32r3 | mipsisa32r3el \
1225
| mipsisa32r5 | mipsisa32r5el \
1226
| mipsisa32r6 | mipsisa32r6el \
1227
| mipsisa64 | mipsisa64el \
1228
| mipsisa64r2 | mipsisa64r2el \
1229
| mipsisa64r3 | mipsisa64r3el \
1230
| mipsisa64r5 | mipsisa64r5el \
1231
| mipsisa64r6 | mipsisa64r6el \
1232
| mipsisa64sb1 | mipsisa64sb1el \
1233
| mipsisa64sr71k | mipsisa64sr71kel \
1234
| mipsr5900 | mipsr5900el \
1235
| mipstx39 | mipstx39el \
1236
| mmix \
1237
| mn10200 | mn10300 \
1238
| moxie \
1239
| mt \
1240
| msp430 \
1241
| nds32 | nds32le | nds32be \
1242
| nfp \
1243
| nios | nios2 | nios2eb | nios2el \
1244
| none | np1 | ns16k | ns32k | nvptx \
1245
| open8 \
1246
| or1k* \
1247
| or32 \
1248
| orion \
1249
| picochip \
1250
| pdp10 | pdp11 | pj | pjl | pn | power \
1251
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
1252
| pru \
1253
| pyramid \
1254
| riscv | riscv32 | riscv32be | riscv64 | riscv64be \
1255
| rl78 | romp | rs6000 | rx \
1256
| s390 | s390x \
1257
| score \
1258
| sh | shl \
1259
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
1260
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
1261
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
1262
| sparclite \
1263
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
1264
| spu \
1265
| tahoe \
1266
| thumbv7* \
1267
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
1268
| tron \
1269
| ubicom32 \
1270
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
1271
| vax \
1272
| visium \
1273
| w65 \
1274
| wasm32 | wasm64 \
1275
| we32k \
1276
| x86 | x86_64 | xc16x | xgate | xps100 \
1277
| xstormy16 | xtensa* \
1278
| ymp \
1279
| z8k | z80)
1280
;;
1281
1282
*)
1283
echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
1284
exit 1
1285
;;
1286
esac
1287
;;
1288
esac
1289
1290
# Here we canonicalize certain aliases for manufacturers.
1291
case $vendor in
1292
digital*)
1293
vendor=dec
1297
;;
1298
*)
1299
;;
1300
esac
1301
1302
# Decode manufacturer-specific aliases for certain operating systems.
1303
1306
1307
# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
1308
# set os.
1309
case $basic_os in
1310
gnu/linux*)
1311
kernel=linux
1312
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1313
;;
1314
os2-emx)
1315
kernel=os2
1316
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1317
;;
1318
nto-qnx*)
1319
kernel=nto
1320
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1321
;;
1322
*-*)
1323
# shellcheck disable=SC2162
1325
IFS="-" read kernel os <<EOF
1326
$basic_os
1327
EOF
1329
;;
1330
# Default OS when just kernel was specified
1331
nto*)
1332
kernel=nto
1333
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1334
;;
1335
linux*)
1336
kernel=linux
1337
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1338
;;
1339
*)
1340
kernel=
1341
os=$basic_os
1342
;;
1343
esac
1344
1345
# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1346
# etc.)
1348
# First match some system type aliases that might get confused
1349
# with valid system types.
1350
# solaris* is a basic system type, with this one exception.
1351
auroraux)
1352
os=auroraux
1358
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1363
unixware*)
1364
os=sysv4.2uw
1366
# es1800 is here to avoid being matched by es* (a different OS)
1370
# Some version numbers need modification
1371
chorusos*)
1372
os=chorusos
1387
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1389
sco*v* | scout)
1390
# Don't match below
1410
lynxos*)
1411
# don't get caught up in next wildcard
1417
os=`echo "$os" | sed -e 's|mac|macos|'`
1419
opened*)
1420
os=openedition
1426
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1429
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1461
# Preserve the version number of sinix5.
1462
sinix5.*)
1463
os=`echo "$os" | sed -e 's|sinix|sysv|'`
1477
svr4*)
1478
os=sysv4
1479
;;
1480
svr3)
1481
os=sysv3
1482
;;
1483
sysvr4)
1484
os=sysv4
1485
;;
1486
ose*)
1487
os=ose
1488
;;
1489
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1490
os=mint
1491
;;
1492
dicos*)
1493
os=dicos
1494
;;
1495
pikeos*)
1496
# Until real need of OS specific support for
1497
# particular features comes up, bare metal
1498
# configurations are quite functional.
1509
# No normalization, but not necessarily accepted, that comes below.
1513
else
1514
1515
# Here we handle the default operating systems that come with various machines.
1516
# The value should be what the vendor currently ships out the door with their
1517
# machine or put another way, the most popular os provided with the machine.
1518
1519
# Note that if you're going to try to match "-MANUFACTURER" here (say,
1520
# "-sun"), then you have to tell the case statement up towards the top
1521
# that MANUFACTURER isn't an operating system. Otherwise, code above
1522
# will signal an error saying that MANUFACTURER isn't an operating
1523
# system, and we'll never get to this point.
1524
1525
kernel=
1526
case $cpu-$vendor in
1542
;;
1543
c4x-* | tic4x-*)
1547
os=elf
1548
;;
1549
clipper-intergraph)
1550
os=clix
1552
hexagon-*)
1563
;;
1564
# This must come before the *-dec entry.
1565
pdp10-*)
1597
;;
1598
*-tti) # must be before sparc entry or we get the wrong os.
1600
;;
1601
sparc-* | *-sun)
1630
;;
1631
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1681
;;
1682
f30[01]-fujitsu | f700-fujitsu)
1695
os=mint
1696
;;
1697
*-wrs)
1698
os=vxworks
1707
# Now, validate our (potentially fixed-up) OS.
1708
case $os in
1709
# Sometimes we do "kernel-libc", so those need to count as OSes.
1710
musl* | newlib* | relibc* | uclibc*)
1711
;;
1712
# Likewise for "kernel-abi"
1713
eabi* | gnueabi*)
1714
;;
1715
# VxWorks passes extra cpu info in the 4th filed.
1716
simlinux | simwindows | spe)
1717
;;
1718
# Now accept the basic system types.
1719
# The portable systems comes first.
1720
# Each alternative MUST end in a * to match a version number.
1721
gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
1722
| *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
1723
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
1724
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
1725
| hiux* | abug | nacl* | netware* | windows* \
1726
| os9* | macos* | osx* | ios* \
1727
| mpw* | magic* | mmixware* | mon960* | lnews* \
1728
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
1729
| aos* | aros* | cloudabi* | sortix* | twizzler* \
1730
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
1731
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
1732
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
1733
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
1734
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
1735
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
1736
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
1737
| udi* | lites* | ieee* | go32* | aux* | hcos* \
1738
| chorusrdb* | cegcc* | glidix* | serenity* \
1739
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
1740
| midipix* | mingw32* | mingw64* | mint* \
1741
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
1742
| interix* | uwin* | mks* | rhapsody* | darwin* \
1743
| openstep* | oskit* | conix* | pw32* | nonstopux* \
1744
| storm-chaos* | tops10* | tenex* | tops20* | its* \
1745
| os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
1746
| scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
1747
| powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
1748
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
1749
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
1750
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
1751
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
1752
;;
1753
# This one is extra strict with allowed versions
1754
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
1755
# Don't forget version if it is 3.2v4 or newer.
1756
;;
1757
none)
1758
;;
1759
*)
1760
echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
1761
exit 1
1762
;;
1763
esac
1764
1765
# As a final step for OS-related things, validate the OS-kernel combination
1766
# (given a valid OS), if there is a kernel.
1767
case $kernel-$os in
1768
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
1769
| linux-musl* | linux-relibc* | linux-uclibc* )
1770
;;
1771
uclinux-uclibc* )
1772
;;
1773
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
1774
# These are just libc implementations, not actual OSes, and thus
1775
# require a kernel.
1776
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
1777
exit 1
1778
;;
1779
kfreebsd*-gnu* | kopensolaris*-gnu*)
1780
;;
1781
vxworks-simlinux | vxworks-simwindows | vxworks-spe)
1782
;;
1783
nto-qnx*)
1784
;;
1785
os2-emx)
1786
;;
1787
*-eabi* | *-gnueabi*)
1788
;;
1789
-*)
1790
# Blank kernel with real OS is always fine.
1791
;;
1792
*-*)
1793
echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
1794
exit 1
1795
;;
1796
esac
1797
1798
# Here we handle the case where we know the os, and the CPU type, but not the
1799
# manufacturer. We pick the logical manufacturer.
1800
case $vendor in
1801
unknown)
1802
case $cpu-$os in
1803
*-riscix*)
1836
*-clix*)
1837
vendor=intergraph
1838
;;
1839
*-mvs* | *-opened*)
1840
vendor=ibm
1841
;;
1842
*-os400*)
1854
*-vxsim* | *-vxworks* | *-windiss*)
1866
*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
1870
vendor=stratus
1871
;;
1872
esac
1873
;;
1874
esac
1875
1876
echo "$cpu-$vendor-${kernel:+$kernel-}$os"
1877
exit
1878
1879
# Local variables:
1880
# eval: (add-hook 'before-save-hook 'time-stamp)
1881
# time-stamp-start: "timestamp='"
1882
# time-stamp-format: "%:y-%02m-%02d"
1883
# time-stamp-end: "'"
1884
# End: