Fossil SCM

fossil-scm / autosetup / autosetup-config.sub
Blame History Raw 2355 lines
1
#! /bin/sh
2
# Configuration validation subroutine script.
3
# Copyright 1992-2024 Free Software Foundation, Inc.
4
5
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
6
7
timestamp='2024-05-27'
8
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").
28
29
30
# Please send patches to <[email protected]>.
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,.*/,,'`
63
64
usage="\
65
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
66
67
Canonicalize a configuration name.
68
69
Options:
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 <[email protected]>."
75
76
version="\
77
GNU config.sub ($timestamp)
78
79
Copyright 1992-2024 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.
106
echo "$1"
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
saved_IFS=$IFS
124
IFS="-" read field1 field2 field3 field4 <<EOF
125
$1
126
EOF
127
IFS=$saved_IFS
128
129
# Separate into logical components for further validation
130
case $1 in
131
*-*-*-*-*)
132
echo "Invalid configuration '$1': more than four components" >&2
133
exit 1
134
;;
135
*-*-*-*)
136
basic_machine=$field1-$field2
137
basic_os=$field3-$field4
138
;;
139
*-*-*)
140
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
141
# parts
142
maybe_os=$field2-$field3
143
case $maybe_os in
144
cloudabi*-eabi* \
145
| kfreebsd*-gnu* \
146
| knetbsd*-gnu* \
147
| kopensolaris*-gnu* \
148
| linux-* \
149
| managarm-* \
150
| netbsd*-eabi* \
151
| netbsd*-gnu* \
152
| nto-qnx* \
153
| os2-emx* \
154
| rtmk-nova* \
155
| storm-chaos* \
156
| uclinux-gnu* \
157
| uclinux-uclibc* \
158
| windows-* )
159
basic_machine=$field1
160
basic_os=$maybe_os
161
;;
162
android-linux)
163
basic_machine=$field1-unknown
164
basic_os=linux-android
165
;;
166
*)
167
basic_machine=$field1-$field2
168
basic_os=$field3
169
;;
170
esac
171
;;
172
*-*)
173
case $field1-$field2 in
174
# Shorthands that happen to contain a single dash
175
convex-c[12] | convex-c3[248])
176
basic_machine=$field2-convex
177
basic_os=
178
;;
179
decstation-3100)
180
basic_machine=mips-dec
181
basic_os=
182
;;
183
*-*)
184
# Second component is usually, but not always the OS
185
case $field2 in
186
# Do not treat sunos as a manufacturer
187
sun*os*)
188
basic_machine=$field1
189
basic_os=$field2
190
;;
191
# Manufacturers
192
3100* \
193
| 32* \
194
| 3300* \
195
| 3600* \
196
| 7300* \
197
| acorn \
198
| altos* \
199
| apollo \
200
| apple \
201
| atari \
202
| att* \
203
| axis \
204
| be \
205
| bull \
206
| cbm \
207
| ccur \
208
| cisco \
209
| commodore \
210
| convergent* \
211
| convex* \
212
| cray \
213
| crds \
214
| dec* \
215
| delta* \
216
| dg \
217
| digital \
218
| dolphin \
219
| encore* \
220
| gould \
221
| harris \
222
| highlevel \
223
| hitachi* \
224
| hp \
225
| ibm* \
226
| intergraph \
227
| isi* \
228
| knuth \
229
| masscomp \
230
| microblaze* \
231
| mips* \
232
| motorola* \
233
| ncr* \
234
| news \
235
| next \
236
| ns \
237
| oki \
238
| omron* \
239
| pc533* \
240
| rebel \
241
| rom68k \
242
| rombug \
243
| semi \
244
| sequent* \
245
| siemens \
246
| sgi* \
247
| siemens \
248
| sim \
249
| sni \
250
| sony* \
251
| stratus \
252
| sun \
253
| sun[234]* \
254
| tektronix \
255
| tti* \
256
| ultra \
257
| unicom* \
258
| wec \
259
| winbond \
260
| wrs)
261
basic_machine=$field1-$field2
262
basic_os=
263
;;
264
zephyr*)
265
basic_machine=$field1-unknown
266
basic_os=$field2
267
;;
268
*)
269
basic_machine=$field1
270
basic_os=$field2
271
;;
272
esac
273
;;
274
esac
275
;;
276
*)
277
# Convert single-component short-hands not valid as part of
278
# multi-component configurations.
279
case $field1 in
280
386bsd)
281
basic_machine=i386-pc
282
basic_os=bsd
283
;;
284
a29khif)
285
basic_machine=a29k-amd
286
basic_os=udi
287
;;
288
adobe68k)
289
basic_machine=m68010-adobe
290
basic_os=scout
291
;;
292
alliant)
293
basic_machine=fx80-alliant
294
basic_os=
295
;;
296
altos | altos3068)
297
basic_machine=m68k-altos
298
basic_os=
299
;;
300
am29k)
301
basic_machine=a29k-none
302
basic_os=bsd
303
;;
304
amdahl)
305
basic_machine=580-amdahl
306
basic_os=sysv
307
;;
308
amiga)
309
basic_machine=m68k-unknown
310
basic_os=
311
;;
312
amigaos | amigados)
313
basic_machine=m68k-unknown
314
basic_os=amigaos
315
;;
316
amigaunix | amix)
317
basic_machine=m68k-unknown
318
basic_os=sysv4
319
;;
320
apollo68)
321
basic_machine=m68k-apollo
322
basic_os=sysv
323
;;
324
apollo68bsd)
325
basic_machine=m68k-apollo
326
basic_os=bsd
327
;;
328
aros)
329
basic_machine=i386-pc
330
basic_os=aros
331
;;
332
aux)
333
basic_machine=m68k-apple
334
basic_os=aux
335
;;
336
balance)
337
basic_machine=ns32k-sequent
338
basic_os=dynix
339
;;
340
blackfin)
341
basic_machine=bfin-unknown
342
basic_os=linux
343
;;
344
cegcc)
345
basic_machine=arm-unknown
346
basic_os=cegcc
347
;;
348
cray)
349
basic_machine=j90-cray
350
basic_os=unicos
351
;;
352
crds | unos)
353
basic_machine=m68k-crds
354
basic_os=
355
;;
356
da30)
357
basic_machine=m68k-da30
358
basic_os=
359
;;
360
decstation | pmax | pmin | dec3100 | decstatn)
361
basic_machine=mips-dec
362
basic_os=
363
;;
364
delta88)
365
basic_machine=m88k-motorola
366
basic_os=sysv3
367
;;
368
dicos)
369
basic_machine=i686-pc
370
basic_os=dicos
371
;;
372
djgpp)
373
basic_machine=i586-pc
374
basic_os=msdosdjgpp
375
;;
376
ebmon29k)
377
basic_machine=a29k-amd
378
basic_os=ebmon
379
;;
380
es1800 | OSE68k | ose68k | ose | OSE)
381
basic_machine=m68k-ericsson
382
basic_os=ose
383
;;
384
gmicro)
385
basic_machine=tron-gmicro
386
basic_os=sysv
387
;;
388
go32)
389
basic_machine=i386-pc
390
basic_os=go32
391
;;
392
h8300hms)
393
basic_machine=h8300-hitachi
394
basic_os=hms
395
;;
396
h8300xray)
397
basic_machine=h8300-hitachi
398
basic_os=xray
399
;;
400
h8500hms)
401
basic_machine=h8500-hitachi
402
basic_os=hms
403
;;
404
harris)
405
basic_machine=m88k-harris
406
basic_os=sysv3
407
;;
408
hp300 | hp300hpux)
409
basic_machine=m68k-hp
410
basic_os=hpux
411
;;
412
hp300bsd)
413
basic_machine=m68k-hp
414
basic_os=bsd
415
;;
416
hppaosf)
417
basic_machine=hppa1.1-hp
418
basic_os=osf
419
;;
420
hppro)
421
basic_machine=hppa1.1-hp
422
basic_os=proelf
423
;;
424
i386mach)
425
basic_machine=i386-mach
426
basic_os=mach
427
;;
428
isi68 | isi)
429
basic_machine=m68k-isi
430
basic_os=sysv
431
;;
432
m68knommu)
433
basic_machine=m68k-unknown
434
basic_os=linux
435
;;
436
magnum | m3230)
437
basic_machine=mips-mips
438
basic_os=sysv
439
;;
440
merlin)
441
basic_machine=ns32k-utek
442
basic_os=sysv
443
;;
444
mingw64)
445
basic_machine=x86_64-pc
446
basic_os=mingw64
447
;;
448
mingw32)
449
basic_machine=i686-pc
450
basic_os=mingw32
451
;;
452
mingw32ce)
453
basic_machine=arm-unknown
454
basic_os=mingw32ce
455
;;
456
monitor)
457
basic_machine=m68k-rom68k
458
basic_os=coff
459
;;
460
morphos)
461
basic_machine=powerpc-unknown
462
basic_os=morphos
463
;;
464
moxiebox)
465
basic_machine=moxie-unknown
466
basic_os=moxiebox
467
;;
468
msdos)
469
basic_machine=i386-pc
470
basic_os=msdos
471
;;
472
msys)
473
basic_machine=i686-pc
474
basic_os=msys
475
;;
476
mvs)
477
basic_machine=i370-ibm
478
basic_os=mvs
479
;;
480
nacl)
481
basic_machine=le32-unknown
482
basic_os=nacl
483
;;
484
ncr3000)
485
basic_machine=i486-ncr
486
basic_os=sysv4
487
;;
488
netbsd386)
489
basic_machine=i386-pc
490
basic_os=netbsd
491
;;
492
netwinder)
493
basic_machine=armv4l-rebel
494
basic_os=linux
495
;;
496
news | news700 | news800 | news900)
497
basic_machine=m68k-sony
498
basic_os=newsos
499
;;
500
news1000)
501
basic_machine=m68030-sony
502
basic_os=newsos
503
;;
504
necv70)
505
basic_machine=v70-nec
506
basic_os=sysv
507
;;
508
nh3000)
509
basic_machine=m68k-harris
510
basic_os=cxux
511
;;
512
nh[45]000)
513
basic_machine=m88k-harris
514
basic_os=cxux
515
;;
516
nindy960)
517
basic_machine=i960-intel
518
basic_os=nindy
519
;;
520
mon960)
521
basic_machine=i960-intel
522
basic_os=mon960
523
;;
524
nonstopux)
525
basic_machine=mips-compaq
526
basic_os=nonstopux
527
;;
528
os400)
529
basic_machine=powerpc-ibm
530
basic_os=os400
531
;;
532
OSE68000 | ose68000)
533
basic_machine=m68000-ericsson
534
basic_os=ose
535
;;
536
os68k)
537
basic_machine=m68k-none
538
basic_os=os68k
539
;;
540
paragon)
541
basic_machine=i860-intel
542
basic_os=osf
543
;;
544
parisc)
545
basic_machine=hppa-unknown
546
basic_os=linux
547
;;
548
psp)
549
basic_machine=mipsallegrexel-sony
550
basic_os=psp
551
;;
552
pw32)
553
basic_machine=i586-unknown
554
basic_os=pw32
555
;;
556
rdos | rdos64)
557
basic_machine=x86_64-pc
558
basic_os=rdos
559
;;
560
rdos32)
561
basic_machine=i386-pc
562
basic_os=rdos
563
;;
564
rom68k)
565
basic_machine=m68k-rom68k
566
basic_os=coff
567
;;
568
sa29200)
569
basic_machine=a29k-amd
570
basic_os=udi
571
;;
572
sei)
573
basic_machine=mips-sei
574
basic_os=seiux
575
;;
576
sequent)
577
basic_machine=i386-sequent
578
basic_os=
579
;;
580
sps7)
581
basic_machine=m68k-bull
582
basic_os=sysv2
583
;;
584
st2000)
585
basic_machine=m68k-tandem
586
basic_os=
587
;;
588
stratus)
589
basic_machine=i860-stratus
590
basic_os=sysv4
591
;;
592
sun2)
593
basic_machine=m68000-sun
594
basic_os=
595
;;
596
sun2os3)
597
basic_machine=m68000-sun
598
basic_os=sunos3
599
;;
600
sun2os4)
601
basic_machine=m68000-sun
602
basic_os=sunos4
603
;;
604
sun3)
605
basic_machine=m68k-sun
606
basic_os=
607
;;
608
sun3os3)
609
basic_machine=m68k-sun
610
basic_os=sunos3
611
;;
612
sun3os4)
613
basic_machine=m68k-sun
614
basic_os=sunos4
615
;;
616
sun4)
617
basic_machine=sparc-sun
618
basic_os=
619
;;
620
sun4os3)
621
basic_machine=sparc-sun
622
basic_os=sunos3
623
;;
624
sun4os4)
625
basic_machine=sparc-sun
626
basic_os=sunos4
627
;;
628
sun4sol2)
629
basic_machine=sparc-sun
630
basic_os=solaris2
631
;;
632
sun386 | sun386i | roadrunner)
633
basic_machine=i386-sun
634
basic_os=
635
;;
636
sv1)
637
basic_machine=sv1-cray
638
basic_os=unicos
639
;;
640
symmetry)
641
basic_machine=i386-sequent
642
basic_os=dynix
643
;;
644
t3e)
645
basic_machine=alphaev5-cray
646
basic_os=unicos
647
;;
648
t90)
649
basic_machine=t90-cray
650
basic_os=unicos
651
;;
652
toad1)
653
basic_machine=pdp10-xkl
654
basic_os=tops20
655
;;
656
tpf)
657
basic_machine=s390x-ibm
658
basic_os=tpf
659
;;
660
udi29k)
661
basic_machine=a29k-amd
662
basic_os=udi
663
;;
664
ultra3)
665
basic_machine=a29k-nyu
666
basic_os=sym1
667
;;
668
v810 | necv810)
669
basic_machine=v810-nec
670
basic_os=none
671
;;
672
vaxv)
673
basic_machine=vax-dec
674
basic_os=sysv
675
;;
676
vms)
677
basic_machine=vax-dec
678
basic_os=vms
679
;;
680
vsta)
681
basic_machine=i386-pc
682
basic_os=vsta
683
;;
684
vxworks960)
685
basic_machine=i960-wrs
686
basic_os=vxworks
687
;;
688
vxworks68)
689
basic_machine=m68k-wrs
690
basic_os=vxworks
691
;;
692
vxworks29k)
693
basic_machine=a29k-wrs
694
basic_os=vxworks
695
;;
696
xbox)
697
basic_machine=i686-pc
698
basic_os=mingw32
699
;;
700
ymp)
701
basic_machine=ymp-cray
702
basic_os=unicos
703
;;
704
*)
705
basic_machine=$1
706
basic_os=
707
;;
708
esac
709
;;
710
esac
711
712
# Decode 1-component or ad-hoc basic machines
713
case $basic_machine in
714
# Here we handle the default manufacturer of certain CPU types. It is in
715
# some cases the only manufacturer, in others, it is the most popular.
716
w89k)
717
cpu=hppa1.1
718
vendor=winbond
719
;;
720
op50n)
721
cpu=hppa1.1
722
vendor=oki
723
;;
724
op60c)
725
cpu=hppa1.1
726
vendor=oki
727
;;
728
ibm*)
729
cpu=i370
730
vendor=ibm
731
;;
732
orion105)
733
cpu=clipper
734
vendor=highlevel
735
;;
736
mac | mpw | mac-mpw)
737
cpu=m68k
738
vendor=apple
739
;;
740
pmac | pmac-mpw)
741
cpu=powerpc
742
vendor=apple
743
;;
744
745
# Recognize the various machine names and aliases which stand
746
# for a CPU type and a company and sometimes even an OS.
747
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
748
cpu=m68000
749
vendor=att
750
;;
751
3b*)
752
cpu=we32k
753
vendor=att
754
;;
755
bluegene*)
756
cpu=powerpc
757
vendor=ibm
758
basic_os=cnk
759
;;
760
decsystem10* | dec10*)
761
cpu=pdp10
762
vendor=dec
763
basic_os=tops10
764
;;
765
decsystem20* | dec20*)
766
cpu=pdp10
767
vendor=dec
768
basic_os=tops20
769
;;
770
delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
771
cpu=m68k
772
vendor=motorola
773
;;
774
# This used to be dpx2*, but that gets the RS6000-based
775
# DPX/20 and the x86-based DPX/2-100 wrong. See
776
# https://oldskool.silicium.org/stations/bull_dpx20.htm
777
# https://www.feb-patrimoine.com/english/bull_dpx2.htm
778
# https://www.feb-patrimoine.com/english/unix_and_bull.htm
779
dpx2 | dpx2[23]00 | dpx2[23]xx)
780
cpu=m68k
781
vendor=bull
782
;;
783
dpx2100 | dpx21xx)
784
cpu=i386
785
vendor=bull
786
;;
787
dpx20)
788
cpu=rs6000
789
vendor=bull
790
;;
791
encore | umax | mmax)
792
cpu=ns32k
793
vendor=encore
794
;;
795
elxsi)
796
cpu=elxsi
797
vendor=elxsi
798
basic_os=${basic_os:-bsd}
799
;;
800
fx2800)
801
cpu=i860
802
vendor=alliant
803
;;
804
genix)
805
cpu=ns32k
806
vendor=ns
807
;;
808
h3050r* | hiux*)
809
cpu=hppa1.1
810
vendor=hitachi
811
basic_os=hiuxwe2
812
;;
813
hp3k9[0-9][0-9] | hp9[0-9][0-9])
814
cpu=hppa1.0
815
vendor=hp
816
;;
817
hp9k2[0-9][0-9] | hp9k31[0-9])
818
cpu=m68000
819
vendor=hp
820
;;
821
hp9k3[2-9][0-9])
822
cpu=m68k
823
vendor=hp
824
;;
825
hp9k6[0-9][0-9] | hp6[0-9][0-9])
826
cpu=hppa1.0
827
vendor=hp
828
;;
829
hp9k7[0-79][0-9] | hp7[0-79][0-9])
830
cpu=hppa1.1
831
vendor=hp
832
;;
833
hp9k78[0-9] | hp78[0-9])
834
# FIXME: really hppa2.0-hp
835
cpu=hppa1.1
836
vendor=hp
837
;;
838
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
839
# FIXME: really hppa2.0-hp
840
cpu=hppa1.1
841
vendor=hp
842
;;
843
hp9k8[0-9][13679] | hp8[0-9][13679])
844
cpu=hppa1.1
845
vendor=hp
846
;;
847
hp9k8[0-9][0-9] | hp8[0-9][0-9])
848
cpu=hppa1.0
849
vendor=hp
850
;;
851
i*86v32)
852
cpu=`echo "$1" | sed -e 's/86.*/86/'`
853
vendor=pc
854
basic_os=sysv32
855
;;
856
i*86v4*)
857
cpu=`echo "$1" | sed -e 's/86.*/86/'`
858
vendor=pc
859
basic_os=sysv4
860
;;
861
i*86v)
862
cpu=`echo "$1" | sed -e 's/86.*/86/'`
863
vendor=pc
864
basic_os=sysv
865
;;
866
i*86sol2)
867
cpu=`echo "$1" | sed -e 's/86.*/86/'`
868
vendor=pc
869
basic_os=solaris2
870
;;
871
j90 | j90-cray)
872
cpu=j90
873
vendor=cray
874
basic_os=${basic_os:-unicos}
875
;;
876
iris | iris4d)
877
cpu=mips
878
vendor=sgi
879
case $basic_os in
880
irix*)
881
;;
882
*)
883
basic_os=irix4
884
;;
885
esac
886
;;
887
miniframe)
888
cpu=m68000
889
vendor=convergent
890
;;
891
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
892
cpu=m68k
893
vendor=atari
894
basic_os=mint
895
;;
896
news-3600 | risc-news)
897
cpu=mips
898
vendor=sony
899
basic_os=newsos
900
;;
901
next | m*-next)
902
cpu=m68k
903
vendor=next
904
;;
905
np1)
906
cpu=np1
907
vendor=gould
908
;;
909
op50n-* | op60c-*)
910
cpu=hppa1.1
911
vendor=oki
912
basic_os=proelf
913
;;
914
pa-hitachi)
915
cpu=hppa1.1
916
vendor=hitachi
917
basic_os=hiuxwe2
918
;;
919
pbd)
920
cpu=sparc
921
vendor=tti
922
;;
923
pbb)
924
cpu=m68k
925
vendor=tti
926
;;
927
pc532)
928
cpu=ns32k
929
vendor=pc532
930
;;
931
pn)
932
cpu=pn
933
vendor=gould
934
;;
935
power)
936
cpu=power
937
vendor=ibm
938
;;
939
ps2)
940
cpu=i386
941
vendor=ibm
942
;;
943
rm[46]00)
944
cpu=mips
945
vendor=siemens
946
;;
947
rtpc | rtpc-*)
948
cpu=romp
949
vendor=ibm
950
;;
951
sde)
952
cpu=mipsisa32
953
vendor=sde
954
basic_os=${basic_os:-elf}
955
;;
956
simso-wrs)
957
cpu=sparclite
958
vendor=wrs
959
basic_os=vxworks
960
;;
961
tower | tower-32)
962
cpu=m68k
963
vendor=ncr
964
;;
965
vpp*|vx|vx-*)
966
cpu=f301
967
vendor=fujitsu
968
;;
969
w65)
970
cpu=w65
971
vendor=wdc
972
;;
973
w89k-*)
974
cpu=hppa1.1
975
vendor=winbond
976
basic_os=proelf
977
;;
978
none)
979
cpu=none
980
vendor=none
981
;;
982
leon|leon[3-9])
983
cpu=sparc
984
vendor=$basic_machine
985
;;
986
leon-*|leon[3-9]-*)
987
cpu=sparc
988
vendor=`echo "$basic_machine" | sed 's/-.*//'`
989
;;
990
991
*-*)
992
saved_IFS=$IFS
993
IFS="-" read cpu vendor <<EOF
994
$basic_machine
995
EOF
996
IFS=$saved_IFS
997
;;
998
# We use 'pc' rather than 'unknown'
999
# because (1) that's what they normally are, and
1000
# (2) the word "unknown" tends to confuse beginning users.
1001
i*86 | x86_64)
1002
cpu=$basic_machine
1003
vendor=pc
1004
;;
1005
# These rules are duplicated from below for sake of the special case above;
1006
# i.e. things that normalized to x86 arches should also default to "pc"
1007
pc98)
1008
cpu=i386
1009
vendor=pc
1010
;;
1011
x64 | amd64)
1012
cpu=x86_64
1013
vendor=pc
1014
;;
1015
# Recognize the basic CPU types without company name.
1016
*)
1017
cpu=$basic_machine
1018
vendor=unknown
1019
;;
1020
esac
1021
1022
unset -v basic_machine
1023
1024
# Decode basic machines in the full and proper CPU-Company form.
1025
case $cpu-$vendor in
1026
# Here we handle the default manufacturer of certain CPU types in canonical form.
1027
# It is in some cases the only manufacturer, in others, it is the most popular.
1028
c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
1029
vendor=convex
1030
basic_os=${basic_os:-bsd}
1031
;;
1032
craynv-unknown)
1033
vendor=cray
1034
basic_os=${basic_os:-unicosmp}
1035
;;
1036
c90-unknown | c90-cray)
1037
vendor=cray
1038
basic_os=${basic_os:-unicos}
1039
;;
1040
fx80-unknown)
1041
vendor=alliant
1042
;;
1043
romp-unknown)
1044
vendor=ibm
1045
;;
1046
mmix-unknown)
1047
vendor=knuth
1048
;;
1049
microblaze-unknown | microblazeel-unknown)
1050
vendor=xilinx
1051
;;
1052
rs6000-unknown)
1053
vendor=ibm
1054
;;
1055
vax-unknown)
1056
vendor=dec
1057
;;
1058
pdp11-unknown)
1059
vendor=dec
1060
;;
1061
we32k-unknown)
1062
vendor=att
1063
;;
1064
cydra-unknown)
1065
vendor=cydrome
1066
;;
1067
i370-ibm*)
1068
vendor=ibm
1069
;;
1070
orion-unknown)
1071
vendor=highlevel
1072
;;
1073
xps-unknown | xps100-unknown)
1074
cpu=xps100
1075
vendor=honeywell
1076
;;
1077
1078
# Here we normalize CPU types with a missing or matching vendor
1079
armh-unknown | armh-alt)
1080
cpu=armv7l
1081
vendor=alt
1082
basic_os=${basic_os:-linux-gnueabihf}
1083
;;
1084
1085
# Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
1086
m68k-isi)
1087
basic_os=${basic_os:-sysv}
1088
;;
1089
m68k-sony)
1090
basic_os=${basic_os:-newsos}
1091
;;
1092
m68k-tektronix)
1093
basic_os=${basic_os:-bsd}
1094
;;
1095
m88k-harris)
1096
basic_os=${basic_os:-sysv3}
1097
;;
1098
i386-bull | m68k-bull)
1099
basic_os=${basic_os:-sysv3}
1100
;;
1101
rs6000-bull)
1102
basic_os=${basic_os:-bosx}
1103
;;
1104
mips-sni)
1105
basic_os=${basic_os:-sysv4}
1106
;;
1107
1108
# Here we normalize CPU types irrespective of the vendor
1109
amd64-*)
1110
cpu=x86_64
1111
;;
1112
blackfin-*)
1113
cpu=bfin
1114
basic_os=${basic_os:-linux}
1115
;;
1116
c54x-*)
1117
cpu=tic54x
1118
;;
1119
c55x-*)
1120
cpu=tic55x
1121
;;
1122
c6x-*)
1123
cpu=tic6x
1124
;;
1125
e500v[12]-*)
1126
cpu=powerpc
1127
basic_os=${basic_os}"spe"
1128
;;
1129
mips3*-*)
1130
cpu=mips64
1131
;;
1132
ms1-*)
1133
cpu=mt
1134
;;
1135
m68knommu-*)
1136
cpu=m68k
1137
basic_os=${basic_os:-linux}
1138
;;
1139
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
1140
cpu=s12z
1141
;;
1142
openrisc-*)
1143
cpu=or32
1144
;;
1145
parisc-*)
1146
cpu=hppa
1147
basic_os=${basic_os:-linux}
1148
;;
1149
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
1150
cpu=i586
1151
;;
1152
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
1153
cpu=i686
1154
;;
1155
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
1156
cpu=i686
1157
;;
1158
pentium4-*)
1159
cpu=i786
1160
;;
1161
ppc-* | ppcbe-*)
1162
cpu=powerpc
1163
;;
1164
ppcle-* | powerpclittle-*)
1165
cpu=powerpcle
1166
;;
1167
ppc64-*)
1168
cpu=powerpc64
1169
;;
1170
ppc64le-* | powerpc64little-*)
1171
cpu=powerpc64le
1172
;;
1173
sb1-*)
1174
cpu=mipsisa64sb1
1175
;;
1176
sb1el-*)
1177
cpu=mipsisa64sb1el
1178
;;
1179
sh5e[lb]-*)
1180
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
1181
;;
1182
spur-*)
1183
cpu=spur
1184
;;
1185
strongarm-* | thumb-*)
1186
cpu=arm
1187
;;
1188
tx39-*)
1189
cpu=mipstx39
1190
;;
1191
tx39el-*)
1192
cpu=mipstx39el
1193
;;
1194
xscale-* | xscalee[bl]-*)
1195
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
1196
;;
1197
arm64-* | aarch64le-*)
1198
cpu=aarch64
1199
;;
1200
1201
# Recognize the canonical CPU Types that limit and/or modify the
1202
# company names they are paired with.
1203
cr16-*)
1204
basic_os=${basic_os:-elf}
1205
;;
1206
crisv32-* | etraxfs*-*)
1207
cpu=crisv32
1208
vendor=axis
1209
;;
1210
cris-* | etrax*-*)
1211
cpu=cris
1212
vendor=axis
1213
;;
1214
crx-*)
1215
basic_os=${basic_os:-elf}
1216
;;
1217
neo-tandem)
1218
cpu=neo
1219
vendor=tandem
1220
;;
1221
nse-tandem)
1222
cpu=nse
1223
vendor=tandem
1224
;;
1225
nsr-tandem)
1226
cpu=nsr
1227
vendor=tandem
1228
;;
1229
nsv-tandem)
1230
cpu=nsv
1231
vendor=tandem
1232
;;
1233
nsx-tandem)
1234
cpu=nsx
1235
vendor=tandem
1236
;;
1237
mipsallegrexel-sony)
1238
cpu=mipsallegrexel
1239
vendor=sony
1240
;;
1241
tile*-*)
1242
basic_os=${basic_os:-linux-gnu}
1243
;;
1244
1245
*)
1246
# Recognize the canonical CPU types that are allowed with any
1247
# company name.
1248
case $cpu in
1249
1750a \
1250
| 580 \
1251
| [cjt]90 \
1252
| a29k \
1253
| aarch64 \
1254
| aarch64_be \
1255
| aarch64c \
1256
| abacus \
1257
| alpha \
1258
| alpha64 \
1259
| alpha64ev56 \
1260
| alpha64ev6[78] \
1261
| alpha64ev[4-8] \
1262
| alpha64pca5[67] \
1263
| alphaev56 \
1264
| alphaev6[78] \
1265
| alphaev[4-8] \
1266
| alphapca5[67] \
1267
| am33_2.0 \
1268
| amdgcn \
1269
| arc \
1270
| arc32 \
1271
| arc64 \
1272
| arceb \
1273
| arm \
1274
| arm64e \
1275
| arm64ec \
1276
| arm[lb]e \
1277
| arme[lb] \
1278
| armv* \
1279
| asmjs \
1280
| avr \
1281
| avr32 \
1282
| ba \
1283
| be32 \
1284
| be64 \
1285
| bfin \
1286
| bpf \
1287
| bs2000 \
1288
| c30 \
1289
| c4x \
1290
| c8051 \
1291
| c[123]* \
1292
| clipper \
1293
| craynv \
1294
| csky \
1295
| cydra \
1296
| d10v \
1297
| d30v \
1298
| dlx \
1299
| dsp16xx \
1300
| e2k \
1301
| elxsi \
1302
| epiphany \
1303
| f30[01] \
1304
| f700 \
1305
| fido \
1306
| fr30 \
1307
| frv \
1308
| ft32 \
1309
| fx80 \
1310
| h8300 \
1311
| h8500 \
1312
| hexagon \
1313
| hppa \
1314
| hppa1.[01] \
1315
| hppa2.0 \
1316
| hppa2.0[nw] \
1317
| hppa64 \
1318
| i*86 \
1319
| i370 \
1320
| i860 \
1321
| i960 \
1322
| ia16 \
1323
| ia64 \
1324
| ip2k \
1325
| iq2000 \
1326
| javascript \
1327
| k1om \
1328
| kvx \
1329
| le32 \
1330
| le64 \
1331
| lm32 \
1332
| loongarch32 \
1333
| loongarch64 \
1334
| m32c \
1335
| m32r \
1336
| m32rle \
1337
| m5200 \
1338
| m68000 \
1339
| m680[012346]0 \
1340
| m6811 \
1341
| m6812 \
1342
| m68360 \
1343
| m683?2 \
1344
| m68hc11 \
1345
| m68hc12 \
1346
| m68hcs12x \
1347
| m68k \
1348
| m88110 \
1349
| m88k \
1350
| maxq \
1351
| mb \
1352
| mcore \
1353
| mep \
1354
| metag \
1355
| microblaze \
1356
| microblazeel \
1357
| mips* \
1358
| mmix \
1359
| mn10200 \
1360
| mn10300 \
1361
| moxie \
1362
| msp430 \
1363
| mt \
1364
| nanomips* \
1365
| nds32 \
1366
| nds32be \
1367
| nds32le \
1368
| nfp \
1369
| nios \
1370
| nios2 \
1371
| nios2eb \
1372
| nios2el \
1373
| none \
1374
| np1 \
1375
| ns16k \
1376
| ns32k \
1377
| nvptx \
1378
| open8 \
1379
| or1k* \
1380
| or32 \
1381
| orion \
1382
| pdp10 \
1383
| pdp11 \
1384
| picochip \
1385
| pj \
1386
| pjl \
1387
| pn \
1388
| power \
1389
| powerpc \
1390
| powerpc64 \
1391
| powerpc64le \
1392
| powerpcle \
1393
| powerpcspe \
1394
| pru \
1395
| pyramid \
1396
| riscv \
1397
| riscv32 \
1398
| riscv32be \
1399
| riscv64 \
1400
| riscv64be \
1401
| rl78 \
1402
| romp \
1403
| rs6000 \
1404
| rx \
1405
| s390 \
1406
| s390x \
1407
| score \
1408
| sh \
1409
| sh64 \
1410
| sh64le \
1411
| sh[12345][lb]e \
1412
| sh[1234] \
1413
| sh[1234]e[lb] \
1414
| sh[23]e \
1415
| sh[23]ele \
1416
| sh[24]a \
1417
| sh[24]ae[lb] \
1418
| sh[lb]e \
1419
| she[lb] \
1420
| shl \
1421
| sparc \
1422
| sparc64 \
1423
| sparc64b \
1424
| sparc64v \
1425
| sparc86x \
1426
| sparclet \
1427
| sparclite \
1428
| sparcv8 \
1429
| sparcv9 \
1430
| sparcv9b \
1431
| sparcv9v \
1432
| spu \
1433
| sv1 \
1434
| sx* \
1435
| tahoe \
1436
| thumbv7* \
1437
| tic30 \
1438
| tic4x \
1439
| tic54x \
1440
| tic55x \
1441
| tic6x \
1442
| tic80 \
1443
| tron \
1444
| ubicom32 \
1445
| v70 \
1446
| v810 \
1447
| v850 \
1448
| v850e \
1449
| v850e1 \
1450
| v850e2 \
1451
| v850e2v3 \
1452
| v850es \
1453
| vax \
1454
| vc4 \
1455
| visium \
1456
| w65 \
1457
| wasm32 \
1458
| wasm64 \
1459
| we32k \
1460
| x86 \
1461
| x86_64 \
1462
| xc16x \
1463
| xgate \
1464
| xps100 \
1465
| xstormy16 \
1466
| xtensa* \
1467
| ymp \
1468
| z80 \
1469
| z8k)
1470
;;
1471
1472
*)
1473
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
1474
exit 1
1475
;;
1476
esac
1477
;;
1478
esac
1479
1480
# Here we canonicalize certain aliases for manufacturers.
1481
case $vendor in
1482
digital*)
1483
vendor=dec
1484
;;
1485
commodore*)
1486
vendor=cbm
1487
;;
1488
*)
1489
;;
1490
esac
1491
1492
# Decode manufacturer-specific aliases for certain operating systems.
1493
1494
if test x"$basic_os" != x
1495
then
1496
1497
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
1498
# set os.
1499
obj=
1500
case $basic_os in
1501
gnu/linux*)
1502
kernel=linux
1503
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
1504
;;
1505
os2-emx)
1506
kernel=os2
1507
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
1508
;;
1509
nto-qnx*)
1510
kernel=nto
1511
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
1512
;;
1513
*-*)
1514
saved_IFS=$IFS
1515
IFS="-" read kernel os <<EOF
1516
$basic_os
1517
EOF
1518
IFS=$saved_IFS
1519
;;
1520
# Default OS when just kernel was specified
1521
nto*)
1522
kernel=nto
1523
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
1524
;;
1525
linux*)
1526
kernel=linux
1527
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
1528
;;
1529
managarm*)
1530
kernel=managarm
1531
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
1532
;;
1533
*)
1534
kernel=
1535
os=$basic_os
1536
;;
1537
esac
1538
1539
# Now, normalize the OS (knowing we just have one component, it's not a kernel,
1540
# etc.)
1541
case $os in
1542
# First match some system type aliases that might get confused
1543
# with valid system types.
1544
# solaris* is a basic system type, with this one exception.
1545
auroraux)
1546
os=auroraux
1547
;;
1548
bluegene*)
1549
os=cnk
1550
;;
1551
solaris1 | solaris1.*)
1552
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
1553
;;
1554
solaris)
1555
os=solaris2
1556
;;
1557
unixware*)
1558
os=sysv4.2uw
1559
;;
1560
# The marketing names for NeXT's operating systems were
1561
# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4. 'openstep' is
1562
# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
1563
# mapped to 'nextstep' and 'nextstep2', consistent with the
1564
# treatment of SunOS/Solaris.
1565
ns | ns1 | nextstep | nextstep1 | openstep1)
1566
os=nextstep
1567
;;
1568
ns2 | nextstep2 | openstep2)
1569
os=nextstep2
1570
;;
1571
ns3 | nextstep3 | openstep | openstep3)
1572
os=openstep3
1573
;;
1574
ns4 | nextstep4 | openstep4)
1575
os=openstep4
1576
;;
1577
# es1800 is here to avoid being matched by es* (a different OS)
1578
es1800*)
1579
os=ose
1580
;;
1581
# Some version numbers need modification
1582
chorusos*)
1583
os=chorusos
1584
;;
1585
isc)
1586
os=isc2.2
1587
;;
1588
sco6)
1589
os=sco5v6
1590
;;
1591
sco5)
1592
os=sco3.2v5
1593
;;
1594
sco4)
1595
os=sco3.2v4
1596
;;
1597
sco3.2.[4-9]*)
1598
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
1599
;;
1600
sco*v* | scout)
1601
# Don't match below
1602
;;
1603
sco*)
1604
os=sco3.2v2
1605
;;
1606
psos*)
1607
os=psos
1608
;;
1609
qnx*)
1610
os=qnx
1611
;;
1612
hiux*)
1613
os=hiuxwe2
1614
;;
1615
lynx*178)
1616
os=lynxos178
1617
;;
1618
lynx*5)
1619
os=lynxos5
1620
;;
1621
lynxos*)
1622
# don't get caught up in next wildcard
1623
;;
1624
lynx*)
1625
os=lynxos
1626
;;
1627
mac[0-9]*)
1628
os=`echo "$os" | sed -e 's|mac|macos|'`
1629
;;
1630
opened*)
1631
os=openedition
1632
;;
1633
os400*)
1634
os=os400
1635
;;
1636
sunos5*)
1637
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
1638
;;
1639
sunos6*)
1640
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
1641
;;
1642
wince*)
1643
os=wince
1644
;;
1645
utek*)
1646
os=bsd
1647
vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
1648
;;
1649
dynix*)
1650
os=bsd
1651
;;
1652
acis*)
1653
os=aos
1654
;;
1655
atheos*)
1656
os=atheos
1657
;;
1658
syllable*)
1659
os=syllable
1660
;;
1661
386bsd)
1662
os=bsd
1663
;;
1664
ctix*)
1665
os=sysv
1666
vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
1667
;;
1668
uts*)
1669
os=sysv
1670
;;
1671
nova*)
1672
kernel=rtmk
1673
os=nova
1674
;;
1675
# Preserve the version number of sinix5.
1676
sinix5.*)
1677
os=`echo "$os" | sed -e 's|sinix|sysv|'`
1678
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1679
;;
1680
sinix*)
1681
os=sysv4
1682
vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
1683
;;
1684
tpf*)
1685
os=tpf
1686
;;
1687
triton*)
1688
os=sysv3
1689
;;
1690
oss*)
1691
os=sysv3
1692
;;
1693
svr4*)
1694
os=sysv4
1695
;;
1696
svr3)
1697
os=sysv3
1698
;;
1699
sysvr4)
1700
os=sysv4
1701
;;
1702
ose*)
1703
os=ose
1704
;;
1705
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
1706
os=mint
1707
;;
1708
dicos*)
1709
os=dicos
1710
;;
1711
pikeos*)
1712
# Until real need of OS specific support for
1713
# particular features comes up, bare metal
1714
# configurations are quite functional.
1715
case $cpu in
1716
arm*)
1717
os=eabi
1718
;;
1719
*)
1720
os=
1721
obj=elf
1722
;;
1723
esac
1724
;;
1725
aout* | coff* | elf* | pe*)
1726
# These are machine code file formats, not OSes
1727
obj=$os
1728
os=
1729
;;
1730
*)
1731
# No normalization, but not necessarily accepted, that comes below.
1732
;;
1733
esac
1734
1735
else
1736
1737
# Here we handle the default operating systems that come with various machines.
1738
# The value should be what the vendor currently ships out the door with their
1739
# machine or put another way, the most popular os provided with the machine.
1740
1741
# Note that if you're going to try to match "-MANUFACTURER" here (say,
1742
# "-sun"), then you have to tell the case statement up towards the top
1743
# that MANUFACTURER isn't an operating system. Otherwise, code above
1744
# will signal an error saying that MANUFACTURER isn't an operating
1745
# system, and we'll never get to this point.
1746
1747
kernel=
1748
obj=
1749
case $cpu-$vendor in
1750
score-*)
1751
os=
1752
obj=elf
1753
;;
1754
spu-*)
1755
os=
1756
obj=elf
1757
;;
1758
*-acorn)
1759
os=riscix1.2
1760
;;
1761
arm*-rebel)
1762
kernel=linux
1763
os=gnu
1764
;;
1765
arm*-semi)
1766
os=
1767
obj=aout
1768
;;
1769
c4x-* | tic4x-*)
1770
os=
1771
obj=coff
1772
;;
1773
c8051-*)
1774
os=
1775
obj=elf
1776
;;
1777
clipper-intergraph)
1778
os=clix
1779
;;
1780
hexagon-*)
1781
os=
1782
obj=elf
1783
;;
1784
tic54x-*)
1785
os=
1786
obj=coff
1787
;;
1788
tic55x-*)
1789
os=
1790
obj=coff
1791
;;
1792
tic6x-*)
1793
os=
1794
obj=coff
1795
;;
1796
# This must come before the *-dec entry.
1797
pdp10-*)
1798
os=tops20
1799
;;
1800
pdp11-*)
1801
os=none
1802
;;
1803
*-dec | vax-*)
1804
os=ultrix4.2
1805
;;
1806
m68*-apollo)
1807
os=domain
1808
;;
1809
i386-sun)
1810
os=sunos4.0.2
1811
;;
1812
m68000-sun)
1813
os=sunos3
1814
;;
1815
m68*-cisco)
1816
os=
1817
obj=aout
1818
;;
1819
mep-*)
1820
os=
1821
obj=elf
1822
;;
1823
# The -sgi and -siemens entries must be before the mips- entry
1824
# or we get the wrong os.
1825
*-sgi)
1826
os=irix
1827
;;
1828
*-siemens)
1829
os=sysv4
1830
;;
1831
mips*-cisco)
1832
os=
1833
obj=elf
1834
;;
1835
mips*-*|nanomips*-*)
1836
os=
1837
obj=elf
1838
;;
1839
or32-*)
1840
os=
1841
obj=coff
1842
;;
1843
# This must be before the sparc-* entry or we get the wrong os.
1844
*-tti)
1845
os=sysv3
1846
;;
1847
sparc-* | *-sun)
1848
os=sunos4.1.1
1849
;;
1850
pru-*)
1851
os=
1852
obj=elf
1853
;;
1854
*-be)
1855
os=beos
1856
;;
1857
*-ibm)
1858
os=aix
1859
;;
1860
*-knuth)
1861
os=mmixware
1862
;;
1863
*-wec)
1864
os=proelf
1865
;;
1866
*-winbond)
1867
os=proelf
1868
;;
1869
*-oki)
1870
os=proelf
1871
;;
1872
*-hp)
1873
os=hpux
1874
;;
1875
*-hitachi)
1876
os=hiuxwe2
1877
;;
1878
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1879
os=sysv
1880
;;
1881
*-cbm)
1882
os=amigaos
1883
;;
1884
*-dg)
1885
os=dgux
1886
;;
1887
*-dolphin)
1888
os=sysv3
1889
;;
1890
m68k-ccur)
1891
os=rtu
1892
;;
1893
m88k-omron*)
1894
os=luna
1895
;;
1896
*-next)
1897
os=nextstep
1898
;;
1899
*-sequent)
1900
os=ptx
1901
;;
1902
*-crds)
1903
os=unos
1904
;;
1905
*-ns)
1906
os=genix
1907
;;
1908
i370-*)
1909
os=mvs
1910
;;
1911
*-gould)
1912
os=sysv
1913
;;
1914
*-highlevel)
1915
os=bsd
1916
;;
1917
*-encore)
1918
os=bsd
1919
;;
1920
*-masscomp)
1921
os=rtu
1922
;;
1923
f30[01]-fujitsu | f700-fujitsu)
1924
os=uxpv
1925
;;
1926
*-rom68k)
1927
os=
1928
obj=coff
1929
;;
1930
*-*bug)
1931
os=
1932
obj=coff
1933
;;
1934
*-apple)
1935
os=macos
1936
;;
1937
*-atari*)
1938
os=mint
1939
;;
1940
*-wrs)
1941
os=vxworks
1942
;;
1943
*)
1944
os=none
1945
;;
1946
esac
1947
1948
fi
1949
1950
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
1951
1952
case $os in
1953
# Sometimes we do "kernel-libc", so those need to count as OSes.
1954
llvm* | musl* | newlib* | relibc* | uclibc*)
1955
;;
1956
# Likewise for "kernel-abi"
1957
eabi* | gnueabi*)
1958
;;
1959
# VxWorks passes extra cpu info in the 4th filed.
1960
simlinux | simwindows | spe)
1961
;;
1962
# See `case $cpu-$os` validation below
1963
ghcjs)
1964
;;
1965
# Now accept the basic system types.
1966
# Each alternative MUST end in a * to match a version number.
1967
abug \
1968
| aix* \
1969
| amdhsa* \
1970
| amigados* \
1971
| amigaos* \
1972
| android* \
1973
| aof* \
1974
| aos* \
1975
| aros* \
1976
| atheos* \
1977
| auroraux* \
1978
| aux* \
1979
| beos* \
1980
| bitrig* \
1981
| bme* \
1982
| bosx* \
1983
| bsd* \
1984
| cegcc* \
1985
| chorusos* \
1986
| chorusrdb* \
1987
| clix* \
1988
| cloudabi* \
1989
| cnk* \
1990
| conix* \
1991
| cos* \
1992
| cxux* \
1993
| cygwin* \
1994
| darwin* \
1995
| dgux* \
1996
| dicos* \
1997
| dnix* \
1998
| domain* \
1999
| dragonfly* \
2000
| drops* \
2001
| ebmon* \
2002
| ecoff* \
2003
| ekkobsd* \
2004
| emscripten* \
2005
| emx* \
2006
| es* \
2007
| fiwix* \
2008
| freebsd* \
2009
| fuchsia* \
2010
| genix* \
2011
| genode* \
2012
| glidix* \
2013
| gnu* \
2014
| go32* \
2015
| haiku* \
2016
| hcos* \
2017
| hiux* \
2018
| hms* \
2019
| hpux* \
2020
| ieee* \
2021
| interix* \
2022
| ios* \
2023
| iris* \
2024
| irix* \
2025
| ironclad* \
2026
| isc* \
2027
| its* \
2028
| l4re* \
2029
| libertybsd* \
2030
| lites* \
2031
| lnews* \
2032
| luna* \
2033
| lynxos* \
2034
| mach* \
2035
| macos* \
2036
| magic* \
2037
| mbr* \
2038
| midipix* \
2039
| midnightbsd* \
2040
| mingw32* \
2041
| mingw64* \
2042
| minix* \
2043
| mint* \
2044
| mirbsd* \
2045
| mks* \
2046
| mlibc* \
2047
| mmixware* \
2048
| mon960* \
2049
| morphos* \
2050
| moss* \
2051
| moxiebox* \
2052
| mpeix* \
2053
| mpw* \
2054
| msdos* \
2055
| msys* \
2056
| mvs* \
2057
| nacl* \
2058
| netbsd* \
2059
| netware* \
2060
| newsos* \
2061
| nextstep* \
2062
| nindy* \
2063
| nonstopux* \
2064
| nova* \
2065
| nsk* \
2066
| nucleus* \
2067
| nx6 \
2068
| nx7 \
2069
| oabi* \
2070
| ohos* \
2071
| onefs* \
2072
| openbsd* \
2073
| openedition* \
2074
| openstep* \
2075
| os108* \
2076
| os2* \
2077
| os400* \
2078
| os68k* \
2079
| os9* \
2080
| ose* \
2081
| osf* \
2082
| oskit* \
2083
| osx* \
2084
| palmos* \
2085
| phoenix* \
2086
| plan9* \
2087
| powermax* \
2088
| powerunix* \
2089
| proelf* \
2090
| psos* \
2091
| psp* \
2092
| ptx* \
2093
| pw32* \
2094
| qnx* \
2095
| rdos* \
2096
| redox* \
2097
| rhapsody* \
2098
| riscix* \
2099
| riscos* \
2100
| rtems* \
2101
| rtmk* \
2102
| rtu* \
2103
| scout* \
2104
| secbsd* \
2105
| sei* \
2106
| serenity* \
2107
| sim* \
2108
| skyos* \
2109
| solaris* \
2110
| solidbsd* \
2111
| sortix* \
2112
| storm-chaos* \
2113
| sunos \
2114
| sunos[34]* \
2115
| superux* \
2116
| syllable* \
2117
| sym* \
2118
| sysv* \
2119
| tenex* \
2120
| tirtos* \
2121
| toppers* \
2122
| tops10* \
2123
| tops20* \
2124
| tpf* \
2125
| tvos* \
2126
| twizzler* \
2127
| uclinux* \
2128
| udi* \
2129
| udk* \
2130
| ultrix* \
2131
| unicos* \
2132
| uniplus* \
2133
| unleashed* \
2134
| unos* \
2135
| uwin* \
2136
| uxpv* \
2137
| v88r* \
2138
|*vms* \
2139
| vos* \
2140
| vsta* \
2141
| vxsim* \
2142
| vxworks* \
2143
| wasi* \
2144
| watchos* \
2145
| wince* \
2146
| windiss* \
2147
| windows* \
2148
| winnt* \
2149
| xenix* \
2150
| xray* \
2151
| zephyr* \
2152
| zvmoe* )
2153
;;
2154
# This one is extra strict with allowed versions
2155
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
2156
# Don't forget version if it is 3.2v4 or newer.
2157
;;
2158
# This refers to builds using the UEFI calling convention
2159
# (which depends on the architecture) and PE file format.
2160
# Note that this is both a different calling convention and
2161
# different file format than that of GNU-EFI
2162
# (x86_64-w64-mingw32).
2163
uefi)
2164
;;
2165
none)
2166
;;
2167
kernel* | msvc* )
2168
# Restricted further below
2169
;;
2170
'')
2171
if test x"$obj" = x
2172
then
2173
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
2174
fi
2175
;;
2176
*)
2177
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
2178
exit 1
2179
;;
2180
esac
2181
2182
case $obj in
2183
aout* | coff* | elf* | pe*)
2184
;;
2185
'')
2186
# empty is fine
2187
;;
2188
*)
2189
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
2190
exit 1
2191
;;
2192
esac
2193
2194
# Here we handle the constraint that a (synthetic) cpu and os are
2195
# valid only in combination with each other and nowhere else.
2196
case $cpu-$os in
2197
# The "javascript-unknown-ghcjs" triple is used by GHC; we
2198
# accept it here in order to tolerate that, but reject any
2199
# variations.
2200
javascript-ghcjs)
2201
;;
2202
javascript-* | *-ghcjs)
2203
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
2204
exit 1
2205
;;
2206
esac
2207
2208
# As a final step for OS-related things, validate the OS-kernel combination
2209
# (given a valid OS), if there is a kernel.
2210
case $kernel-$os-$obj in
2211
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
2212
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
2213
| linux-relibc*- | linux-uclibc*- | linux-ohos*- )
2214
;;
2215
uclinux-uclibc*- | uclinux-gnu*- )
2216
;;
2217
managarm-mlibc*- | managarm-kernel*- )
2218
;;
2219
windows*-msvc*-)
2220
;;
2221
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
2222
| -uclibc*- )
2223
# These are just libc implementations, not actual OSes, and thus
2224
# require a kernel.
2225
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
2226
exit 1
2227
;;
2228
-kernel*- )
2229
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
2230
exit 1
2231
;;
2232
*-kernel*- )
2233
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
2234
exit 1
2235
;;
2236
*-msvc*- )
2237
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
2238
exit 1
2239
;;
2240
kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
2241
;;
2242
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
2243
;;
2244
nto-qnx*-)
2245
;;
2246
os2-emx-)
2247
;;
2248
rtmk-nova-)
2249
;;
2250
*-eabi*- | *-gnueabi*-)
2251
;;
2252
none--*)
2253
# None (no kernel, i.e. freestanding / bare metal),
2254
# can be paired with an machine code file format
2255
;;
2256
-*-)
2257
# Blank kernel with real OS is always fine.
2258
;;
2259
--*)
2260
# Blank kernel and OS with real machine code file format is always fine.
2261
;;
2262
*-*-*)
2263
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
2264
exit 1
2265
;;
2266
esac
2267
2268
# Here we handle the case where we know the os, and the CPU type, but not the
2269
# manufacturer. We pick the logical manufacturer.
2270
case $vendor in
2271
unknown)
2272
case $cpu-$os in
2273
*-riscix*)
2274
vendor=acorn
2275
;;
2276
*-sunos* | *-solaris*)
2277
vendor=sun
2278
;;
2279
*-cnk* | *-aix*)
2280
vendor=ibm
2281
;;
2282
*-beos*)
2283
vendor=be
2284
;;
2285
*-hpux*)
2286
vendor=hp
2287
;;
2288
*-mpeix*)
2289
vendor=hp
2290
;;
2291
*-hiux*)
2292
vendor=hitachi
2293
;;
2294
*-unos*)
2295
vendor=crds
2296
;;
2297
*-dgux*)
2298
vendor=dg
2299
;;
2300
*-luna*)
2301
vendor=omron
2302
;;
2303
*-genix*)
2304
vendor=ns
2305
;;
2306
*-clix*)
2307
vendor=intergraph
2308
;;
2309
*-mvs* | *-opened*)
2310
vendor=ibm
2311
;;
2312
*-os400*)
2313
vendor=ibm
2314
;;
2315
s390-* | s390x-*)
2316
vendor=ibm
2317
;;
2318
*-ptx*)
2319
vendor=sequent
2320
;;
2321
*-tpf*)
2322
vendor=ibm
2323
;;
2324
*-vxsim* | *-vxworks* | *-windiss*)
2325
vendor=wrs
2326
;;
2327
*-aux*)
2328
vendor=apple
2329
;;
2330
*-hms*)
2331
vendor=hitachi
2332
;;
2333
*-mpw* | *-macos*)
2334
vendor=apple
2335
;;
2336
*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
2337
vendor=atari
2338
;;
2339
*-vos*)
2340
vendor=stratus
2341
;;
2342
esac
2343
;;
2344
esac
2345
2346
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
2347
exit
2348
2349
# Local variables:
2350
# eval: (add-hook 'before-save-hook 'time-stamp)
2351
# time-stamp-start: "timestamp='"
2352
# time-stamp-format: "%:y-%02m-%02d"
2353
# time-stamp-end: "'"
2354
# End:
2355

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button