3 ######################################################################
5 # 1-Dec-87 Michael Young (mwyoung) at Carnegie-Mellon University
6 # Added "-verbose" switch, so this script produces no output
9 # 10-Oct-87 Mike Accetta (mja) at Carnegie-Mellon University
10 # Flushed cmu_*.h and spin_locks.h
13 # 6-Apr-87 Avadis Tevanian (avie) at Carnegie-Mellon University
14 # Use MASTER.local and MASTER.<machine>.local for generation of
15 # configuration files in addition to MASTER and MASTER.<machine>.
17 # 25-Mar-87 Mike Accetta (mja) at Carnegie-Mellon University
18 # Removed use of obsolete wb_*.h files when building the feature
19 # list; modified to save the previous configuration file and
20 # display the differences between it and the new file.
23 # 25-Mar-87 Avadis Tevanian (avie) at Carnegie-Mellon University
24 # If there is no /etc/machine just print out a message telling
25 # user to use the -cpu option. I thought this script was supposed
26 # to work even without a /etc/machine, but it doesn't... and this
27 # is the easiest way out.
29 # 13-Mar-87 Mike Accetta (mja) at Carnegie-Mellon University
30 # Added "romp_fpa.h" file to extra features for the RT.
33 # 11-Mar-87 Mike Accetta (mja) at Carnegie-Mellon University
34 # Updated to maintain the appropriate configuration features file
35 # in the "machine" directory whenever the corresponding
36 # configuration is generated. This replaces the old mechanism of
37 # storing this directly in the <sys/features.h> file since it was
38 # machine dependent and also precluded building programs for more
39 # than one configuration from the same set of sources.
42 # 21-Feb-87 Mike Accetta (mja) at Carnegie-Mellon University
43 # Fixed to require wired-in cpu type names for only those
44 # machines where the kernel name differs from that provided by
45 # /etc/machine (i.e. IBMRT => ca and SUN => sun3); updated to
46 # permit configuration descriptions in both machine indepedent
47 # and dependent master configuration files so that attributes can
48 # be grouped accordingly.
51 # 17-Jan-87 Mike Accetta (mja) at Carnegie-Mellon University
52 # Updated to work from any directory at the same level as
53 # "conf"; generate configuration from both MASTER and
54 # MASTER.<machine-type> files; added -cpu switch.
57 # 18-Aug-86 Mike Accetta (mja) at Carnegie-Mellon University
58 # Added -make switch and changed meaning of -config; upgraded to
59 # allow multiple attributes per configuration and to define
60 # configurations in terms of these attributes within MASTER.
62 # 14-Apr-83 Mike Accetta (mja) at Carnegie-Mellon University
63 # Added -config switch to only run /etc/config without
64 # "make depend" and "make".
66 ######################################################################
72 set CONFIG_DIR
=$OBJROOT/SETUP
/config
82 if ("$argv[1]" =~
-*) then
94 echo "${prog}: missing argument to ${argv[1]}"
97 set MACHINE
="$argv[2]"
102 echo "${prog}: missing argument to ${argv[1]}"
105 set SOC_CONFIG
="$argv[2]"
110 echo "${prog}: missing argument to ${argv[1]}"
113 set OBJDIR
="$argv[2]"
124 echo "${prog}: ${argv[1]}: unknown switch"
134 if ($#argv == 0) set argv
=(GENERIC
)
136 if (! $?MACHINE
) then
137 if (-d /NextApps
) then
138 set MACHINE
=`hostinfo | awk '/MC680x0/ { printf("m68k") } /MC880x0/ { printf("m88k") }'`
142 if (! $?MACHINE
) then
143 if (-f /etc
/machine
) then
144 set MACHINE
="`/etc/machine`"
146 echo "${prog}: no /etc/machine, specify machine type with -cpu"
147 echo "${prog}: e.g. ${prog} -cpu VAX CONFIGURATION"
158 set FEATURES_EXTRA
="romp_dualcall.h romp_fpa.h"
165 set cpu
=`echo $MACHINE | tr A-Z a-z`
166 set ID
=`echo $MACHINE | tr a-z A-Z`
169 set FEATURES
=..
/h
/features.h
170 set FEATURES_H
=(cs_
*.h mach_
*.h net_
*.h\
171 cputypes.h cpus.h vice.h\
173 set MASTER_DIR
=..
/conf
174 set MASTER
= ${MASTER_DIR}/MASTER
175 set MASTER_CPU
=${MASTER}.
${cpu}
176 set MASTER_CPU_PER_SOC
=${MASTER}.
${cpu}.
${SOC_CONFIG}
177 if (-f $MASTER_CPU_PER_SOC) set MASTER_CPU
= ${MASTER_CPU_PER_SOC}
179 set MASTER_LOCAL
= ${MASTER}.
local
180 set MASTER_CPU_LOCAL
= ${MASTER_CPU}.
local
181 set MASTER_CPU_PER_SOC_LOCAL
= ${MASTER_CPU_PER_SOC}.
local
182 if (! -f $MASTER_LOCAL) set MASTER_LOCAL
= ""
183 if (! -f $MASTER_CPU_LOCAL) set MASTER_CPU_LOCAL
= ""
184 if (-f $MASTER_CPU_PER_SOC_LOCAL) set MASTER_CPU_LOCAL
= ${MASTER_CPU_PER_SOC_LOCAL}
186 if (! -d $OBJDIR) then
187 if ($?beverbose
) then
188 echo "[ creating $OBJDIR ]"
194 set SYSID
=${SYS}_
${ID}
195 set SYSCONF
=$OBJDIR/config.
$SYSID
197 if ($?beverbose
) then
198 echo "[ generating $SYSID from $MASTER_DIR/MASTER{,.$cpu}{,.local} ]"
202 cat $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL - \
203 $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL \
213 -e 's;^\([^#]*\).*#[ ]*<\(.*\)>[ ]*$;\2#\1;' \
215 -e 's;\([^#]*\).*;#\1;' \
219 -e 's;^\!\(.*\);\1#\!;' \
226 -e "s;^# *\([^ ]*\)[ ]*=[ ]*\[\(.*\)\].*;\1#\2;p" \
229 part == 0 && $1 != "" {\
233 part == 0 && $1 == "" {\
236 c[++na]=substr($i,1,1);\
245 nx=split(m[s],x," ");\
246 for (j=nx;j>0;j--) {\
260 for (i=1;i<=n;i++) {\
261 if (f[x[i]] == "+") {\
265 if (NF > 2 && ok == 0 || NF <= 2 && ok != 0) {\
273 if (-z $SYSCONF.new
) then
274 echo "${prog}: ${$SYSID}: no such configuration in $MASTER_DIR/MASTER{,.$cpu}"
277 if (! -d $BLDDIR) then
278 if ($?beverbose
) then
279 echo "[ creating $BLDDIR ]"
284 # These paths are used by config.
286 # "builddir" is the name of the directory where kernel binaries
287 # are put. It is a single path element, never absolute, and is
288 # always relative to "objectdir". "builddir" is used by config
289 # solely to determine where to put files created by "config" (e.g.
290 # the created Makefile and *.h's.)
292 # "objectdir" is the name of the directory which will hold "builddir".
293 # It is a path; if relative, it is relative to the current directory
294 # where config is run. It's sole use is to be prepended to "builddir"
295 # to indicate where config-created files are to be placed (see above).
297 # "sourcedir" is the location of the sources used to build the kernel.
298 # It is a path; if relative, it is relative to the directory specified
299 # by the concatenation of "objectdir" and "builddir" (i.e. where the
300 # kernel binaries are put).
302 echo 'builddir "."' >> $SYSCONF.new
303 set OBJRELDIR
=`$RELPATH $OBJROOT $OBJDIR`
304 echo 'objectdir "'$OBJROOT'/'$OBJRELDIR'"' >> $SYSCONF.new
305 set SRCDIR
=`dirname $SOURCE`
306 echo 'sourcedir "'$SRCROOT'"' >> $SYSCONF.new
307 if (-f $SYSCONF) then
308 diff $SYSCONF $SYSCONF.new
310 mv $SYSCONF $SYSCONF.old
313 mv $SYSCONF.new
$SYSCONF
315 if ($?beverbose
) then
316 echo "[ configuring $SYSID ]"
319 $CONFIG_DIR/config
-c $MASTER_DIR -p $SYSCONF
321 $CONFIG_DIR/config
-c $MASTER_DIR $SYSCONF
325 if ($?beverbose
) then
326 echo "[ making $SYSID ]"