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