Commit | Line | Data |
---|---|---|
8d5530c4 MW |
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]' |