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