This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Populate metaconfig branch.
[metaconfig.git] / dist-3.0at70b / mcon / U / models.U
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
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 ?F:!pdp11
59 ?D:large=''
60 : see what memory models we can support
61 case "$models" in
62 '')
63 ?X: We may not use Cppsym or we get a circular dependency through cc.
64 ?X: But this should work regardless of which cc we eventually use.
65         $cat >pdp11.c <<'EOP'
66 main() {
67 #ifdef pdp11
68         exit(0);
69 #else
70         exit(1);
71 #endif
72 }
73 EOP
74         cc -o pdp11 pdp11.c >/dev/null 2>&1
75         if ./pdp11 2>/dev/null; then
76                 dflt='unsplit split'
77         else
78                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
79                 case "$tans" in
80                 X) dflt='none';;
81                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
82                                 dflt='small'
83                         else
84                                 dflt=''
85                         fi
86                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
87                                 dflt="$dflt medium"
88                         fi
89                         if $test -d /lib/large || $test -d /usr/lib/large; then
90                                 dflt="$dflt large"
91                         fi
92                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
93                                 dflt="$dflt huge"
94                         fi
95                 esac
96         fi;;
97 *) dflt="$models";;
98 esac
99 $cat <<EOM
100  
101 Some systems have different model sizes.  On most systems they are called
102 small, medium, large, and huge.  On the PDP11 they are called unsplit and
103 split.  If your system doesn't support different memory models, say "none".
104 If you wish to force everything to one memory model, say "none" here and
105 put the appropriate flags later when it asks you for other cc and ld flags.
106 Venix systems may wish to put "none" and let the compiler figure things out.
107 (In the following question multiple model names should be space separated.)
108
109 EOM
110 rp="Which memory models are supported?"
111 . ./myread
112 models="$ans"
113
114 case "$models" in
115 none)
116         small=''
117         medium=''
118         large=''
119         huge=''
120         unsplit=''
121         split=''
122         ;;
123 *split)
124         case "$split" in
125         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
126                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
127                         dflt='-i'
128                 else
129                         dflt='none'
130                 fi;;
131         *) dflt="$split";;
132         esac
133         rp="What flag indicates separate I and D space?"
134         . ./myread
135         tans="$ans"
136         case "$tans" in
137         none) tans='';;
138         esac
139         split="$tans"
140         unsplit='';;
141 *large*|*small*|*medium*|*huge*)
142         case "$models" in
143         *large*)
144                 case "$large" in
145                 '') dflt='-Ml';;
146                 *) dflt="$large";;
147                 esac
148         rp="What flag indicates large model?"
149         . ./myread
150         tans="$ans"
151         case "$tans" in
152         none) tans='';
153         esac
154         large="$tans";;
155         *) large='';;
156         esac
157         case "$models" in
158         *huge*) case "$huge" in
159                 '') dflt='-Mh';;
160                 *) dflt="$huge";;
161                 esac
162                 rp="What flag indicates huge model?"
163                 . ./myread
164                 tans="$ans"
165                 case "$tans" in
166                 none) tans='';
167                 esac
168                 huge="$tans";;
169         *) huge="$large";;
170         esac
171         case "$models" in
172         *medium*) case "$medium" in
173                 '') dflt='-Mm';;
174                 *) dflt="$medium";;
175                 esac
176                 rp="What flag indicates medium model?"
177                 . ./myread
178                 tans="$ans"
179                 case "$tans" in
180                 none) tans='';
181                 esac
182                 medium="$tans";;
183         *) medium="$large";;
184         esac
185         case "$models" in
186         *small*) case "$small" in
187                 '') dflt='none';;
188                 *) dflt="$small";;
189                 esac
190                 rp="What flag indicates small model?"
191                 . ./myread
192                 tans="$ans"
193                 case "$tans" in
194                 none) tans='';
195                 esac
196                 small="$tans";;
197         *) small='';;
198         esac
199         ;;
200 *)
201         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
202         ;;
203 esac
204