This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
IRIX 64-bitness fixes.
[metaconfig.git] / U / modified / models.U
CommitLineData
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
62case "$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'
67int main() {
68#ifdef pdp11
69 exit(0);
70#else
71 exit(1);
72#endif
73}
74EOP
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";;
101esac
102$cat <<EOM
103
104Some systems have different model sizes. On most systems they are called
105small, medium, large, and huge. On the PDP11 they are called unsplit and
106split. If your system doesn't support different memory models, say "none".
107If you wish to force everything to one memory model, say "none" here and
108put the appropriate flags later when it asks you for other cc and ld flags.
109Venix 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
112The default for most systems is "none".
113
114EOM
115rp="Which memory models are supported?"
116. ./myread
117models="$ans"
118
119case "$models" in
120none)
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 ;;
208esac
209$rm -f pdp11.* pdp11
210