Annotation of XNU/bsd/conf/tools/doconf/doconf.csh, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.