|
0
|
1 |
# oper-:arch-:syst-:chip-:kern-
|
|
|
2 |
# oper = operating system type; e.g., sunos-4.1.4
|
|
|
3 |
# arch = machine language; e.g., sparc
|
|
|
4 |
# syst = which binaries can run; e.g., sun4
|
|
|
5 |
# chip = chip model; e.g., micro-2-80
|
|
|
6 |
# kern = kernel version; e.g., sun4m
|
|
|
7 |
# dependence: arch --- chip
|
|
|
8 |
# \ \
|
|
|
9 |
# oper --- syst --- kern
|
|
|
10 |
# so, for example, syst is interpreted in light of oper, but chip is not.
|
|
|
11 |
# anyway, no slashes, no extra colons, no uppercase letters.
|
|
|
12 |
# the point of the extra -'s is to ease parsing: can add hierarchies later.
|
|
|
13 |
# e.g., *:i386-*:*:pentium-*:* would handle pentium-100 as well as pentium,
|
|
|
14 |
# and i386-486 (486s do have more instructions, you know) as well as i386.
|
|
|
15 |
# the idea here is to include ALL useful available information.
|
|
|
16 |
|
|
|
17 |
exec 2>/dev/null
|
|
|
18 |
sys="`uname -s | tr '/:[A-Z]' '..[a-z]'`"
|
|
|
19 |
if [ x"$sys" != x ]
|
|
|
20 |
then
|
|
|
21 |
unamer="`uname -r | tr /: ..`"
|
|
|
22 |
unamem="`uname -m | tr /: ..`"
|
|
|
23 |
unamev="`uname -v | tr /: ..`"
|
|
|
24 |
|
|
|
25 |
case "$sys" in
|
|
|
26 |
bsd.os)
|
|
|
27 |
# in bsd 4.4, uname -v does not have useful info.
|
|
|
28 |
# in bsd 4.4, uname -m is arch, not chip.
|
|
|
29 |
oper="$sys-$unamer"
|
|
|
30 |
arch="$unamem"
|
|
|
31 |
syst=""
|
|
|
32 |
chip="`sysctl -n hw.model`"
|
|
|
33 |
kern=""
|
|
|
34 |
;;
|
|
|
35 |
freebsd)
|
|
|
36 |
# see above about bsd 4.4
|
|
|
37 |
oper="$sys-$unamer"
|
|
|
38 |
arch="$unamem"
|
|
|
39 |
syst=""
|
|
|
40 |
chip="`sysctl -n hw.model`" # hopefully
|
|
|
41 |
kern=""
|
|
|
42 |
;;
|
|
|
43 |
netbsd)
|
|
|
44 |
# see above about bsd 4.4
|
|
|
45 |
oper="$sys-$unamer"
|
|
|
46 |
arch="$unamem"
|
|
|
47 |
syst=""
|
|
|
48 |
chip="`sysctl -n hw.model`" # hopefully
|
|
|
49 |
kern=""
|
|
|
50 |
;;
|
|
|
51 |
linux)
|
|
|
52 |
# as in bsd 4.4, uname -v does not have useful info.
|
|
|
53 |
oper="$sys-$unamer"
|
|
|
54 |
syst=""
|
|
|
55 |
chip="$unamem"
|
|
|
56 |
kern=""
|
|
|
57 |
case "$chip" in
|
|
|
58 |
i386|i486|i586|i686)
|
|
|
59 |
arch="i386"
|
|
|
60 |
;;
|
|
|
61 |
alpha)
|
|
|
62 |
arch="alpha"
|
|
|
63 |
;;
|
|
|
64 |
esac
|
|
|
65 |
;;
|
|
|
66 |
aix)
|
|
|
67 |
# naturally IBM has to get uname -r and uname -v backwards. dorks.
|
|
|
68 |
oper="$sys-$unamev-$unamer"
|
|
|
69 |
arch="`arch | tr /: ..`"
|
|
|
70 |
syst=""
|
|
|
71 |
chip="$unamem"
|
|
|
72 |
kern=""
|
|
|
73 |
;;
|
|
|
74 |
sunos)
|
|
|
75 |
oper="$sys-$unamer-$unamev"
|
|
|
76 |
arch="`(uname -p || mach) | tr /: ..`"
|
|
|
77 |
syst="`arch | tr /: ..`"
|
|
|
78 |
chip="$unamem" # this is wrong; is there any way to get the real info?
|
|
|
79 |
kern="`arch -k | tr /: ..`"
|
|
|
80 |
;;
|
|
|
81 |
unix_sv)
|
|
|
82 |
oper="$sys-$unamer-$unamev"
|
|
|
83 |
arch="`uname -m`"
|
|
|
84 |
syst=""
|
|
|
85 |
chip="$unamem"
|
|
|
86 |
kern=""
|
|
|
87 |
;;
|
|
|
88 |
*)
|
|
|
89 |
oper="$sys-$unamer-$unamev"
|
|
|
90 |
arch="`arch | tr /: ..`"
|
|
|
91 |
syst=""
|
|
|
92 |
chip="$unamem"
|
|
|
93 |
kern=""
|
|
|
94 |
;;
|
|
|
95 |
esac
|
|
|
96 |
else
|
|
|
97 |
$CC -c trycpp.c
|
|
|
98 |
$LD -o trycpp trycpp.o
|
|
|
99 |
case `./trycpp` in
|
|
|
100 |
nextstep)
|
|
|
101 |
oper="nextstep-`hostinfo | sed -n 's/^[ ]*NeXT Mach \([^:]*\):.*$/\1/p'`"
|
|
|
102 |
arch="`hostinfo | sed -n 's/^Processor type: \(.*\) (.*)$/\1/p' | tr /: ..`"
|
|
|
103 |
syst=""
|
|
|
104 |
chip="`hostinfo | sed -n 's/^Processor type: .* (\(.*\))$/\1/p' | tr ' /:' '...'`"
|
|
|
105 |
kern=""
|
|
|
106 |
;;
|
|
|
107 |
*)
|
|
|
108 |
oper="unknown"
|
|
|
109 |
arch=""
|
|
|
110 |
syst=""
|
|
|
111 |
chip=""
|
|
|
112 |
kern=""
|
|
|
113 |
;;
|
|
|
114 |
esac
|
|
|
115 |
rm -f trycpp.o trycpp
|
|
|
116 |
fi
|
|
|
117 |
|
|
|
118 |
case "$chip" in
|
|
|
119 |
80486)
|
|
|
120 |
# let's try to be consistent here. (BSD/OS)
|
|
|
121 |
chip=i486
|
|
|
122 |
;;
|
|
|
123 |
i486DX)
|
|
|
124 |
# respect the hyphen hierarchy. (FreeBSD)
|
|
|
125 |
chip=i486-dx
|
|
|
126 |
;;
|
|
|
127 |
i486.DX2)
|
|
|
128 |
# respect the hyphen hierarchy. (FreeBSD)
|
|
|
129 |
chip=i486-dx2
|
|
|
130 |
;;
|
|
|
131 |
Intel.586)
|
|
|
132 |
# no, you nitwits, there is no such chip. (NeXTStep)
|
|
|
133 |
chip=pentium
|
|
|
134 |
;;
|
|
|
135 |
i586)
|
|
|
136 |
# no, you nitwits, there is no such chip. (Linux)
|
|
|
137 |
chip=pentium
|
|
|
138 |
;;
|
|
|
139 |
i686)
|
|
|
140 |
# STOP SAYING THAT! (Linux)
|
|
|
141 |
chip=ppro
|
|
|
142 |
esac
|
|
|
143 |
|
|
|
144 |
echo "$oper-:$arch-:$syst-:$chip-:$kern-" | tr ' [A-Z]' '.[a-z]'
|