|
|
1.1 ! root 1: #!/bin/csh -f ! 2: set path = ($path .) ! 3: ###################################################################### ! 4: # HISTORY ! 5: # 1-Dec-87 Michael Young (mwyoung) at Carnegie-Mellon University ! 6: # Added "-verbose" switch, so this script produces no output ! 7: # in the normal case. ! 8: # ! 9: # 10-Oct-87 Mike Accetta (mja) at Carnegie-Mellon University ! 10: # Flushed cmu_*.h and spin_locks.h ! 11: # [ V5.1(XF18) ] ! 12: # ! 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>. ! 16: # ! 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. ! 21: # [ V5.1(F8) ] ! 22: # ! 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. ! 28: # ! 29: # 13-Mar-87 Mike Accetta (mja) at Carnegie-Mellon University ! 30: # Added "romp_fpa.h" file to extra features for the RT. ! 31: # [ V5.1(F7) ] ! 32: # ! 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. ! 40: # [ V5.1(F6) ] ! 41: # ! 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. ! 49: # [ V5.1(F3) ] ! 50: # ! 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. ! 55: # [ V5.1(F1) ] ! 56: # ! 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. ! 61: # ! 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". ! 65: # ! 66: ###################################################################### ! 67: ! 68: set prog=$0 ! 69: set prog=$prog:t ! 70: set nonomatch ! 71: set OBJDIR=../BUILD ! 72: if ("`/usr/bin/uname`" == "Rhapsody" ) then ! 73: set CONFIG_DIR=/usr/local/bin ! 74: else ! 75: set CONFIG_DIR=/usr/bin ! 76: endif ! 77: ! 78: unset domake ! 79: unset doconfig ! 80: unset beverbose ! 81: unset MACHINE ! 82: unset profile ! 83: ! 84: while ($#argv >= 1) ! 85: if ("$argv[1]" =~ -*) then ! 86: switch ("$argv[1]") ! 87: case "-c": ! 88: case "-config": ! 89: set doconfig ! 90: breaksw ! 91: case "-m": ! 92: case "-make": ! 93: set domake ! 94: breaksw ! 95: case "-cpu": ! 96: if ($#argv < 2) then ! 97: echo "${prog}: missing argument to ${argv[1]}" ! 98: exit 1 ! 99: endif ! 100: set MACHINE="$argv[2]" ! 101: shift ! 102: breaksw ! 103: case "-d": ! 104: if ($#argv < 2) then ! 105: echo "${prog}: missing argument to ${argv[1]}" ! 106: exit 1 ! 107: endif ! 108: set OBJDIR="$argv[2]" ! 109: shift ! 110: breaksw ! 111: case "-verbose": ! 112: set beverbose ! 113: breaksw ! 114: case "-p": ! 115: case "-profile": ! 116: set profile ! 117: breaksw ! 118: default: ! 119: echo "${prog}: ${argv[1]}: unknown switch" ! 120: exit 1 ! 121: breaksw ! 122: endsw ! 123: shift ! 124: else ! 125: break ! 126: endif ! 127: end ! 128: ! 129: if ($#argv == 0) set argv=(GENERIC) ! 130: ! 131: if (! $?MACHINE) then ! 132: if (-d /NextApps) then ! 133: set MACHINE=`hostinfo | awk '/MC680x0/ { printf("m68k") } /MC880x0/ { printf("m88k") }'` ! 134: endif ! 135: endif ! 136: ! 137: if (! $?MACHINE) then ! 138: if (-f /etc/machine) then ! 139: set MACHINE="`/etc/machine`" ! 140: else ! 141: echo "${prog}: no /etc/machine, specify machine type with -cpu" ! 142: echo "${prog}: e.g. ${prog} -cpu VAX CONFIGURATION" ! 143: exit 1 ! 144: endif ! 145: endif ! 146: ! 147: set FEATURES_EXTRA= ! 148: ! 149: switch ("$MACHINE") ! 150: case IBMRT: ! 151: set cpu=ca ! 152: set ID=RT ! 153: set FEATURES_EXTRA="romp_dualcall.h romp_fpa.h" ! 154: breaksw ! 155: case SUN: ! 156: set cpu=sun3 ! 157: set ID=SUN3 ! 158: breaksw ! 159: default: ! 160: set cpu=`echo $MACHINE | tr A-Z a-z` ! 161: set ID=`echo $MACHINE | tr a-z A-Z` ! 162: breaksw ! 163: endsw ! 164: set FEATURES=../h/features.h ! 165: set FEATURES_H=(cs_*.h mach_*.h net_*.h\ ! 166: cputypes.h cpus.h vice.h\ ! 167: $FEATURES_EXTRA) ! 168: set MASTER_DIR=../conf ! 169: set MASTER = ${MASTER_DIR}/MASTER ! 170: set MASTER_CPU=${MASTER}.${cpu} ! 171: ! 172: set MASTER_LOCAL = ${MASTER}.local ! 173: set MASTER_CPU_LOCAL = ${MASTER_CPU}.local ! 174: if (! -f $MASTER_LOCAL) set MASTER_LOCAL = "" ! 175: if (! -f $MASTER_CPU_LOCAL) set MASTER_CPU_LOCAL = "" ! 176: ! 177: if (! -d $OBJDIR) then ! 178: echo "[ creating $OBJDIR ]" ! 179: mkdir -p $OBJDIR ! 180: endif ! 181: ! 182: foreach SYS ($argv) ! 183: set SYSID=${SYS}_${ID} ! 184: set SYSCONF=$OBJDIR/config.$SYSID ! 185: set BLDDIR=$OBJDIR ! 186: if ($?beverbose) then ! 187: echo "[ generating $SYSID from $MASTER_DIR/MASTER{,.$cpu}{,.local} ]" ! 188: endif ! 189: echo +$SYS \ ! 190: | \ ! 191: cat $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL - \ ! 192: $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL \ ! 193: | \ ! 194: sed -n \ ! 195: -e "/^+/{" \ ! 196: -e "s;[-+];#&;gp" \ ! 197: -e 't loop' \ ! 198: -e ': loop' \ ! 199: -e 'n' \ ! 200: -e '/^#/b loop' \ ! 201: -e '/^$/b loop' \ ! 202: -e 's;^\([^#]*\).*#[ ]*<\(.*\)>[ ]*$;\2#\1;' \ ! 203: -e 't not' \ ! 204: -e 's;\([^#]*\).*;#\1;' \ ! 205: -e 't not' \ ! 206: -e ': not' \ ! 207: -e 's;[ ]*$;;' \ ! 208: -e 's;^\!\(.*\);\1#\!;' \ ! 209: -e 'p' \ ! 210: -e 't loop' \ ! 211: -e 'b loop' \ ! 212: -e '}' \ ! 213: -e "/^[^#]/d" \ ! 214: -e 's; ; ;g' \ ! 215: -e "s;^# *\([^ ]*\)[ ]*=[ ]*\[\(.*\)\].*;\1#\2;p" \ ! 216: | \ ! 217: awk '-F#' '\ ! 218: part == 0 && $1 != "" {\ ! 219: m[$1]=m[$1] " " $2;\ ! 220: next;\ ! 221: }\ ! 222: part == 0 && $1 == "" {\ ! 223: for (i=NF;i>1;i--){\ ! 224: s=substr($i,2);\ ! 225: c[++na]=substr($i,1,1);\ ! 226: a[na]=s;\ ! 227: }\ ! 228: while (na > 0){\ ! 229: s=a[na];\ ! 230: d=c[na--];\ ! 231: if (m[s] == "") {\ ! 232: f[s]=d;\ ! 233: } else {\ ! 234: nx=split(m[s],x," ");\ ! 235: for (j=nx;j>0;j--) {\ ! 236: z=x[j];\ ! 237: a[++na]=z;\ ! 238: c[na]=d;\ ! 239: }\ ! 240: }\ ! 241: }\ ! 242: part=1;\ ! 243: next;\ ! 244: }\ ! 245: part != 0 {\ ! 246: if ($1 != "") {\ ! 247: n=split($1,x,",");\ ! 248: ok=0;\ ! 249: for (i=1;i<=n;i++) {\ ! 250: if (f[x[i]] == "+") {\ ! 251: ok=1;\ ! 252: }\ ! 253: }\ ! 254: if (NF > 2 && ok == 0 || NF <= 2 && ok != 0) {\ ! 255: print $2; \ ! 256: }\ ! 257: } else { \ ! 258: print $2; \ ! 259: }\ ! 260: }\ ! 261: ' >$SYSCONF.new ! 262: if (-z $SYSCONF.new) then ! 263: echo "${prog}: ${$SYSID}: no such configuration in $MASTER_DIR/MASTER{,.$cpu}" ! 264: rm -f $SYSCONF.new ! 265: endif ! 266: if (! -d $BLDDIR) then ! 267: echo "[ creating $BLDDIR ]" ! 268: mkdir -p $BLDDIR ! 269: endif ! 270: # ! 271: # These paths are used by config. ! 272: # ! 273: # "builddir" is the name of the directory where kernel binaries ! 274: # are put. It is a single path element, never absolute, and is ! 275: # always relative to "objectdir". "builddir" is used by config ! 276: # solely to determine where to put files created by "config" (e.g. ! 277: # the created Makefile and *.h's.) ! 278: # ! 279: # "objectdir" is the name of the directory which will hold "builddir". ! 280: # It is a path; if relative, it is relative to the current directory ! 281: # where config is run. It's sole use is to be prepended to "builddir" ! 282: # to indicate where config-created files are to be placed (see above). ! 283: # ! 284: # "sourcedir" is the location of the sources used to build the kernel. ! 285: # It is a path; if relative, it is relative to the directory specified ! 286: # by the concatenation of "objectdir" and "builddir" (i.e. where the ! 287: # kernel binaries are put). ! 288: # ! 289: echo 'builddir "."' >> $SYSCONF.new ! 290: set OBJRELDIR=`relpath $OBJROOT $OBJDIR` ! 291: echo 'objectdir "'$OBJROOT'/'$OBJRELDIR'"' >> $SYSCONF.new ! 292: set SRCDIR=`dirname $SOURCE` ! 293: echo 'sourcedir "'$SRCROOT'"' >> $SYSCONF.new ! 294: if (-f $SYSCONF) then ! 295: diff $SYSCONF $SYSCONF.new ! 296: rm -f $SYSCONF.old ! 297: mv $SYSCONF $SYSCONF.old ! 298: endif ! 299: rm -f $SYSCONF ! 300: mv $SYSCONF.new $SYSCONF ! 301: if ($?doconfig) then ! 302: echo "[ configuring $SYSID ]" ! 303: if ($?profile) then ! 304: $CONFIG_DIR/config -c $MASTER_DIR -p $SYSCONF ! 305: else ! 306: $CONFIG_DIR/config -c $MASTER_DIR $SYSCONF ! 307: endif ! 308: endif ! 309: if ($?domake) then ! 310: echo "[ making $SYSID ]" ! 311: (cd $BLDDIR; make) ! 312: endif ! 313: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.