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