|
|
1.1 ! root 1: #!/bin/csh -f ! 2: set path = ($path .) ! 3: ! 4: ## ! 5: # Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 6: # ! 7: # @APPLE_LICENSE_HEADER_START@ ! 8: # ! 9: # Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 10: # Reserved. This file contains Original Code and/or Modifications of ! 11: # Original Code as defined in and that are subject to the Apple Public ! 12: # Source License Version 1.1 (the "License"). You may not use this file ! 13: # except in compliance with the License. Please obtain a copy of the ! 14: # License at http://www.apple.com/publicsource and read it before using ! 15: # this file. ! 16: # ! 17: # The Original Code and all software distributed under the License are ! 18: # distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 19: # EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 20: # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 21: # FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 22: # License for the specific language governing rights and limitations ! 23: # under the License. ! 24: # ! 25: # @APPLE_LICENSE_HEADER_END@ ! 26: ## ! 27: ! 28: set prog=$0 ! 29: set prog=$prog:t ! 30: set nonomatch ! 31: set OBJDIR=../BUILD ! 32: set CONFIG_DIR=/usr/local/bin ! 33: ! 34: unset domake ! 35: unset doconfig ! 36: unset beverbose ! 37: unset MACHINE ! 38: unset profile ! 39: ! 40: while ($#argv >= 1) ! 41: if ("$argv[1]" =~ -*) then ! 42: switch ("$argv[1]") ! 43: case "-c": ! 44: case "-config": ! 45: set doconfig ! 46: breaksw ! 47: case "-m": ! 48: case "-make": ! 49: set domake ! 50: breaksw ! 51: case "-cpu": ! 52: if ($#argv < 2) then ! 53: echo "${prog}: missing argument to ${argv[1]}" ! 54: exit 1 ! 55: endif ! 56: set MACHINE="$argv[2]" ! 57: shift ! 58: breaksw ! 59: case "-d": ! 60: if ($#argv < 2) then ! 61: echo "${prog}: missing argument to ${argv[1]}" ! 62: exit 1 ! 63: endif ! 64: set OBJDIR="$argv[2]" ! 65: shift ! 66: breaksw ! 67: case "-verbose": ! 68: set beverbose ! 69: breaksw ! 70: case "-p": ! 71: case "-profile": ! 72: set profile ! 73: breaksw ! 74: default: ! 75: echo "${prog}: ${argv[1]}: unknown switch" ! 76: exit 1 ! 77: breaksw ! 78: endsw ! 79: shift ! 80: else ! 81: break ! 82: endif ! 83: end ! 84: ! 85: if ($#argv == 0) set argv=(GENERIC) ! 86: ! 87: if (! $?MACHINE) then ! 88: if (-d /NextApps) then ! 89: set MACHINE=`hostinfo | awk '/MC680x0/ { printf("m68k") } /MC880x0/ { printf("m88k") }'` ! 90: endif ! 91: endif ! 92: ! 93: if (! $?MACHINE) then ! 94: if (-f /etc/machine) then ! 95: set MACHINE="`/etc/machine`" ! 96: else ! 97: echo "${prog}: no /etc/machine, specify machine type with -cpu" ! 98: echo "${prog}: e.g. ${prog} -cpu VAX CONFIGURATION" ! 99: exit 1 ! 100: endif ! 101: endif ! 102: ! 103: set FEATURES_EXTRA= ! 104: ! 105: switch ("$MACHINE") ! 106: case IBMRT: ! 107: set cpu=ca ! 108: set ID=RT ! 109: set FEATURES_EXTRA="romp_dualcall.h romp_fpa.h" ! 110: breaksw ! 111: case SUN: ! 112: set cpu=sun3 ! 113: set ID=SUN3 ! 114: breaksw ! 115: default: ! 116: set cpu=`echo $MACHINE | tr A-Z a-z` ! 117: set ID=`echo $MACHINE | tr a-z A-Z` ! 118: breaksw ! 119: endsw ! 120: set FEATURES=../h/features.h ! 121: set FEATURES_H=(cs_*.h mach_*.h net_*.h\ ! 122: cputypes.h cpus.h vice.h\ ! 123: $FEATURES_EXTRA) ! 124: set MASTER_DIR=../conf ! 125: set MASTER = ${MASTER_DIR}/MASTER ! 126: set MASTER_CPU=${MASTER}.${cpu} ! 127: ! 128: set MASTER_LOCAL = ${MASTER}.local ! 129: set MASTER_CPU_LOCAL = ${MASTER_CPU}.local ! 130: if (! -f $MASTER_LOCAL) set MASTER_LOCAL = "" ! 131: if (! -f $MASTER_CPU_LOCAL) set MASTER_CPU_LOCAL = "" ! 132: ! 133: if (! -d $OBJDIR) then ! 134: echo "[ creating $OBJDIR ]" ! 135: mkdir -p $OBJDIR ! 136: endif ! 137: ! 138: foreach SYS ($argv) ! 139: set SYSID=${SYS}_${ID} ! 140: set SYSCONF=$OBJDIR/config.$SYSID ! 141: set BLDDIR=$OBJDIR/$SYSID ! 142: if ($?beverbose) then ! 143: echo "[ generating $SYSID from $MASTER_DIR/MASTER{,.$cpu}{,.local} ]" ! 144: endif ! 145: echo +$SYS \ ! 146: | \ ! 147: cat $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL - \ ! 148: $MASTER $MASTER_LOCAL $MASTER_CPU $MASTER_CPU_LOCAL \ ! 149: | \ ! 150: sed -n \ ! 151: -e "/^+/{" \ ! 152: -e "s;[-+];#&;gp" \ ! 153: -e 't loop' \ ! 154: -e ': loop' \ ! 155: -e 'n' \ ! 156: -e '/^#/b loop' \ ! 157: -e '/^$/b loop' \ ! 158: -e 's;^\([^#]*\).*#[ ]*<\(.*\)>[ ]*$;\2#\1;' \ ! 159: -e 't not' \ ! 160: -e 's;\([^#]*\).*;#\1;' \ ! 161: -e 't not' \ ! 162: -e ': not' \ ! 163: -e 's;[ ]*$;;' \ ! 164: -e 's;^\!\(.*\);\1#\!;' \ ! 165: -e 'p' \ ! 166: -e 't loop' \ ! 167: -e 'b loop' \ ! 168: -e '}' \ ! 169: -e "/^[^#]/d" \ ! 170: -e 's; ; ;g' \ ! 171: -e "s;^# *\([^ ]*\)[ ]*=[ ]*\[\(.*\)\].*;\1#\2;p" \ ! 172: | \ ! 173: awk '-F#' '\ ! 174: part == 0 && $1 != "" {\ ! 175: m[$1]=m[$1] " " $2;\ ! 176: next;\ ! 177: }\ ! 178: part == 0 && $1 == "" {\ ! 179: for (i=NF;i>1;i--){\ ! 180: s=substr($i,2);\ ! 181: c[++na]=substr($i,1,1);\ ! 182: a[na]=s;\ ! 183: }\ ! 184: while (na > 0){\ ! 185: s=a[na];\ ! 186: d=c[na--];\ ! 187: if (m[s] == "") {\ ! 188: f[s]=d;\ ! 189: } else {\ ! 190: nx=split(m[s],x," ");\ ! 191: for (j=nx;j>0;j--) {\ ! 192: z=x[j];\ ! 193: a[++na]=z;\ ! 194: c[na]=d;\ ! 195: }\ ! 196: }\ ! 197: }\ ! 198: part=1;\ ! 199: next;\ ! 200: }\ ! 201: part != 0 {\ ! 202: if ($1 != "") {\ ! 203: n=split($1,x,",");\ ! 204: ok=0;\ ! 205: for (i=1;i<=n;i++) {\ ! 206: if (f[x[i]] == "+") {\ ! 207: ok=1;\ ! 208: }\ ! 209: }\ ! 210: if (NF > 2 && ok == 0 || NF <= 2 && ok != 0) {\ ! 211: print $2; \ ! 212: }\ ! 213: } else { \ ! 214: print $2; \ ! 215: }\ ! 216: }\ ! 217: ' >$SYSCONF.new ! 218: if (-z $SYSCONF.new) then ! 219: echo "${prog}: ${$SYSID}: no such configuration in $MASTER_DIR/MASTER{,.$cpu}" ! 220: rm -f $SYSCONF.new ! 221: endif ! 222: if (! -d $BLDDIR) then ! 223: echo "[ creating $BLDDIR ]" ! 224: mkdir -p $BLDDIR ! 225: endif ! 226: # ! 227: # These paths are used by config. ! 228: # ! 229: # "builddir" is the name of the directory where kernel binaries ! 230: # are put. It is a single path element, never absolute, and is ! 231: # always relative to "objectdir". "builddir" is used by config ! 232: # solely to determine where to put files created by "config" (e.g. ! 233: # the created Makefile and *.h's.) ! 234: # ! 235: # "objectdir" is the name of the directory which will hold "builddir". ! 236: # It is a path; if relative, it is relative to the current directory ! 237: # where config is run. It's sole use is to be prepended to "builddir" ! 238: # to indicate where config-created files are to be placed (see above). ! 239: # ! 240: # "sourcedir" is the location of the sources used to build the kernel. ! 241: # It is a path; if relative, it is relative to the directory specified ! 242: # by the concatenation of "objectdir" and "builddir" (i.e. where the ! 243: # kernel binaries are put). ! 244: # ! 245: echo 'builddir '${SYSID} >> $SYSCONF.new ! 246: echo 'objectdir "'$OBJDIR'"' >> $SYSCONF.new ! 247: set SRCDIR=`relpath -d .. $BLDDIR ..` ! 248: echo 'sourcedir "'$SRCDIR'"' >> $SYSCONF.new ! 249: if (-f $SYSCONF) then ! 250: diff $SYSCONF $SYSCONF.new ! 251: rm -f $SYSCONF.old ! 252: mv $SYSCONF $SYSCONF.old ! 253: endif ! 254: rm -f $SYSCONF ! 255: mv $SYSCONF.new $SYSCONF ! 256: if ($?doconfig) then ! 257: echo "[ configuring $SYSID ]" ! 258: if ($?profile) then ! 259: $CONFIG_DIR/config -p $SYSCONF ! 260: else ! 261: $CONFIG_DIR/config $SYSCONF ! 262: endif ! 263: endif ! 264: if ($?domake) then ! 265: echo "[ making $SYSID ]" ! 266: (cd $BLDDIR; make) ! 267: endif ! 268: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.