xref: /xnu-11215.1.10/SETUP/config/doconf (revision 8d741a5de7ff4191bf97d57b9f54c2f6d4a15585)
1*8d741a5dSApple OSS Distributions#!/bin/csh -f
2*8d741a5dSApple OSS Distributionsset path = ($path .)
3*8d741a5dSApple OSS Distributions######################################################################
4*8d741a5dSApple OSS Distributions# HISTORY
5*8d741a5dSApple OSS Distributions#  1-Dec-87  Michael Young (mwyoung) at Carnegie-Mellon University
6*8d741a5dSApple OSS Distributions#	Added "-verbose" switch, so this script produces no output
7*8d741a5dSApple OSS Distributions#	in the normal case.
8*8d741a5dSApple OSS Distributions#
9*8d741a5dSApple OSS Distributions# 10-Oct-87  Mike Accetta (mja) at Carnegie-Mellon University
10*8d741a5dSApple OSS Distributions#	Flushed cmu_*.h and spin_locks.h
11*8d741a5dSApple OSS Distributions#	[ V5.1(XF18) ]
12*8d741a5dSApple OSS Distributions#
13*8d741a5dSApple OSS Distributions#  6-Apr-87  Avadis Tevanian (avie) at Carnegie-Mellon University
14*8d741a5dSApple OSS Distributions#	Use MASTER.local and MASTER.<machine>.local for generation of
15*8d741a5dSApple OSS Distributions#	configuration files in addition to MASTER and MASTER.<machine>.
16*8d741a5dSApple OSS Distributions#
17*8d741a5dSApple OSS Distributions# 25-Mar-87  Mike Accetta (mja) at Carnegie-Mellon University
18*8d741a5dSApple OSS Distributions#	Removed use of obsolete wb_*.h files when building the feature
19*8d741a5dSApple OSS Distributions#	list;  modified to save the previous configuration file and
20*8d741a5dSApple OSS Distributions#	display the differences between it and the new file.
21*8d741a5dSApple OSS Distributions#	[ V5.1(F8) ]
22*8d741a5dSApple OSS Distributions#
23*8d741a5dSApple OSS Distributions# 25-Mar-87  Avadis Tevanian (avie) at Carnegie-Mellon University
24*8d741a5dSApple OSS Distributions#	If there is no /etc/machine just print out a message telling
25*8d741a5dSApple OSS Distributions#	user to use the -cpu option.  I thought this script was supposed
26*8d741a5dSApple OSS Distributions#	to work even without a /etc/machine, but it doesn't... and this
27*8d741a5dSApple OSS Distributions#	is the easiest way out.
28*8d741a5dSApple OSS Distributions#
29*8d741a5dSApple OSS Distributions# 13-Mar-87  Mike Accetta (mja) at Carnegie-Mellon University
30*8d741a5dSApple OSS Distributions#	Added "romp_fpa.h" file to extra features for the RT.
31*8d741a5dSApple OSS Distributions#	[ V5.1(F7) ]
32*8d741a5dSApple OSS Distributions#
33*8d741a5dSApple OSS Distributions# 11-Mar-87  Mike Accetta (mja) at Carnegie-Mellon University
34*8d741a5dSApple OSS Distributions#	Updated to maintain the appropriate configuration features file
35*8d741a5dSApple OSS Distributions#	in the "machine" directory whenever the corresponding
36*8d741a5dSApple OSS Distributions#	configuration is generated.  This replaces the old mechanism of
37*8d741a5dSApple OSS Distributions#	storing this directly in the <sys/features.h> file since it was
38*8d741a5dSApple OSS Distributions#	machine dependent and also precluded building programs for more
39*8d741a5dSApple OSS Distributions#	than one configuration from the same set of sources.
40*8d741a5dSApple OSS Distributions#	[ V5.1(F6) ]
41*8d741a5dSApple OSS Distributions#
42*8d741a5dSApple OSS Distributions# 21-Feb-87  Mike Accetta (mja) at Carnegie-Mellon University
43*8d741a5dSApple OSS Distributions#	Fixed to require wired-in cpu type names for only those
44*8d741a5dSApple OSS Distributions#	machines where the kernel name differs from that provided by
45*8d741a5dSApple OSS Distributions#	/etc/machine (i.e. IBMRT => ca and SUN => sun3);  updated to
46*8d741a5dSApple OSS Distributions#	permit configuration descriptions in both machine indepedent
47*8d741a5dSApple OSS Distributions#	and dependent master configuration files so that attributes can
48*8d741a5dSApple OSS Distributions#	be grouped accordingly.
49*8d741a5dSApple OSS Distributions#	[ V5.1(F3) ]
50*8d741a5dSApple OSS Distributions#
51*8d741a5dSApple OSS Distributions# 17-Jan-87  Mike Accetta (mja) at Carnegie-Mellon University
52*8d741a5dSApple OSS Distributions#	Updated to work from any directory at the same level as
53*8d741a5dSApple OSS Distributions#	"conf"; generate configuration from both MASTER and
54*8d741a5dSApple OSS Distributions#	MASTER.<machine-type> files; added -cpu switch.
55*8d741a5dSApple OSS Distributions#	[ V5.1(F1) ]
56*8d741a5dSApple OSS Distributions#
57*8d741a5dSApple OSS Distributions# 18-Aug-86  Mike Accetta (mja) at Carnegie-Mellon University
58*8d741a5dSApple OSS Distributions#	Added -make switch and changed meaning of -config;  upgraded to
59*8d741a5dSApple OSS Distributions#	allow multiple attributes per configuration and to define
60*8d741a5dSApple OSS Distributions#	configurations in terms of these attributes within MASTER.
61*8d741a5dSApple OSS Distributions#
62*8d741a5dSApple OSS Distributions# 14-Apr-83  Mike Accetta (mja) at Carnegie-Mellon University
63*8d741a5dSApple OSS Distributions#	Added -config switch to only run /etc/config without
64*8d741a5dSApple OSS Distributions#	"make depend" and "make".
65*8d741a5dSApple OSS Distributions#
66*8d741a5dSApple OSS Distributions######################################################################
67*8d741a5dSApple OSS Distributions
68*8d741a5dSApple OSS Distributionsset prog=$0
69*8d741a5dSApple OSS Distributionsset prog=$prog:t
70*8d741a5dSApple OSS Distributionsset nonomatch
71*8d741a5dSApple OSS Distributionsset OBJDIR=../BUILD
72*8d741a5dSApple OSS Distributionsset SOURCEDIR=.
73*8d741a5dSApple OSS Distributionsset CONFIG_DIR=$OBJROOT/SETUP/config
74*8d741a5dSApple OSS Distributionsset MASTER_CONF_DIR=.
75*8d741a5dSApple OSS Distributions
76*8d741a5dSApple OSS Distributionsset DEF_SEED=""
77*8d741a5dSApple OSS Distributions
78*8d741a5dSApple OSS Distributions
79*8d741a5dSApple OSS Distributionsunset doconfig
80*8d741a5dSApple OSS Distributionsunset beverbose
81*8d741a5dSApple OSS Distributionsunset MACHINE
82*8d741a5dSApple OSS Distributionsunset profile
83*8d741a5dSApple OSS Distributionsunset SOC_CONFIG
84*8d741a5dSApple OSS Distributionsunset PLATFORM
85*8d741a5dSApple OSS Distributions
86*8d741a5dSApple OSS Distributionswhile ($#argv >= 1)
87*8d741a5dSApple OSS Distributions    if ("$argv[1]" =~ -*) then
88*8d741a5dSApple OSS Distributions        switch ("$argv[1]")
89*8d741a5dSApple OSS Distributions	case "-c":
90*8d741a5dSApple OSS Distributions	case "-config":
91*8d741a5dSApple OSS Distributions	    set doconfig
92*8d741a5dSApple OSS Distributions	    breaksw
93*8d741a5dSApple OSS Distributions	case "-cpu":
94*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
95*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
96*8d741a5dSApple OSS Distributions		exit 1
97*8d741a5dSApple OSS Distributions	    endif
98*8d741a5dSApple OSS Distributions	    set MACHINE="$argv[2]"
99*8d741a5dSApple OSS Distributions	    shift
100*8d741a5dSApple OSS Distributions	    breaksw
101*8d741a5dSApple OSS Distributions	case "-soc":
102*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
103*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
104*8d741a5dSApple OSS Distributions		exit 1
105*8d741a5dSApple OSS Distributions	    endif
106*8d741a5dSApple OSS Distributions	    set SOC_CONFIG="$argv[2]"
107*8d741a5dSApple OSS Distributions	    if (`echo $SOC_CONFIG | awk '{print substr($0,0,2)}'` == "vm") then
108*8d741a5dSApple OSS Distributions	        set DEF_AVP="-DSOC_IS_VIRTUALIZED"
109*8d741a5dSApple OSS Distributions	    else
110*8d741a5dSApple OSS Distributions	        set DEF_AVP="-USOC_IS_VIRTUALIZED"
111*8d741a5dSApple OSS Distributions	    endif
112*8d741a5dSApple OSS Distributions	    shift
113*8d741a5dSApple OSS Distributions	    breaksw
114*8d741a5dSApple OSS Distributions	case "-platform":
115*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
116*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
117*8d741a5dSApple OSS Distributions		exit 1
118*8d741a5dSApple OSS Distributions	    endif
119*8d741a5dSApple OSS Distributions	    set PLATFORM="$argv[2]"
120*8d741a5dSApple OSS Distributions	    shift
121*8d741a5dSApple OSS Distributions	    breaksw
122*8d741a5dSApple OSS Distributions	case "-d":
123*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
124*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
125*8d741a5dSApple OSS Distributions		exit 1
126*8d741a5dSApple OSS Distributions	    endif
127*8d741a5dSApple OSS Distributions	    set OBJDIR="$argv[2]"
128*8d741a5dSApple OSS Distributions	    shift
129*8d741a5dSApple OSS Distributions	    breaksw
130*8d741a5dSApple OSS Distributions	case "-m":
131*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
132*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
133*8d741a5dSApple OSS Distributions		exit 1
134*8d741a5dSApple OSS Distributions	    endif
135*8d741a5dSApple OSS Distributions	    set MASTER_CONF_DIR="$argv[2]"
136*8d741a5dSApple OSS Distributions	    shift
137*8d741a5dSApple OSS Distributions	    breaksw
138*8d741a5dSApple OSS Distributions	case "-s":
139*8d741a5dSApple OSS Distributions	    if ($#argv < 2) then
140*8d741a5dSApple OSS Distributions		echo "${prog}: missing argument to ${argv[1]}"
141*8d741a5dSApple OSS Distributions		exit 1
142*8d741a5dSApple OSS Distributions	    endif
143*8d741a5dSApple OSS Distributions	    set SOURCEDIR="$argv[2]"
144*8d741a5dSApple OSS Distributions	    shift
145*8d741a5dSApple OSS Distributions	    breaksw
146*8d741a5dSApple OSS Distributions	case "-verbose":
147*8d741a5dSApple OSS Distributions	    set beverbose
148*8d741a5dSApple OSS Distributions	    breaksw
149*8d741a5dSApple OSS Distributions	case "-p":
150*8d741a5dSApple OSS Distributions	case "-profile":
151*8d741a5dSApple OSS Distributions	    set profile
152*8d741a5dSApple OSS Distributions	    breaksw
153*8d741a5dSApple OSS Distributions	default:
154*8d741a5dSApple OSS Distributions	    echo "${prog}: ${argv[1]}: unknown switch"
155*8d741a5dSApple OSS Distributions	    exit 1
156*8d741a5dSApple OSS Distributions	    breaksw
157*8d741a5dSApple OSS Distributions	endsw
158*8d741a5dSApple OSS Distributions	shift
159*8d741a5dSApple OSS Distributions    else
160*8d741a5dSApple OSS Distributions	break
161*8d741a5dSApple OSS Distributions    endif
162*8d741a5dSApple OSS Distributionsend
163*8d741a5dSApple OSS Distributions
164*8d741a5dSApple OSS Distributionsif ($#argv == 0) set argv=(GENERIC)
165*8d741a5dSApple OSS Distributions
166*8d741a5dSApple OSS Distributionsif (! $?MACHINE) then
167*8d741a5dSApple OSS Distributions    echo "${prog}: MACHINE not set"
168*8d741a5dSApple OSS Distributions    exit 1
169*8d741a5dSApple OSS Distributionsendif
170*8d741a5dSApple OSS Distributions
171*8d741a5dSApple OSS Distributionsset cpu=`echo $MACHINE | tr A-Z a-z`
172*8d741a5dSApple OSS Distributionsset ID=`echo $MACHINE | tr a-z A-Z`
173*8d741a5dSApple OSS Distributionsset MASTER_DIR=${MASTER_CONF_DIR}
174*8d741a5dSApple OSS Distributionsset MASTER =   ${MASTER_DIR}/MASTER
175*8d741a5dSApple OSS Distributions
176*8d741a5dSApple OSS Distributionsforeach master_file (${MASTER}.${cpu}.${SOC_CONFIG}.${PLATFORM} ${MASTER}.${cpu}.${SOC_CONFIG} ${MASTER}.${cpu}.${PLATFORM} ${MASTER}.${cpu})
177*8d741a5dSApple OSS Distributions    if (-f $master_file) then
178*8d741a5dSApple OSS Distributions        set MASTER_CPU = $master_file
179*8d741a5dSApple OSS Distributions        break
180*8d741a5dSApple OSS Distributions    endif
181*8d741a5dSApple OSS Distributionsend
182*8d741a5dSApple OSS Distributions
183*8d741a5dSApple OSS Distributionsif ($?beverbose) then
184*8d741a5dSApple OSS Distributions    echo MASTER_CPU=$MASTER_CPU
185*8d741a5dSApple OSS Distributionsendif
186*8d741a5dSApple OSS Distributions
187*8d741a5dSApple OSS Distributionsforeach SYS ($argv)
188*8d741a5dSApple OSS Distributions    set SYSID=${SYS}_${ID}
189*8d741a5dSApple OSS Distributions    set SYSCONF=$OBJDIR/config.$SYSID
190*8d741a5dSApple OSS Distributions    set BLDDIR=$OBJDIR
191*8d741a5dSApple OSS Distributions    if ($?beverbose) then
192*8d741a5dSApple OSS Distributions        echo "[ generating $SYSID from $MASTER_DIR/MASTER{,.$cpu}{,.local} ]"
193*8d741a5dSApple OSS Distributions    endif
194*8d741a5dSApple OSS Distributions    echo +$SYS \
195*8d741a5dSApple OSS Distributions    | \
196*8d741a5dSApple OSS Distributions    cat $MASTER $MASTER_CPU - \
197*8d741a5dSApple OSS Distributions        $MASTER $MASTER_CPU \
198*8d741a5dSApple OSS Distributions    | \
199*8d741a5dSApple OSS Distributions    unifdef -t -DPLATFORM_${PLATFORM} -DCPU_$cpu -DSOC_CONFIG_${SOC_CONFIG} -DSYS_${SYS} $DEF_AVP $DEF_SEED - \
200*8d741a5dSApple OSS Distributions    | \
201*8d741a5dSApple OSS Distributions    sed -n \
202*8d741a5dSApple OSS Distributions	-e "/^+/{" \
203*8d741a5dSApple OSS Distributions	   -e "s;[-+];#&;gp" \
204*8d741a5dSApple OSS Distributions	      -e 't loop' \
205*8d741a5dSApple OSS Distributions	   -e ': loop' \
206*8d741a5dSApple OSS Distributions           -e 'n' \
207*8d741a5dSApple OSS Distributions	   -e '/^#/b loop' \
208*8d741a5dSApple OSS Distributions	   -e '/^$/b loop' \
209*8d741a5dSApple OSS Distributions	   -e 's;^\([^#]*\).*#[ 	]*<\(.*\)>[ 	]*$;\2#\1;' \
210*8d741a5dSApple OSS Distributions	      -e 't not' \
211*8d741a5dSApple OSS Distributions	   -e 's;\([^#]*\).*;#\1;' \
212*8d741a5dSApple OSS Distributions	      -e 't not' \
213*8d741a5dSApple OSS Distributions	   -e ': not' \
214*8d741a5dSApple OSS Distributions	   -e 's;[ 	]*$;;' \
215*8d741a5dSApple OSS Distributions	   -e 's;^\!\(.*\);\1#\!;' \
216*8d741a5dSApple OSS Distributions	   -e 'p' \
217*8d741a5dSApple OSS Distributions	      -e 't loop' \
218*8d741a5dSApple OSS Distributions           -e 'b loop' \
219*8d741a5dSApple OSS Distributions	-e '}' \
220*8d741a5dSApple OSS Distributions	-e "/^[^#]/d" \
221*8d741a5dSApple OSS Distributions	-e 's;	; ;g' \
222*8d741a5dSApple OSS Distributions	-e "s;^# *\([^ ]*\)[ ]*=[ ]*\[\(.*\)\].*;\1#\2;p" \
223*8d741a5dSApple OSS Distributions    | \
224*8d741a5dSApple OSS Distributions    awk '-F#' '\
225*8d741a5dSApple OSS Distributionspart == 0 && $1 != "" {\
226*8d741a5dSApple OSS Distributions	m[$1]=m[$1] " " $2;\
227*8d741a5dSApple OSS Distributions	next;\
228*8d741a5dSApple OSS Distributions}\
229*8d741a5dSApple OSS Distributionspart == 0 && $1 == "" {\
230*8d741a5dSApple OSS Distributions	for (i=NF;i>1;i--){\
231*8d741a5dSApple OSS Distributions		s=substr($i,2);\
232*8d741a5dSApple OSS Distributions		c[++na]=substr($i,1,1);\
233*8d741a5dSApple OSS Distributions		a[na]=s;\
234*8d741a5dSApple OSS Distributions	}\
235*8d741a5dSApple OSS Distributions	while (na > 0){\
236*8d741a5dSApple OSS Distributions		s=a[na];\
237*8d741a5dSApple OSS Distributions		d=c[na--];\
238*8d741a5dSApple OSS Distributions		if (m[s] == "") {\
239*8d741a5dSApple OSS Distributions			f[s]=d;\
240*8d741a5dSApple OSS Distributions		} else {\
241*8d741a5dSApple OSS Distributions			nx=split(m[s],x," ");\
242*8d741a5dSApple OSS Distributions			for (j=nx;j>0;j--) {\
243*8d741a5dSApple OSS Distributions				z=x[j];\
244*8d741a5dSApple OSS Distributions				a[++na]=z;\
245*8d741a5dSApple OSS Distributions				c[na]=d;\
246*8d741a5dSApple OSS Distributions			}\
247*8d741a5dSApple OSS Distributions		}\
248*8d741a5dSApple OSS Distributions	}\
249*8d741a5dSApple OSS Distributions	part=1;\
250*8d741a5dSApple OSS Distributions	next;\
251*8d741a5dSApple OSS Distributions}\
252*8d741a5dSApple OSS Distributionspart != 0 {\
253*8d741a5dSApple OSS Distributions	if ($1 != "") {\
254*8d741a5dSApple OSS Distributions		n=split($1,x,",");\
255*8d741a5dSApple OSS Distributions		ok=0;\
256*8d741a5dSApple OSS Distributions		for (i=1;i<=n;i++) {\
257*8d741a5dSApple OSS Distributions			if (f[x[i]] == "+") {\
258*8d741a5dSApple OSS Distributions				ok=1;\
259*8d741a5dSApple OSS Distributions			}\
260*8d741a5dSApple OSS Distributions		}\
261*8d741a5dSApple OSS Distributions		if (NF > 2 && ok == 0 || NF <= 2 && ok != 0) {\
262*8d741a5dSApple OSS Distributions			print $2; \
263*8d741a5dSApple OSS Distributions		}\
264*8d741a5dSApple OSS Distributions	} else { \
265*8d741a5dSApple OSS Distributions		print $2; \
266*8d741a5dSApple OSS Distributions	}\
267*8d741a5dSApple OSS Distributions}\
268*8d741a5dSApple OSS Distributions' >$SYSCONF.new
269*8d741a5dSApple OSS Distributions    if (-z $SYSCONF.new) then
270*8d741a5dSApple OSS Distributions	echo "${prog}: ${$SYSID}: no such configuration in $MASTER_DIR/MASTER{,.$cpu}"
271*8d741a5dSApple OSS Distributions	rm -f $SYSCONF.new
272*8d741a5dSApple OSS Distributions    endif
273*8d741a5dSApple OSS Distributions#
274*8d741a5dSApple OSS Distributions# These paths are used by config.
275*8d741a5dSApple OSS Distributions#
276*8d741a5dSApple OSS Distributions# "builddir" is the name of the directory where kernel binaries
277*8d741a5dSApple OSS Distributions# are put.  It is a single path element, never absolute, and is
278*8d741a5dSApple OSS Distributions# always relative to "objectdir".  "builddir" is used by config
279*8d741a5dSApple OSS Distributions# solely to determine where to put files created by "config" (e.g.
280*8d741a5dSApple OSS Distributions# the created Makefile and *.h's.)
281*8d741a5dSApple OSS Distributions#
282*8d741a5dSApple OSS Distributions# "objectdir" is the name of the directory which will hold "builddir".
283*8d741a5dSApple OSS Distributions# It is a path; if relative, it is relative to the current directory
284*8d741a5dSApple OSS Distributions# where config is run.  It's sole use is to be prepended to "builddir"
285*8d741a5dSApple OSS Distributions# to indicate where config-created files are to be placed (see above).
286*8d741a5dSApple OSS Distributions#
287*8d741a5dSApple OSS Distributions# "sourcedir" is the location of the sources used to build the kernel.
288*8d741a5dSApple OSS Distributions# It is a path; if relative, it is relative to the directory specified
289*8d741a5dSApple OSS Distributions# by the concatenation of "objectdir" and "builddir" (i.e. where the
290*8d741a5dSApple OSS Distributions# kernel binaries are put).
291*8d741a5dSApple OSS Distributions#
292*8d741a5dSApple OSS Distributions    echo 'builddir	"."'			>> $SYSCONF.new
293*8d741a5dSApple OSS Distributions    echo 'objectdir	"'$OBJDIR'"'		>> $SYSCONF.new
294*8d741a5dSApple OSS Distributions    set SRCDIR=`dirname $SOURCE`
295*8d741a5dSApple OSS Distributions    echo 'sourcedir	"'$SRCROOT'"'		>> $SYSCONF.new
296*8d741a5dSApple OSS Distributions    if (-f $SYSCONF) then
297*8d741a5dSApple OSS Distributions	diff $SYSCONF $SYSCONF.new
298*8d741a5dSApple OSS Distributions	rm -f $SYSCONF.old
299*8d741a5dSApple OSS Distributions	mv $SYSCONF $SYSCONF.old
300*8d741a5dSApple OSS Distributions    endif
301*8d741a5dSApple OSS Distributions    rm -f $SYSCONF
302*8d741a5dSApple OSS Distributions    mv $SYSCONF.new $SYSCONF
303*8d741a5dSApple OSS Distributions    if ($?doconfig) then
304*8d741a5dSApple OSS Distributions        if ($?beverbose) then
305*8d741a5dSApple OSS Distributions	    echo "[ configuring $SYSID ]"
306*8d741a5dSApple OSS Distributions        endif
307*8d741a5dSApple OSS Distributions	if ($?profile) then
308*8d741a5dSApple OSS Distributions	    $CONFIG_DIR/config -c $SOURCEDIR -p $SYSCONF
309*8d741a5dSApple OSS Distributions	else
310*8d741a5dSApple OSS Distributions	    $CONFIG_DIR/config -c $SOURCEDIR $SYSCONF
311*8d741a5dSApple OSS Distributions	endif
312*8d741a5dSApple OSS Distributions    endif
313*8d741a5dSApple OSS Distributionsend
314