Commit | Line | Data |
---|---|---|
959f3c4c JH |
1 | ?RCS: $Id: models.U,v 3.0.1.2 1997/02/28 16:13:17 ram Exp $ |
2 | ?RCS: | |
3 | ?RCS: Copyright (c) 1991-1993, Raphael Manfredi | |
4 | ?RCS: | |
5 | ?RCS: You may redistribute only under the terms of the Artistic Licence, | |
6 | ?RCS: as specified in the README file that comes with the distribution. | |
7 | ?RCS: You may reuse parts of this distribution only within the terms of | |
8 | ?RCS: that same Artistic Licence; a copy of which may be found at the root | |
9 | ?RCS: of the source tree for dist 3.0. | |
10 | ?RCS: | |
11 | ?RCS: $Log: models.U,v $ | |
12 | ?RCS: Revision 3.0.1.2 1997/02/28 16:13:17 ram | |
13 | ?RCS: patch61: added ?F: metalint hint | |
14 | ?RCS: | |
15 | ?RCS: Revision 3.0.1.1 1993/08/25 14:02:39 ram | |
16 | ?RCS: patch6: added default for large | |
17 | ?RCS: | |
18 | ?RCS: Revision 3.0 1993/08/18 12:09:17 ram | |
19 | ?RCS: Baseline for dist 3.0 netwide release. | |
20 | ?RCS: | |
21 | ?MAKE:models split small medium large huge: test cat Myread sysman Oldconfig \ | |
22 | Loc contains rm | |
23 | ?MAKE: -pick add $@ %< | |
24 | ?S:models: | |
25 | ?S: This variable contains the list of memory models supported by this | |
26 | ?S: system. Possible component values are none, split, unsplit, small, | |
27 | ?S: medium, large, and huge. The component values are space separated. | |
28 | ?S:. | |
29 | ?S:split: | |
30 | ?S: This variable contains a flag which will tell the C compiler and loader | |
31 | ?S: to produce a program that will run in separate I and D space, for those | |
32 | ?S: machines that support separation of instruction and data space. It is | |
33 | ?S: up to the Makefile to use this. | |
34 | ?S:. | |
35 | ?S:small: | |
36 | ?S: This variable contains a flag which will tell the C compiler and loader | |
37 | ?S: to produce a program running with a small memory model. It is up to | |
38 | ?S: the Makefile to use this. | |
39 | ?S:. | |
40 | ?S:medium: | |
41 | ?S: This variable contains a flag which will tell the C compiler and loader | |
42 | ?S: to produce a program running with a medium memory model. If the | |
43 | ?S: medium model is not supported, contains the flag to produce large | |
44 | ?S: model programs. It is up to the Makefile to use this. | |
45 | ?S:. | |
46 | ?S:large: | |
47 | ?S: This variable contains a flag which will tell the C compiler and loader | |
48 | ?S: to produce a program running with a large memory model. It is up to | |
49 | ?S: the Makefile to use this. | |
50 | ?S:. | |
51 | ?S:huge: | |
52 | ?S: This variable contains a flag which will tell the C compiler and loader | |
53 | ?S: to produce a program running with a huge memory model. If the | |
54 | ?S: huge model is not supported, contains the flag to produce large | |
55 | ?S: model programs. It is up to the Makefile to use this. | |
56 | ?S:. | |
57 | ?T:unsplit tans | |
58 | ?X: This really is a temporary file, but Metalint gets fooled :-(. --AD. | |
59 | ?X:?F:!pdp11 | |
60 | ?D:large='' | |
61 | : see what memory models we can support | |
62 | case "$models" in | |
63 | '') | |
64 | ?X: We may not use Cppsym or we get a circular dependency through cc. | |
65 | ?X: But this should work regardless of which cc we eventually use. | |
66 | $cat >pdp11.c <<'EOP' | |
67 | int main() { | |
68 | #ifdef pdp11 | |
69 | exit(0); | |
70 | #else | |
71 | exit(1); | |
72 | #endif | |
73 | } | |
74 | EOP | |
75 | ?X: Run cc in a subshell in case they don't have a 'cc' command. | |
76 | ?X: Presumably they do have gcc or something. | |
77 | ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1 | |
78 | if $test -f pdp11 && ./pdp11 2>/dev/null; then | |
79 | dflt='unsplit split' | |
80 | else | |
81 | tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` | |
82 | case "$tans" in | |
83 | X) dflt='none';; | |
84 | *) if $test -d /lib/small || $test -d /usr/lib/small; then | |
85 | dflt='small' | |
86 | else | |
87 | dflt='' | |
88 | fi | |
89 | if $test -d /lib/medium || $test -d /usr/lib/medium; then | |
90 | dflt="$dflt medium" | |
91 | fi | |
92 | if $test -d /lib/large || $test -d /usr/lib/large; then | |
93 | dflt="$dflt large" | |
94 | fi | |
95 | if $test -d /lib/huge || $test -d /usr/lib/huge; then | |
96 | dflt="$dflt huge" | |
97 | fi | |
98 | esac | |
99 | fi;; | |
100 | *) dflt="$models";; | |
101 | esac | |
102 | $cat <<EOM | |
103 | ||
104 | Some systems have different model sizes. On most systems they are called | |
105 | small, medium, large, and huge. On the PDP11 they are called unsplit and | |
106 | split. If your system doesn't support different memory models, say "none". | |
107 | If you wish to force everything to one memory model, say "none" here and | |
108 | put the appropriate flags later when it asks you for other cc and ld flags. | |
109 | Venix systems may wish to put "none" and let the compiler figure things out. | |
110 | (In the following question multiple model names should be space separated.) | |
111 | ||
112 | The default for most systems is "none". | |
113 | ||
114 | EOM | |
115 | rp="Which memory models are supported?" | |
116 | . ./myread | |
117 | models="$ans" | |
118 | ||
119 | case "$models" in | |
120 | none) | |
121 | small='' | |
122 | medium='' | |
123 | large='' | |
124 | huge='' | |
125 | unsplit='' | |
126 | split='' | |
127 | ;; | |
128 | *split) | |
129 | case "$split" in | |
130 | '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \ | |
131 | $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then | |
132 | dflt='-i' | |
133 | else | |
134 | dflt='none' | |
135 | fi;; | |
136 | *) dflt="$split";; | |
137 | esac | |
138 | rp="What flag indicates separate I and D space?" | |
139 | . ./myread | |
140 | tans="$ans" | |
141 | case "$tans" in | |
142 | none) tans='';; | |
143 | esac | |
144 | split="$tans" | |
145 | unsplit='';; | |
146 | *large*|*small*|*medium*|*huge*) | |
147 | case "$models" in | |
148 | *large*) | |
149 | case "$large" in | |
150 | '') dflt='-Ml';; | |
151 | *) dflt="$large";; | |
152 | esac | |
153 | rp="What flag indicates large model?" | |
154 | . ./myread | |
155 | tans="$ans" | |
156 | case "$tans" in | |
157 | none) tans=''; | |
158 | esac | |
159 | large="$tans";; | |
160 | *) large='';; | |
161 | esac | |
162 | case "$models" in | |
163 | *huge*) case "$huge" in | |
164 | '') dflt='-Mh';; | |
165 | *) dflt="$huge";; | |
166 | esac | |
167 | rp="What flag indicates huge model?" | |
168 | . ./myread | |
169 | tans="$ans" | |
170 | case "$tans" in | |
171 | none) tans=''; | |
172 | esac | |
173 | huge="$tans";; | |
174 | *) huge="$large";; | |
175 | esac | |
176 | case "$models" in | |
177 | *medium*) case "$medium" in | |
178 | '') dflt='-Mm';; | |
179 | *) dflt="$medium";; | |
180 | esac | |
181 | rp="What flag indicates medium model?" | |
182 | . ./myread | |
183 | tans="$ans" | |
184 | case "$tans" in | |
185 | none) tans=''; | |
186 | esac | |
187 | medium="$tans";; | |
188 | *) medium="$large";; | |
189 | esac | |
190 | case "$models" in | |
191 | *small*) case "$small" in | |
192 | '') dflt='none';; | |
193 | *) dflt="$small";; | |
194 | esac | |
195 | rp="What flag indicates small model?" | |
196 | . ./myread | |
197 | tans="$ans" | |
198 | case "$tans" in | |
199 | none) tans=''; | |
200 | esac | |
201 | small="$tans";; | |
202 | *) small='';; | |
203 | esac | |
204 | ;; | |
205 | *) | |
206 | echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4 | |
207 | ;; | |
208 | esac | |
209 | $rm -f pdp11.* pdp11 | |
210 |