Annotation of kernel/conf/Makefile.template, revision 1.1

1.1     ! root        1: ##
        !             2: # Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3: #
        !             4: # @APPLE_LICENSE_HEADER_START@
        !             5: # 
        !             6: # Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7: # Reserved.  This file contains Original Code and/or Modifications of
        !             8: # Original Code as defined in and that are subject to the Apple Public
        !             9: # Source License Version 1.1 (the "License").  You may not use this file
        !            10: # except in compliance with the License.  Please obtain a copy of the
        !            11: # License at http://www.apple.com/publicsource and read it before using
        !            12: # this file.
        !            13: # 
        !            14: # The Original Code and all software distributed under the License are
        !            15: # distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16: # EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17: # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18: # FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19: # License for the specific language governing rights and limitations
        !            20: # under the License.
        !            21: # 
        !            22: # @APPLE_LICENSE_HEADER_END@
        !            23: ##
        !            24: 
        !            25: #
        !            26: # Mach Operating System
        !            27: # Copyright (c) 1986 Carnegie-Mellon University
        !            28: # All rights reserved.  The CMU software License Agreement specifies
        !            29: # the terms and conditions for use and redistribution.
        !            30: #
        !            31: ######################################################################
        !            32: 
        !            33: ifneq "" "$(wildcard /bin/mkdirs)"
        !            34:   MKDIRS = /bin/mkdirs
        !            35: else
        !            36:   MKDIRS = /bin/mkdir -p
        !            37: endif
        !            38: 
        !            39: #
        !            40: #  This must be here before any rules are possibly defined by the
        !            41: #  machine dependent makefile fragment so that a plain "make" command
        !            42: #  always works.  The config program will emit an appropriate rule to
        !            43: #  cause "all" to depend on every kernel configuration it generates.
        !            44: #
        !            45: 
        !            46: default: all
        !            47: 
        !            48: #
        !            49: #  In order to move the link commands out of config and back into the
        !            50: #  template makefile, config has been changed to emit a dependency rule
        !            51: #  of the form *mach.sys: *mach.swap for each configuration so that
        !            52: #  the common commands for building each configuration can be placed
        !            53: #  directly in the template in the default rule for the .sys.swap
        !            54: #  dependency.
        !            55: #
        !            56: .SUFFIXES: .sys
        !            57: 
        !            58: #
        !            59: #  Make sure we don't remove this by accident if interrupted at the wrong
        !            60: #  time.
        !            61: #
        !            62: .PRECIOUS: Makefile
        !            63: 
        !            64: #
        !            65: # Make depend hackery 
        !            66: #
        !            67: MD=    md
        !            68: MD_SUFFIX=d
        !            69: EXIT_RULE=${MD} -u Makedep -f -d `ls *.${MD_SUFFIX}`
        !            70: 
        !            71: #
        !            72: # This defines the kernel used for "target" object modules (ones that
        !            73: # will run on the target architecture).
        !            74: #
        !            75: KCC=   ${CC} -static
        !            76: KCPP=  ${KCC} -E
        !            77: 
        !            78: #
        !            79: # Headers files that defines stuff used by both libc and kernel
        !            80: #
        !            81: EXPORT_LIB= . arpa protocols
        !            82: 
        !            83: #
        !            84: #  Pre-processor environment
        !            85: #
        !            86: INCLUDES = -I. -I$(SOURCE_DIR) -I$(SOURCE_DIR)/bsd \
        !            87:        -I$(SOURCE_DIR)/bsd/include -I$(SOURCE_DIR)/machdep \
        !            88:        -I$(SOURCE_DIR)/bsd/netat \
        !            89:        -I$(SOURCE_DIR)/bsd/netat/h -I$(SOURCE_DIR)/bsd/netat/at \
        !            90:        -I$(NEXT_ROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
        !            91:        -I$(NEXT_ROOT)/System/Library/Frameworks/System.framework/Headers \
        !            92:        -I$(NEXT_ROOT)/System/Library/Frameworks/System.framework/Headers/bsd
        !            93: 
        !            94: # -- Compatible paths --
        !            95: #INCLUDES = -I. -I$(SOURCE_DIR) -I$(SOURCE_DIR)/bsd \
        !            96: #         -I$(SOURCE_DIR)/bsd/include -I$(SOURCE_DIR)/machdep \
        !            97: #         -I$(SOURCE_DIR)/bsd/netat \
        !            98: #         -I$(SOURCE_DIR)/bsd/netat/h -I$(SOURCE_DIR)/bsd/netat/at \
        !            99: #         -I$(NEXT_ROOT)/NextLibrary/Frameworks/System.framework/PrivateHeaders \
        !           100: #         -I$(NEXT_ROOT)/NextLibrary/Frameworks/System.framework/Headers \
        !           101: #         -I$(NEXT_ROOT)/NextLibrary/Frameworks/System.framework/Headers/bsd
        !           102: 
        !           103: DEFINES = $(IDENT) -DARCH_PRIVATE -D_KERNEL -DKERNEL -DKERNEL_PRIVATE \
        !           104:                -DDRIVER_PRIVATE  -DKERNEL_BUILD -D__APPLE__ -DNeXT -D_NEXT_SOURCE \
        !           105:                $(MACHINE_DEFINES)
        !           106: 
        !           107: CPP_FLAGS = -MD -imacros meta_features.h $(INCLUDES) $(DEFINES)
        !           108: 
        !           109: #
        !           110: #  Profiling hackery
        !           111: #
        !           112: COPTS_P = $(CPP_FLAGS) -pg
        !           113: COPTS= $(CPP_FLAGS)
        !           114: 
        !           115: #
        !           116: # CFLAGS --
        !           117: #      CCONFIGFLAGS -- flags to be set via "makeoptions" in the
        !           118: #              appropriate MASTER.* config file
        !           119: #      MACHINE_CFLAGS -- flags to be set in the Makefile.* file
        !           120: #
        !           121: CFLAGS=         $(CCONFIGFLAGS) $(COPTS) $(MACHINE_CFLAGS)
        !           122: 
        !           123: #
        !           124: #  Common assembly flags
        !           125: #
        !           126: # SFLAGS --
        !           127: #      SCONFIGFLAGS -- flags to be set via "makeoptions" in the
        !           128: #              appropriate MASTER.* config file
        !           129: #      MACHINE_SFLAGS -- flags to be set in the Makefile.* file
        !           130: #
        !           131: SFLAGS=        $(CPP_FLAGS) -D__ASSEMBLER__ $(SCONFIGFLAGS) $(MACHINE_SFLAGS)
        !           132: 
        !           133: #
        !           134: # Macros that control installation of kernel and it's header files
        !           135: #
        !           136: # install flags for header files
        !           137: #
        !           138: INSTALL_FLAGS = -c -m 444
        !           139: 
        !           140: #
        !           141: # Commands that massage header files to remove KERNEL_PRIVATE and 
        !           142: # DRIVER_PRIVATE stuff
        !           143: #
        !           144: UNIFDEF   = /usr/bin/unifdef
        !           145: DECOMMENT = /usr/local/bin/decomment
        !           146: 
        !           147: #
        !           148: # Header files that are unifdef'ed and installed in INCDIR
        !           149: #
        !           150: EXPORT= mach mach/machine kernserv kernserv/machine                    \
        !           151:        bsd/machine bsd/sys bsd/net bsd/netinet bsd/netiso bsd/netns    \
        !           152:        bsd/nfs bsd/dev bsd/dev/machine                                 \
        !           153:        bsd/ufs/ffs bsd/ufs/ufs bsd/miscfs/union bsd/miscfs/specfs      \
        !           154:        bsd/vfs bsd/libkern driverkit
        !           155: 
        !           156: #
        !           157: # Header files that are installed into LCLDIR
        !           158: #
        !           159: LCLEXPORT= mach mach_debug kern ipc kernserv vm bsd/sys bsd/dev bsd/net        \
        !           160:        bsd/netiso bsd/netccitt bsd/netns bsd/dev/machine mach/machine  \
        !           161:        machdep/machine driverkit                                       \
        !           162:        bsd/ufs/mfs bsd/ufs/lfs bsd/isofs/cd9660                        \
        !           163:        bsd/netat/h bsd/netat/at                                        \
        !           164:        bsd/hfs/hfscommon/headers bsd/hfs/hfscommon/headers/system
        !           165: 
        !           166: #
        !           167: # Header file destinations
        !           168: #
        !           169: INCDIR=        /System/Library/Frameworks/System.framework/Versions/B/Headers
        !           170: LCLDIR= /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders
        !           171: 
        !           172: # -- Compatible paths --
        !           173: #INCDIR= /NextLibrary/Frameworks/System.framework/Versions/B/Headers
        !           174: #LCLDIR= /NextLibrary/Frameworks/System.framework/Versions/B/PrivateHeaders
        !           175: 
        !           176: 
        !           177: #
        !           178: # Kernel is installed in / and TFTPDIR (actually, hard linked together)
        !           179: #
        !           180: TFTPDIR= /private/tftpboot
        !           181: 
        !           182: #
        !           183: # driverkit library source.
        !           184: #
        !           185: LIBDRIVER_SOURCE= $(NEXT_ROOT)/usr/local/lib
        !           186: 
        !           187: #
        !           188: # ObjC library.
        !           189: #
        !           190: LIBOBJC_SOURCE= $(NEXT_ROOT)/usr/local/lib
        !           191: 
        !           192: #
        !           193: # Platform Expert library.
        !           194: #
        !           195: LIBPEXPERT_SOURCE= $(NEXT_ROOT)/usr/local/lib
        !           196: 
        !           197: #
        !           198: # Directories to be scanned when building tags.
        !           199: # Machine-dependent makefile can add directories by defining
        !           200: # MACHINE_TAG_DIRS.
        !           201: #
        !           202: TAGDIRS =                                                              \
        !           203:        bsd/dev bsd/if bsd/include bsd/kern bsd/libkern bsd/net         \
        !           204:        bsd/netinet bsd/vfs bsd/nfs bsd/sys bsd/ufs/ffs bsd/ufs/lfs     \
        !           205:        bsd/ufs/mfs bsd/ufs/ufs ipc kern kernserv       \
        !           206:        mach mach_debug vm driverkit uxkern \
        !           207:        bsd/miscfs/deadfs bsd/miscfs/fdesc bsd/miscfs/fifofs \
        !           208:        bsd/miscfs/kernfs bsd/miscfs/nullfs bsd/miscfs/portal \
        !           209:        bsd/miscfs/procfs bsd/miscfs/specfs bsd/miscfs/umapfs \
        !           210:        bsd/miscfs/union bsd/hfs bsd/hfs/hfscomman
        !           211: 
        !           212: 
        !           213: #
        !           214: # Path to any internal tools.  Currently, just newvers
        !           215: #
        !           216: TOOLDIR = ..
        !           217: 
        !           218: #
        !           219: #  Path name of the version identification file.
        !           220: #
        !           221: VERSION_FILES= \
        !           222:        $(SOURCE_DIR)/conf/version.major \
        !           223:        $(SOURCE_DIR)/conf/version.minor \
        !           224:        $(SOURCE_DIR)/conf/version.variant
        !           225: 
        !           226: #
        !           227: #  LDOBJS is the set of object files which comprise the kernel.
        !           228: #
        !           229: #  LDOBJS_PREFIX and LDOBJS_SUFFIX are defined in the machine
        !           230: #  dependent Makefile (if necessary).
        !           231: #
        !           232: LDOBJS=${LDOBJS_PREFIX} ${OBJS} subr_prof.o ioconf.o ${LDOBJS_SUFFIX}
        !           233: 
        !           234: #
        !           235: #  LDDEPS is the set of extra dependencies associated building
        !           236: #  the kernel.
        !           237: #
        !           238: #  LDDEPS_PREFIX is defined in the machine dependent Makefile
        !           239: #  (if necessary).
        !           240: #
        !           241: LDDEPS=${LDDEPS_PREFIX} ${VERSION_FILES} $(TOOLDIR)/newvers
        !           242: 
        !           243: #
        !           244: #  MACHINEDIR defines the path to the machine-dependent directory
        !           245: #  where genassym.c, etc live.
        !           246: #
        !           247: MACHINEDIR=$(SOURCE_DIR)/machdep/$(MACHINE)
        !           248: 
        !           249: 
        !           250: #
        !           251: #  SYSDEPS is the set of extra dependencies associated with each
        !           252: #  *vmunix rule (in addition to *vmunix.sys).
        !           253: #
        !           254: #  SYSDEPS_PREFIX is defined in the machine dependent Makefile
        !           255: #  (if necessary).
        !           256: #
        !           257: SYSDEPS=${SYSDEPS_PREFIX}
        !           258: 
        !           259: #
        !           260: # Name of the features include file and the build directory .h files
        !           261: # that are used to build the features.h file.  Machine dependent
        !           262: # makefile can add other files to the FEATURES_H list by defining
        !           263: # FEATURES_EXTRA.
        !           264: #
        !           265: FEATURES= features.h
        !           266: FEATURES_H= meta_features.h
        !           267: 
        !           268: #
        !           269: #  Compilation rules to generate mach_kernel from mach_kernel.sys.
        !           270: #
        !           271: SYS_RULE_1=@rm -f $@
        !           272: SYS_RULE_2=strip -x -o $@ [email protected]
        !           273: SYS_RULE_3=@chmod +w [email protected]
        !           274: SYS_RULE_4=
        !           275: 
        !           276: #
        !           277: # Compilation rules to generate .o from .o
        !           278: #
        !           279: O_RULE_1A=rm -f $*.o; cp 
        !           280: O_RULE_1B=$*.o .
        !           281: 
        !           282: #
        !           283: # Compilation rules to generate .o from .s
        !           284: #
        !           285: S_RULE_1A=${KCC} -c ${SFLAGS} 
        !           286: S_RULE_1B=$*.s 
        !           287: S_RULE_2=
        !           288: S_RULE_3=
        !           289: 
        !           290: #
        !           291: # Compilation rules to generate .o from .c for normal files
        !           292: #
        !           293: C_RULE_1A=${KCC} -c ${CFLAGS} 
        !           294: C_RULE_1B=$*.c
        !           295: C_RULE_2=
        !           296: C_RULE_3=
        !           297: C_RULE_4=
        !           298: 
        !           299: #
        !           300: # Compilation rules to generate .o from .c for driver files
        !           301: #
        !           302: C_RULE_1A_D=${C_RULE_1A}
        !           303: C_RULE_1B_D=${C_RULE_1B}
        !           304: C_RULE_2_D=${C_RULE_2}
        !           305: C_RULE_3_D=${C_RULE_3}
        !           306: C_RULE_4_D=${C_RULE_4}
        !           307: 
        !           308: #
        !           309: # Compilation rules to generate .o from .c for profiling routine files
        !           310: #
        !           311: C_RULE_1A_P=${KCC} -c -S ${COPTS_P} 
        !           312: C_RULE_1B_P=${C_RULE_1B}
        !           313: C_RULE_2_P=ex - $*.s < ${GPROF.EX}
        !           314: C_RULE_3_P=${AS} -o $*.o $*.s
        !           315: C_RULE_4_P=rm -f $*.s
        !           316: 
        !           317: #
        !           318: # Compilation rules to generate .o from .m for normal files
        !           319: #
        !           320: M_RULE_1A=${KCC} -c ${CFLAGS} 
        !           321: M_RULE_1B=$*.m
        !           322: M_RULE_2=
        !           323: M_RULE_3=
        !           324: M_RULE_4=
        !           325: 
        !           326: #
        !           327: # Compilation rules to generate .o from .m for driver files
        !           328: #
        !           329: M_RULE_1A_D=${M_RULE_1A}
        !           330: M_RULE_1B_D=${M_RULE_1B}
        !           331: M_RULE_2_D=${M_RULE_2}
        !           332: M_RULE_3_D=${M_RULE_3}
        !           333: M_RULE_4_D=${M_RULE_4}
        !           334: 
        !           335: #
        !           336: # Compilation rules to generate .o from .m for profiling routine files
        !           337: #
        !           338: M_RULE_1A_P=${KCC} -c -S ${COPTS_P} 
        !           339: M_RULE_1B_P=${M_RULE_1B}
        !           340: M_RULE_2_P=ex - $*.s < ${GPROF.EX}
        !           341: M_RULE_3_P=${AS} -o $*.o $*.s
        !           342: M_RULE_4_P=rm -f $*.s
        !           343: 
        !           344: #
        !           345: #  Theses macros are filled in by the config program depending on the
        !           346: #  current configuration.  The MACHDEP macro is replaced by the
        !           347: #  contents of the machine dependent makefile template and the others
        !           348: #  are replaced by the corresponding symbol definitions for the
        !           349: #  configuration.
        !           350: #
        !           351: 
        !           352: %OBJS
        !           353: 
        !           354: %CFILES
        !           355: 
        !           356: %MFILES
        !           357: 
        !           358: %SFILES
        !           359: 
        !           360: %BFILES
        !           361: 
        !           362: %ORDERED
        !           363: %MACHDEP
        !           364: 
        !           365: #
        !           366: #  OBJSDEPS is the set of files (defined in the machine dependent
        !           367: #  template if necessary) which all objects depend on (such as an
        !           368: #  in-line assembler expansion filter
        !           369: #
        !           370: 
        !           371: ${OBJS}: ${OBJSDEPS}
        !           372: 
        !           373: libmig : $(MACH_OFILES)
        !           374:        @make $(MACH_OFILES)
        !           375: 
        !           376: 
        !           377: #
        !           378: #  Build a kernel.
        !           379: #
        !           380: mach_kernel.sys:${P} ${PRELDDEPS} ${LDOBJS} $(MACH_OFILES) ${LDDEPS} libmig
        !           381:        @rm -f vers.c
        !           382:        @/bin/sh $(TOOLDIR)/newvers `cat ${VERSION_FILES}`
        !           383:        ${KCC} ${INCLUDES} ${MACHINE_CFLAGS} -c vers.c
        !           384:        @rm -f $* $*.sys
        !           385:        @echo loading $*.sys
        !           386:        @${LD} -static ${LDFLAGS} ${FVMFILE_LDFLAGS} ${LDOBJS} \
        !           387:                $(MACH_OFILES) vers.o ${LDFLAGS2} ${LIBS}
        !           388:        @size a.out
        !           389:        @chmod 755 a.out
        !           390:        @-mv a.out $*.sys
        !           391:        @make .EXIT
        !           392: 
        !           393: #
        !           394: # Just do a load of the kernel to produce a mach_kernel.sys
        !           395: # ... For debugging builds when you want to say:
        !           396: #              make foo.o load
        !           397: #
        !           398: load:
        !           399:        @rm -f mach_kernel.sys
        !           400:        @echo loading mach_kernel.sys
        !           401:        @${LD} -static ${LDFLAGS} ${FVMFILE_LDFLAGS} ${LDOBJS} \
        !           402:                $(MACH_OFILES) vers.o  ${LDFLAGS2} ${LIBS}
        !           403:        @size a.out
        !           404:        @chmod 755 a.out
        !           405:        @-mv a.out mach_kernel.sys
        !           406:        @make .EXIT
        !           407: 
        !           408: #
        !           409: #  This macro is replaced by three rules per configuration, plus a
        !           410: #  final definition for the LOAD symbol consisting of all configuration
        !           411: #  names and a dependency of "all" on this symbol (so that the
        !           412: #  "default" rule above will build everything).  The three rules in
        !           413: #  each configuration are:
        !           414: #
        !           415: #  - a *mach from *mach.sys dependency using the SYS_RULE_* rules,
        !           416: #  - a *mach.swap from LDDEPS, swap*.o, and LDDEPS dependency that
        !           417: #    simply copies the swap file to the target name, and
        !           418: #  - a swap*.o from swap*.c and SWAPDEPS dependency using the C_RULE_* rules.
        !           419: #
        !           420: # 19-Feb-92 (dmitch) - I don't think this is used anymore...
        !           421: #
        !           422: 
        !           423: %LOAD
        !           424: 
        !           425: #
        !           426: #  Mach IPC-based interfaces
        !           427: #
        !           428: 
        !           429: #  The Mig-generated files go into subdirectories.
        !           430: #  These macros create the subdirectories as they are needed.
        !           431: 
        !           432: MAKE_MACH = [ -d mach ] || $(MKDIRS) mach
        !           433: MAKE_DEVICE = [ -d device ] || $(MKDIRS) device
        !           434: MAKE_KERN = [ -d kern ] || $(MKDIRS) kern
        !           435: MAKE_MACH_DEBUG = [ -d mach_debug ] || $(MKDIRS) mach_debug
        !           436: MAKE_KERNSERV = [ -d kernserv ] || $(MKDIRS) kernserv
        !           437: MAKE_DEVSERV = [ -d driverkit ] || $(MKDIRS) driverkit
        !           438: SET_SOURCE_DIR = CWD=`pwd`; cd $(SOURCE_DIR); SOURCE_DIR=`pwd`; cd $$CWD
        !           439: SET_REL_SOURCE= REL_SOURCE_DIR=`relpath -d $$CWD/../.. . $$SOURCE_DIR`
        !           440: 
        !           441: #  Rules to create machine-dependent machine and mach/machine symlinks
        !           442: 
        !           443: MIGFLAGS =  -I. -I.. -I$$REL_SOURCE_DIR -DKERNEL
        !           444: MIGKSFLAGS = $(MIGFLAGS) -DKERNEL_SERVER
        !           445: MIGKUFLAGS = $(MIGFLAGS) -DKERNEL_USER
        !           446: 
        !           447: MIG = mig
        !           448: 
        !           449: MACHDIR = mach
        !           450: KERNDIR = kern
        !           451: MACHDEBUGDIR = mach_debug
        !           452: KERNSERVDIR = kernserv
        !           453: DEVSERVDIR = driverkit
        !           454: 
        !           455: 
        !           456: MIGDIRS = $(MACHDIR) $(KERNSERVDIR) $(MACHDIR)/machine
        !           457: 
        !           458: MACH_FFILES =  $(MACHDIR)/port_allocate.c              \
        !           459:                $(MACHDIR)/port_deallocate.c            \
        !           460:                $(MACHDIR)/port_set_add.c               \
        !           461:                $(MACHDIR)/port_set_remove.c            \
        !           462:                $(MACHDIR)/port_set_allocate.c          \
        !           463:                $(MACHDIR)/port_set_backlog.c           \
        !           464:                $(MACHDIR)/port_status.c                \
        !           465:                $(MACHDIR)/vm_allocate.c                \
        !           466:                $(MACHDIR)/vm_deallocate.c              \
        !           467:                $(MACHDIR)/port_set_deallocate.c        \
        !           468:                $(MACHDIR)/task_set_special_port.c      \
        !           469:                $(MACHDIR)/task_get_special_port.c      \
        !           470:                $(MACHDIR)/thread_abort.c               \
        !           471:                $(MACHDIR)/thread_get_special_port.c    \
        !           472:                $(MACHDIR)/thread_set_special_port.c    \
        !           473:                $(MACHDIR)/thread_suspend.c             \
        !           474:                $(MACHDIR)/vm_read.c                    \
        !           475:                $(MACHDIR)/vm_write.c                   \
        !           476:                $(MACHDIR)/vm_protect.c
        !           477: 
        !           478: MACH_OFILES =  port_allocate.o                 \
        !           479:                port_deallocate.o               \
        !           480:                port_set_add.o                  \
        !           481:                port_set_remove.o               \
        !           482:                port_set_allocate.o             \
        !           483:                port_set_backlog.o              \
        !           484:                port_status.o                   \
        !           485:                vm_allocate.o                   \
        !           486:                vm_deallocate.o                 \
        !           487:                port_set_deallocate.o           \
        !           488:                task_set_special_port.o         \
        !           489:                task_get_special_port.o         \
        !           490:                thread_abort.o                  \
        !           491:                thread_get_special_port.o       \
        !           492:                thread_set_special_port.o       \
        !           493:                thread_suspend.o                \
        !           494:                vm_read.o                       \
        !           495:                vm_write.o                      \
        !           496:                vm_protect.o
        !           497: 
        !           498: MACH_HFILE = $(MACHDIR)/mach_interface.h
        !           499: MACH_HKLOADERFILE = $(MACHDIR)/mach_kernloader.h
        !           500: MACH_INTERNAL = $(MACHDIR)/mach_user_internal.h
        !           501: MACH_FILES = $(MACH_HFILE) $(MACH_INTERNAL)                            \
        !           502:        $(MACHDIR)/mach_server.c $(MACH_FFILES)
        !           503: 
        !           504: $(MACH_FILES): $(SOURCE_DIR)/$(MACHDIR)/mach.defs                      \
        !           505:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           506:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           507:        -$(MAKE_MACH)
        !           508:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           509:        $(MIG) -typed -MD $(MIGKSFLAGS)                         \
        !           510:                -header /dev/null                                       \
        !           511:                -user /dev/null                                         \
        !           512:                -server mach_server.c                                   \
        !           513:                $$REL_SOURCE_DIR/$(MACHDIR)/mach.defs;                  \
        !           514:        $(MIG) -typed -MD $(MIGFLAGS)                                   \
        !           515:                -header mach_kernloader.h                               \
        !           516:                -i                                                      \
        !           517:                -server /dev/null                                       \
        !           518:                $$REL_SOURCE_DIR/$(MACHDIR)/mach.defs
        !           519:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           520:        $(MIG) -typed -MD $(MIGKSFLAGS)                         \
        !           521:                -header /dev/null                                       \
        !           522:                -user /dev/null                                         \
        !           523:                -server mach_server.c                                   \
        !           524:                $$REL_SOURCE_DIR/$(MACHDIR)/mach.defs;                  \
        !           525:        $(MIG) -MD $(MIGFLAGS)                                          \
        !           526:                -header mach_interface.h                                \
        !           527:                -i                                                      \
        !           528:                -server /dev/null                                       \
        !           529:                $$REL_SOURCE_DIR/$(MACHDIR)/mach.defs
        !           530:        -egrep 'Routine ' < $(MACH_HFILE)                               \
        !           531:        | sed -e 's/.*Routine \([a-z_]*\).*/#define \1 \1_EXTERNAL/'    \
        !           532:        > $(MACH_INTERNAL)
        !           533: 
        !           534: MEMORY_OBJECT_HFILE = $(MACHDIR)/memory_object_user.h
        !           535: MEMORY_OBJECT_FILES = $(MEMORY_OBJECT_HFILE)                           \
        !           536:        $(MACHDIR)/memory_object_user.c $(MACHDIR)/memory_object_server.c
        !           537: 
        !           538: $(MEMORY_OBJECT_FILES): $(SOURCE_DIR)/$(MACHDIR)/memory_object.defs
        !           539:        -$(MAKE_MACH)
        !           540:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           541:        $(MIG) -typed -MD $(MIGKUFLAGS) -DSEQNOS                        \
        !           542:                -header memory_object_user.h                            \
        !           543:                -user memory_object_user.c                              \
        !           544:                -server /dev/null                                       \
        !           545:                $$REL_SOURCE_DIR/$(MACHDIR)/memory_object.defs
        !           546: 
        !           547: MEMORY_OBJECT_DEFAULT_HFILE = $(MACHDIR)/memory_object_default.h
        !           548: MEMORY_OBJECT_DEFAULT_FILES = $(MEMORY_OBJECT_DEFAULT_HFILE)           \
        !           549:        $(MACHDIR)/memory_object_default_user.c                         \
        !           550:        $(MACHDIR)/memory_object_default_server.c
        !           551: 
        !           552: $(MEMORY_OBJECT_DEFAULT_FILES): \
        !           553:                $(SOURCE_DIR)/$(MACHDIR)/memory_object_default.defs
        !           554:        -$(MAKE_MACH)
        !           555:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           556:        $(MIG) -typed -MD $(MIGKUFLAGS) -DSEQNOS                        \
        !           557:                -header memory_object_default.h                         \
        !           558:                -user memory_object_default_user.c                      \
        !           559:                -server /dev/null                                       \
        !           560:                $$REL_SOURCE_DIR/$(MACHDIR)/memory_object_default.defs
        !           561: 
        !           562: EXC_HFILE = $(MACHDIR)/exc.h
        !           563: EXC_FILES = $(EXC_HFILE) $(MACHDIR)/exc_server.c
        !           564: 
        !           565: $(EXC_FILES): $(SOURCE_DIR)/$(MACHDIR)/exc.defs                                \
        !           566:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           567:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           568:        -$(MAKE_MACH)
        !           569:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           570:        $(MIG) -MD $(MIGFLAGS) -header exc.h                            \
        !           571:                -user /dev/null                                         \
        !           572:                -server exc_server.c                                    \
        !           573:                $$REL_SOURCE_DIR/$(MACHDIR)/exc.defs
        !           574: 
        !           575: MACH_HOST_HFILE = $(MACHDIR)/mach_host.h
        !           576: MACH_HOST_FILES = $(MACH_HOST_HFILE) $(MACHDIR)/mach_host_server.c
        !           577: 
        !           578: $(MACH_HOST_FILES): $(SOURCE_DIR)/$(MACHDIR)/mach_host.defs            \
        !           579:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           580:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           581:        -$(MAKE_MACH)
        !           582:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           583:        $(MIG) -typed -MD $(MIGKSFLAGS)                         \
        !           584:                -header /dev/null                                       \
        !           585:                -user /dev/null                                         \
        !           586:                -server mach_host_server.c                              \
        !           587:                $$REL_SOURCE_DIR/$(MACHDIR)/mach_host.defs;             \
        !           588:        $(MIG) -MD $(MIGFLAGS)                                          \
        !           589:                -header mach_host.h                                     \
        !           590:                -user /dev/null                                         \
        !           591:                -server /dev/null                                       \
        !           592:                $$REL_SOURCE_DIR/$(MACHDIR)/mach_host.defs
        !           593: 
        !           594: MACH_PORT_FILES = $(MACHDIR)/mach_port_server.c
        !           595: 
        !           596: $(MACH_PORT_FILES): $(SOURCE_DIR)/$(MACHDIR)/mach_port.defs            \
        !           597:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           598:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           599:        -$(MAKE_MACH)
        !           600:        $(SET_SOURCE_DIR); cd $(MACHDIR); $(SET_REL_SOURCE);            \
        !           601:        $(MIG) -untyped -MD $(MIGKSFLAGS)                               \
        !           602:                -header /dev/null                                       \
        !           603:                -user /dev/null                                         \
        !           604:                -server mach_port_server.c                              \
        !           605:                $$REL_SOURCE_DIR/$(MACHDIR)/mach_port.defs
        !           606: 
        !           607: MACH_DEBUG_HFILE = $(MACHDEBUGDIR)/mach_debug.h
        !           608: MACH_DEBUG_FILES = $(MACH_DEBUG_HFILE) $(MACHDEBUGDIR)/mach_debug_server.c
        !           609: 
        !           610: $(MACH_DEBUG_FILES): $(SOURCE_DIR)/$(MACHDEBUGDIR)/mach_debug.defs     \
        !           611:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           612:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           613:        -$(MAKE_MACH_DEBUG)
        !           614:        $(SET_SOURCE_DIR); cd $(MACHDEBUGDIR); $(SET_REL_SOURCE);       \
        !           615:        $(MIG) -untyped -MD $(MIGKSFLAGS)                               \
        !           616:                -header mach_debug.h                                    \
        !           617:                -user /dev/null                                         \
        !           618:                -server mach_debug_server.c                             \
        !           619:                $$REL_SOURCE_DIR/$(MACHDEBUGDIR)/mach_debug.defs
        !           620: 
        !           621: KERNSERV_HFILE = $(KERNSERVDIR)/kern_server.h
        !           622: KERNSERV_FILES = $(KERNSERV_HFILE) $(KERNSERVDIR)/kern_server_handler.h \
        !           623:        $(KERNSERVDIR)/kern_server_handler.c
        !           624: 
        !           625: $(KERNSERV_FILES): $(SOURCE_DIR)/$(KERNSERVDIR)/kern_server.defs       \
        !           626:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           627:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           628:        -$(MAKE_KERNSERV)
        !           629:        $(SET_SOURCE_DIR); cd $(KERNSERVDIR); $(SET_REL_SOURCE);        \
        !           630:        $(MIG) -MD $(MIGFLAGS)                                          \
        !           631:                -header kern_server.h                                   \
        !           632:                -sheader kern_server_handler.h                          \
        !           633:                -user /dev/null                                         \
        !           634:                -handler kern_server_handler.c                          \
        !           635:                $$REL_SOURCE_DIR/$(KERNSERVDIR)/kern_server.defs
        !           636: 
        !           637: KERNSERV_REPLY_HFILE = $(KERNSERVDIR)/kern_server_reply.h
        !           638: KERNSERV_REPLY_FILES = $(KERNSERV_REPLY_HFILE)                         \
        !           639:                        $(KERNSERVDIR)/kern_server_reply_user.c
        !           640: 
        !           641: $(KERNSERV_REPLY_FILES):                                               \
        !           642:                $(SOURCE_DIR)/$(KERNSERVDIR)/kern_server_reply.defs     \
        !           643:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           644:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           645:        -$(MAKE_KERNSERV)
        !           646:        $(SET_SOURCE_DIR); cd $(KERNSERVDIR); $(SET_REL_SOURCE);        \
        !           647:        $(MIG) -MD $(MIGFLAGS)                                          \
        !           648:                -header kern_server_reply.h                             \
        !           649:                -user kern_server_reply_user.c                          \
        !           650:                -server /dev/null                                       \
        !           651:                $$REL_SOURCE_DIR/$(KERNSERVDIR)/kern_server_reply.defs
        !           652: 
        !           653: #
        !           654: # Driverkit device server.
        !           655: #
        !           656: DEVSERV_NAME  = driverServer
        !           657: DEVSERV_FILES = $(DEVSERVDIR)/$(DEVSERV_NAME)Server.c
        !           658: DEVSERV_DEFS = $(DEVSERV_NAME).defs
        !           659: DEVSERV_SRC_DIR = $(NEXT_ROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
        !           660: 
        !           661: # -- Compatible path --
        !           662: #DEVSERV_SRC_DIR = $(NEXT_ROOT)/NextLibrary/Frameworks/System.framework/PrivateHeaders
        !           663: 
        !           664: $(DEVSERV_FILES): $(DEVSERVDIR)/$(DEVSERV_DEFS)                                \
        !           665:                $(SOURCE_DIR)/$(MACHDIR)/mach_types.defs                \
        !           666:                $(SOURCE_DIR)/$(MACHDIR)/std_types.defs
        !           667:        -$(MAKE_DEVSERV)
        !           668:        $(SET_SOURCE_DIR); cd $(DEVSERVDIR); $(SET_REL_SOURCE);         \
        !           669:        $(MIG) -typed -MD -arch $(MACHINE) $(MIGKSFLAGS)                \
        !           670:                -header /dev/null                                       \
        !           671:                -user /dev/null                                         \
        !           672:                -server driverServerServer.c                            \
        !           673:                $(DEVSERV_DEFS)
        !           674: 
        !           675: #
        !           676: # driverServer.defs file imported from the driverkit project...
        !           677: #
        !           678: DEVSERV_SOURCE_DIR=$(DEVSERV_SRC_DIR)/driverkit
        !           679: 
        !           680: $(DEVSERVDIR)/$(DEVSERV_DEFS): $(DEVSERV_SOURCE_DIR)/$(DEVSERV_DEFS)
        !           681:        rm -f $@
        !           682:        -$(MAKE_DEVSERV)
        !           683:        cp -p $(DEVSERV_SOURCE_DIR)/$(DEVSERV_DEFS) $@
        !           684: 
        !           685: #
        !           686: # These files implement the Mach User Level API used by loadable servers
        !           687: # and driverkit-based drivers.
        !           688: #
        !           689: $(MACH_OFILES): $(MACH_FFILES)
        !           690:        $(KCC) -c $(CFLAGS) -DMACH_USER_API \
        !           691:                -D$*=$*_EXTERNAL $(MACHDIR)/$*.c
        !           692: 
        !           693: MIG_HFILES_EXP=        $(MACH_HFILE)           \
        !           694:                $(MACH_HKLOADERFILE)    \
        !           695:                $(MACH_HOST_HFILE)      \
        !           696:                $(MACH_INTERNAL)        \
        !           697:                $(KERNSERV_HFILE)       \
        !           698:                $(KERNSERV_REPLY_HFILE)
        !           699: 
        !           700: #  Explicit dependencies on generated files,
        !           701: #  to ensure that Mig has been run by the time
        !           702: #  these files are compiled.
        !           703: 
        !           704: vm_object.o: $(MACHDIR)/memory_object_user.h                           \
        !           705:                $(MACHDIR)/memory_object_default.h
        !           706: 
        !           707: exception.o: $(MACHDIR)/exc.h
        !           708: 
        !           709: mig_support.o: $(MACHDIR)/mach_user_internal.h
        !           710: 
        !           711: kern_server.o: $(MACHDIR)/mach_user_internal.h                         \
        !           712:                $(KERNSERVDIR)/kern_server.h                            \
        !           713:                $(KERNSERVDIR)/kern_server_reply.h
        !           714: 
        !           715: #
        !           716: #  Clean up the current build directory.
        !           717: #
        !           718: clean: ${MACHINE_CLEAN}
        !           719:        @for f in ${LOAD};                                              \
        !           720:        do                                                              \
        !           721:                echo rm -f $$f $$f.* && rm -f $$f $$f.*;                \
        !           722:        done
        !           723:        @for f in $(MIGDIRS) $(MACHDEBUGDIR) kern;                      \
        !           724:        do                                                              \
        !           725:                echo rm -f $$f/*.[ch]; rm -f $$f/*.[ch];                \
        !           726:        done
        !           727:        rm -f eddep tags *.o errs linterrs makelinks *.log *LOG*        \
        !           728:                Makedep ${CLEAN_EXTRA}
        !           729: 
        !           730: 
        !           731: 
        !           732: #
        !           733: # Building the tags files
        !           734: #
        !           735: tags:  tags_link ALWAYS
        !           736:        @cd $(SOURCE_DIR);                                              \
        !           737:        rm -f /tmp/tag$$$$;                                             \
        !           738:        touch /tmp/tag$$$$;                                             \
        !           739:        echo Making file list;                                          \
        !           740:        for i in ${TAGDIRS} ${MACHINE_TAG_DIRS};                        \
        !           741:        do                                                              \
        !           742:                ls $$i/*.[cms] >> /tmp/tag$$$$ 2> /dev/null;            \
        !           743:        done;                                                           \
        !           744:        for i in ${TAGDIRS} ${MACHINE_TAG_DIRS};                        \
        !           745:        do                                                              \
        !           746:                ls $$i/*.h >> /tmp/tag$$$$ 2> /dev/null;                \
        !           747:        done;                                                           \
        !           748:        echo Making ctags;                                              \
        !           749:        TAGTYPE=`echo -n $(MACHINE) | tr a-z A-Z`;                      \
        !           750:        rm -f tags.$$TAGTYPE;                                           \
        !           751:        cat /tmp/tag$$$$ | xargs ctags -w -d -t -T > tags.$$TAGTYPE; \
        !           752:        echo Making etags;                                              \
        !           753:        rm -f TAGS.$$TAGTYPE;                                           \
        !           754:        xargs etags -f TAGS.$$TAGTYPE < /tmp/tag$$$$;           \
        !           755:        rm -f /tmp/tag$$$$
        !           756: 
        !           757: #
        !           758: # Building a mkid database file
        !           759: #
        !           760: id:    id_link ALWAYS
        !           761:        @cd $(SOURCE_DIR);                                              \
        !           762:        rm -f /tmp/id$$$$;                                              \
        !           763:        touch /tmp/id$$$$;                                              \
        !           764:        echo Making file list;                                          \
        !           765:        for i in ${TAGDIRS} ${MACHINE_TAG_DIRS};                        \
        !           766:        do                                                              \
        !           767:                ls $$i/*.[cms] >> /tmp/id$$$$ 2> /dev/null;             \
        !           768:        done;                                                           \
        !           769:        for i in ${TAGDIRS} ${MACHINE_TAG_DIRS};                        \
        !           770:        do                                                              \
        !           771:                ls $$i/*.h >> /tmp/id$$$$ 2> /dev/null;                 \
        !           772:        done;                                                           \
        !           773:        echo Making id database;                                        \
        !           774:        TAGTYPE=`echo -n $(MACHINE) | tr a-z A-Z`;                      \
        !           775:        rm -f ID.$$TAGTYPE;                                             \
        !           776:        mkid -a/tmp/id$$$$ -S.m=c -fID.$$TAGTYPE;                       \
        !           777:        rm -f /tmp/id$$$$
        !           778: 
        !           779: #
        !           780: # This little bit of magic sets "tags" to point to the current
        !           781: # architecture.  It also gets invoked whenever you build a kernel,
        !           782: # so tags will point to the architecture of the last build.
        !           783: #
        !           784: tags_link:
        !           785:        @cd $(SOURCE_DIR);                                              \
        !           786:        TAGTYPE=`echo -n $(MACHINE) | tr a-z A-Z`;                      \
        !           787:        rm -f tags TAGS;                                                \
        !           788:        echo ln -s tags.$$TAGTYPE tags;                                 \
        !           789:        ln -s tags.$$TAGTYPE tags;                                      \
        !           790:        echo ln -s TAGS.$$TAGTYPE TAGS;                                 \
        !           791:        ln -s TAGS.$$TAGTYPE TAGS
        !           792: 
        !           793: id_link:
        !           794:        @cd $(SOURCE_DIR);                                              \
        !           795:        TAGTYPE=`echo -n $(MACHINE) | tr a-z A-Z`;                      \
        !           796:        rm -f ID;                                                       \
        !           797:        echo ln -s ID.$$TAGTYPE ID;                                     \
        !           798:        ln -s ID.$$TAGTYPE ID;
        !           799: 
        !           800: #
        !           801: # Move tags link after build
        !           802: #
        !           803: all:   tags_link
        !           804: 
        !           805: 
        !           806: #
        !           807: # Profiling targets
        !           808: #
        !           809: gprof: kgmon_on all kgmon_off
        !           810: 
        !           811: kgmon_on:
        !           812:        kgmon -r -b
        !           813: 
        !           814: kgmon_off:
        !           815:        kgmon -h -p
        !           816:        gprof /mach >GPROF
        !           817: gprof: kgmon_on all kgmon_off
        !           818: 
        !           819: kgmon_on:
        !           820:        kgmon -r -b
        !           821: 
        !           822: kgmon_off:
        !           823:        kgmon -h -p
        !           824:        gprof /mach >GPROF
        !           825: 
        !           826: #
        !           827: # Building the "features" file
        !           828: #
        !           829: features: ${FEATURES}
        !           830: 
        !           831: ${FEATURES}: ${FEATURES_H} ${FEATURES_EXTRA} ALWAYS
        !           832:        rm -f features.temp
        !           833:        cc -traditional-cpp -E -dD -P -I. ${FEATURES_H} ${FEATURES_EXTRA} | \
        !           834:                sort -u  > features.temp
        !           835:        @-if [ -f $@ ];                                                 \
        !           836:        then                                                            \
        !           837:                echo diff $@ features.temp;                             \
        !           838:                diff $@ features.temp;                                  \
        !           839:        fi
        !           840:        rm -f $@
        !           841:        mv -f features.temp $@
        !           842: 
        !           843: #
        !           844: #  Special rules to install include files in release images
        !           845: #
        !           846: install: DSTROOT install_kernel installhdrs
        !           847: 
        !           848: install_kernel:        DSTROOT $(KERNEL_NAME) install_md
        !           849:        $(MKDIRS) ${DSTROOT}${TFTPDIR}
        !           850:        install -c -m 444 $(KERNEL_NAME) ${DSTROOT}/mach_kernel
        !           851:        ln ${DSTROOT}/mach_kernel ${DSTROOT}${TFTPDIR}/mach_kernel
        !           852: 
        !           853: install_md: DSTROOT ${MACHINE_INSTALL}
        !           854: 
        !           855: installhdrs: DSTROOT install_mi_hdrs install_md_hdrs
        !           856: 
        !           857: install_mi_hdrs: DSTROOT install_mi_std_hdrs
        !           858: 
        !           859: #
        !           860: # Note the outer for loop of this operation has to be tolerant of non-zero
        !           861: # returns because unifdef returns 1 if it makes a change. I don't think this
        !           862: # is a problem, but we might want to modify unifdef instead of having the
        !           863: # following "-for" expression...
        !           864: #
        !           865: install_mi_std_hdrs: DSTROOT $(MIG_HFILES_EXP) $(MACH_DEBUG_HFILE)
        !           866:        @-for i in ${EXPORT};                                           \
        !           867:        do                                                              \
        !           868:            EXPDIR=`pwd`/exports;                                       \
        !           869:            [ -d $$EXPDIR ] || $(MKDIRS) $$EXPDIR;                              \
        !           870:            rm -f $$EXPDIR/*;                                           \
        !           871:            (cd $(SOURCE_DIR)/$$i;                                      \
        !           872:                hdrs=`echo *.h`;                                        \
        !           873:                if [ "$$hdrs" = '*.h' ]; then                           \
        !           874:                    echo No header files in $$i;                        \
        !           875:                else                                                    \
        !           876:                    for j in $$hdrs;                                    \
        !           877:                    do                                                  \
        !           878:                        DSTDIR=$(DSTROOT)$(INCDIR)/$$i;                 \
        !           879:                        [ -d $$DSTDIR ] || $(MKDIRS) $$DSTDIR;          \
        !           880:                        echo garbage > $$EXPDIR/$$j.strip;              \
        !           881:                        $(UNIFDEF) -UKERNEL_PRIVATE -UDRIVER_PRIVATE    \
        !           882:                                $$j > $$EXPDIR/$$j ||                   \
        !           883:                                $(DECOMMENT) $$EXPDIR/$$j  r >          \
        !           884:                                $$EXPDIR/$$j.strip;                     \
        !           885:                        if [ -s $$EXPDIR/$$j.strip ];                   \
        !           886:                        then (                                          \
        !           887:                            cd $$EXPDIR;                                \
        !           888:                            install $(INSTALL_FLAGS) $$j $$DSTDIR;      \
        !           889:                        );                                              \
        !           890:                        else                                            \
        !           891:                            echo Header file $$i/$$j not exported;      \
        !           892:                        fi;                                             \
        !           893:                        rm -f $$EXPDIR/$$j.strip;                       \
        !           894:                    done;                                               \
        !           895:                fi;                                                     \
        !           896:            );                                                          \
        !           897:        done
        !           898:        for i in ${EXPORT_LIB};                                         \
        !           899:        do                                                              \
        !           900:                $(MKDIRS) ${DSTROOT}${INCDIR}/bsd/$$i;  \
        !           901:                (cd $(SOURCE_DIR)/bsd/include/$$i;                                      \
        !           902:                install $(INSTALL_FLAGS) *.h ${DSTROOT}${INCDIR}/bsd/$$i;);     \
        !           903:        done
        !           904:        for i in ${MIGDIRS};                                            \
        !           905:        do                                                              \
        !           906:                $(MKDIRS) ${DSTROOT}${INCDIR}/$$i;                              \
        !           907:                (cd $(SOURCE_DIR)/$$i;                                  \
        !           908:                install $(INSTALL_FLAGS) *.defs ${DSTROOT}${INCDIR}/$$i;); \
        !           909:        done
        !           910:        for i in ${MIG_HFILES_EXP};                                     \
        !           911:        do                                                              \
        !           912:            install $(INSTALL_FLAGS) $$i ${DSTROOT}${INCDIR}/$$i;       \
        !           913:        done
        !           914:        :
        !           915:        : mach_debug is a special case
        !           916:        :
        !           917:        $(MKDIRS) ${DSTROOT}${LCLDIR}/${MACHDEBUGDIR}
        !           918:        install $(INSTALL_FLAGS) ${MACH_DEBUG_HFILE}                    \
        !           919:                                ${DSTROOT}${LCLDIR}/${MACHDEBUGDIR}
        !           920:        install $(INSTALL_FLAGS)                                                \
        !           921:                        $(SOURCE_DIR)/${MACHDEBUGDIR}/mach_debug.defs   \
        !           922:                                ${DSTROOT}${LCLDIR}/${MACHDEBUGDIR}
        !           923:        install $(INSTALL_FLAGS)                                                \
        !           924:                $(SOURCE_DIR)/${MACHDEBUGDIR}/mach_debug_types.defs     \
        !           925:                                ${DSTROOT}${LCLDIR}/${MACHDEBUGDIR}
        !           926:        :
        !           927:        : Install all headers into local include directory.
        !           928:        :
        !           929:        @cd ${SOURCE_DIR};                                              \
        !           930:        for i in ${LCLEXPORT};                                          \
        !           931:        do                                                              \
        !           932:            (cd $$i;                                                    \
        !           933:            $(MKDIRS) ${DSTROOT}${LCLDIR}/$$i;                          \
        !           934:            install $(INSTALL_FLAGS) *.h ${DSTROOT}${LCLDIR}/$$i;);     \
        !           935:        done
        !           936: 
        !           937: install_mi_compat_hdrs: DSTROOT ${SOURCE_DIR}/conf/compat_hdrs
        !           938:        @rm -rf compat
        !           939:        @for i in `cat ${SOURCE_DIR}/conf/compat_hdrs                   \
        !           940:                   | awk '{print $$2}' | sort | uniq`;                  \
        !           941:        do                                                              \
        !           942:                $(MKDIRS) ${DSTROOT}/${COMPATDIR}/$$i;                  \
        !           943:                $(MKDIRS) compat/$$i;                                   \
        !           944:        done
        !           945:        : creating compatability header files
        !           946:        @awk -f ${SOURCE_DIR}/conf/compat_hdrs.awk                      \
        !           947:                ${SOURCE_DIR}/conf/compat_hdrs
        !           948:        : installing compatability header files
        !           949:        @cd compat; for i in *;                                         \
        !           950:        do                                                              \
        !           951:                (cd $$i;install -c -m 444 *                     \
        !           952:                        ${DSTROOT}${COMPATDIR}/$$i);                    \
        !           953:        done
        !           954: 
        !           955: #
        !           956: # Install machine-dependent headers only.
        !           957: #
        !           958: install_md_hdrs: DSTROOT install_md_std_hdrs \
        !           959:        $(MACHINE_INSTALLHDRS)
        !           960: 
        !           961: install_md_std_hdrs: DSTROOT
        !           962:        @-for i in `echo ${MACHINE_EXPORT}`;                            \
        !           963:        do                                                              \
        !           964:            EXPDIR=`pwd`/exports;                                       \
        !           965:            [ -d $$EXPDIR ] || $(MKDIRS) $$EXPDIR;                              \
        !           966:            rm -f $$EXPDIR/*;                                           \
        !           967:            (cd $(SOURCE_DIR)/$$i;                                      \
        !           968:                hdrs=`echo *.h`;                                        \
        !           969:                if [ "$$hdrs" = '*.h' ]; then                           \
        !           970:                    echo No header files in $$i;                        \
        !           971:                else                                                    \
        !           972:                    for j in $$hdrs;                                    \
        !           973:                    do                                                  \
        !           974:                        DSTDIR=$(DSTROOT)$(INCDIR)/$$i;                 \
        !           975:                        [ -d $$DSTDIR ] || $(MKDIRS) $$DSTDIR;          \
        !           976:                        echo garbage > $$EXPDIR/$$j.strip;              \
        !           977:                        $(UNIFDEF) -UKERNEL_PRIVATE -UDRIVER_PRIVATE $$j > $$EXPDIR/$$j || \
        !           978:                        $(DECOMMENT) $$EXPDIR/$$j  r > $$EXPDIR/$$j.strip; \
        !           979:                        if [ -s $$EXPDIR/$$j.strip ];                   \
        !           980:                        then (                                          \
        !           981:                            cd $$EXPDIR;                                \
        !           982:                            install $(INSTALL_FLAGS) $$j $$DSTDIR;      \
        !           983:                        );                                              \
        !           984:                        else                                            \
        !           985:                            echo Header file $$i/$$j not exported;      \
        !           986:                        fi;                                             \
        !           987:                        rm -f $$EXPDIR/$$j.strip;                       \
        !           988:                    done;                                               \
        !           989:                fi;                                                     \
        !           990:            );                                                          \
        !           991:        done
        !           992:        for i in ${MACHINE_MIGDIRS};                                    \
        !           993:        do                                                              \
        !           994:                $(MKDIRS) ${DSTROOT}${INCDIR}/$$i;                              \
        !           995:                (cd $(SOURCE_DIR)/$$i;                                  \
        !           996:                install $(INSTALL_FLAGS) *.defs ${DSTROOT}${INCDIR}/$$i;); \
        !           997:        done
        !           998:        -cd ${SOURCE_DIR};                                              \
        !           999:        for i in `echo ${MACHINE_LCLEXPORT}`;                           \
        !          1000:        do                                                              \
        !          1001:            (cd $$i;                                                    \
        !          1002:            $(MKDIRS) ${DSTROOT}${LCLDIR}/$$i;                          \
        !          1003:            install $(INSTALL_FLAGS) *.h ${DSTROOT}${LCLDIR}/$$i;);     \
        !          1004:        done
        !          1005: 
        !          1006: install_md_compat_hdrs: DSTROOT ${MACHINE_COMPATHDRS}
        !          1007:        @if [ "${MACHINE_COMPATHDRS}" ];                                \
        !          1008:        then                                                            \
        !          1009:                rm -rf compat;                                          \
        !          1010:                for i in `cat ${MACHINE_COMPATHDRS}                     \
        !          1011:                           | awk '{print $$2}' | sort | uniq`;          \
        !          1012:                do                                                      \
        !          1013:                        $(MKDIRS) ${DSTROOT}/${COMPATDIR}/$$i;          \
        !          1014:                        $(MKDIRS) compat/$$i;                           \
        !          1015:                done;                                                   \
        !          1016:                awk -f ${SOURCE_DIR}/conf/compat_hdrs.awk               \
        !          1017:                        ${MACHINE_COMPATHDRS};                          \
        !          1018:                (                                                       \
        !          1019:                        cd compat; for i in *;                          \
        !          1020:                        do                                              \
        !          1021:                                (                                       \
        !          1022:                                        cd $$i;                         \
        !          1023:                                        install -c -m 444 *     \
        !          1024:                                          ${DSTROOT}${COMPATDIR}/$$i;   \
        !          1025:                                );                                      \
        !          1026:                        done;                                           \
        !          1027:                );                                                      \
        !          1028:        fi
        !          1029:        : installing "conversion compat" files if they exist
        !          1030:        @if [ -d ${SOURCE_DIR}/compat/${MACHINE} ];                     \
        !          1031:        then                                                            \
        !          1032:                cd ${SOURCE_DIR}/compat/${MACHINE};                     \
        !          1033:                for i in *;                                             \
        !          1034:                do                                                      \
        !          1035:                        if [ -d $$i ];                                  \
        !          1036:                        then                                            \
        !          1037:                                (cd $$i; install -c -m 444 *      \
        !          1038:                                        ${DSTROOT}${COMPATDIR}/$$i);    \
        !          1039:                        fi;                                             \
        !          1040:                done;                                                   \
        !          1041:        fi
        !          1042: 
        !          1043: 
        !          1044: #
        !          1045: #  Update the Makefile when any dependency files exist rather than only
        !          1046: #  when they are newer than the makefile (since it often gets touched
        !          1047: #  during reconfigurations when dependency files have yet to be
        !          1048: #  integrated).  The makefile is copied before doing any potential
        !          1049: #  integration so that the new and old versions can be compared when
        !          1050: #  done (by the SYS_RULE_* rules) to prevent re-building things when no
        !          1051: #  dependencies change.
        !          1052: #
        !          1053: #  N.B.  There is always an empty artificial dependency file M.d
        !          1054: #  (created by config) which will never be integrated and simply
        !          1055: #  prevents the wild-card expansion below from failing.
        !          1056: #
        !          1057: #  This seems redundant if we're always going to do it on exit.
        !          1058: #
        !          1059: #Makefile: *.${MD_SUFFIX}
        !          1060: #      ${EXIT_RULE}
        !          1061: #
        !          1062: .EXIT:
        !          1063:        ${EXIT_RULE}
        !          1064: 
        !          1065: #
        !          1066: #  Rules for components which are not part of the kernel proper or that
        !          1067: #  need to be built in a special manner.
        !          1068: #  These need to build without profiling, as it confuses awk script.
        !          1069: #
        !          1070: genassym.o: $(MACHINEDIR)/genassym.c
        !          1071:        ${KCC} -c $(CCONFIGFLAGS) $(CPP_FLAGS) $(MACHINE_CFLAGS) \
        !          1072:                ${VOLATILE} ${MACHINE_GENASSYM_FLAGS} \
        !          1073:                $(MACHINEDIR)/genassym.c 
        !          1074: 
        !          1075: genassym.s: $(MACHINEDIR)/genassym.c
        !          1076:        ${KCC} -S $(CCONFIGFLAGS) $(CPP_FLAGS) $(MACHINE_CFLAGS) \
        !          1077:                ${VOLATILE} ${MACHINE_GENASSYM_FLAGS} -arch ${MACHINE} \
        !          1078:                $(MACHINEDIR)/genassym.c
        !          1079: 
        !          1080: assym.h: genassym.s
        !          1081:        @rm -f assym.h
        !          1082:        awk -f $(MACHINEDIR)/genassym.awk < genassym.s > assym.h
        !          1083: 
        !          1084: ioconf.o: ioconf.c
        !          1085:        ${C_RULE_1A}${C_RULE_1B}
        !          1086:        ${C_RULE_2}
        !          1087:        ${C_RULE_3}
        !          1088:        ${C_RULE_4}
        !          1089: 
        !          1090: #
        !          1091: # This rule insures that the subr_prof.c does NOT get compiled with 
        !          1092: # profiling. It implements mcount() and profiling it leads to recursion.
        !          1093: #
        !          1094: 
        !          1095: subr_prof.o: $(SOURCE_DIR)/bsd/kern/subr_prof.c
        !          1096:        $(KCC) -c $(CCONFIGFLAGS) $(CPP_FLAGS) $(MACHINE_CFLAGS) \
        !          1097:                $(SOURCE_DIR)/bsd/kern/subr_prof.c
        !          1098: 
        !          1099: 
        !          1100: #
        !          1101: #  This macro is replaced by the set of rules which build everything in
        !          1102: #  OBJS.  The extra dependencies for each object file are inserted
        !          1103: #  following this by md which uses the keys on the sentinel line
        !          1104: #  below.
        !          1105: #
        !          1106: 
        !          1107: %RULES
        !          1108: 
        !          1109: #
        !          1110: # Lord only knows what this is for, but config spit's out a reference
        !          1111: #
        !          1112: includelinks:
        !          1113: 
        !          1114: DSTROOT:
        !          1115:        @if [ -n "${$@}" ]; \
        !          1116:        then \
        !          1117:                exit 0; \
        !          1118:        else \
        !          1119:                echo Must define $@; \
        !          1120:                exit 1; \
        !          1121:        fi
        !          1122: 
        !          1123: ALWAYS:
        !          1124: 
        !          1125: -include Makedep

unix.superglobalmegacorp.com

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