SOURCE_DIR=..
IDENT=-DCMU -DMM_BUGFIX -DMM_XXX -DCMUCS -DMAXDSIZ="33554432" -DMACH -DINET
#
# Mach Operating System
# Copyright (c) 1986 Carnegie-Mellon University
# All rights reserved.  The CMU software License Agreement specifies
# the terms and conditions for use and redistribution.
#  
######################################################################
# HISTORY
# 20-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Always remove and rebuild kern/ when dependencies change.
#
# 17-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	More dependencies on kern/ files.
#
# 11-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Simplify B_RULEs to decode directly from the source directory.
#
#  7-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Build MiG-generated interfaces in the build directory.
#	Unfortunately, the generated file "mach.h" conflicts with the
#	option file of the same name, so the interfaces get built in a
#	subdirectory.
#
#  7-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Decode binary (".b") files into object files.
#
#  2-Jun-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Temporarily added rules to make "strings.h" until MiG can be
#	convinced not to include it unless strings are being used.
#
# 31-Mar-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Allow source directory to be other than "..".
#
# 31-Mar-88  Robert Baron (rvb) at Carnegie-Mellon University
#	Need to have ${VOLATILE} for genassym
#
# 28-Mar-88  Robert Baron (rvb) at Carnegie-Mellon University
#	Add macros VOLATILE and FORCE_VOLATILE as per change in
#	conf/files.<machine> file:
#	VOLATILE	is included if the file contains the ansi C
#			 volatile keyword
#	FORCE_VOLATILE	is included if the file has volatile memory 
#			references, but does not use declare them
#			correctly.
#	(also see comment in config/mkmakefile.c)
#
# 29-Feb-88  Robert Baron (rvb) at Carnegie-Mellon University
#	Add VOLATILE macro which is fed to the preprocessor to macro define
#	the "keyword" volatile to an empty string.  On gcc builds, the
#	local Makefile will define VOLATILE= which lets the volatile
#	definitions show thru.
#
# 18-May-88  Mike Accetta (mja) at Carnegie-Mellon University
#	Add .PRECIOUS target to prevent Makefile from ever being
#	deleted on interrupt.
#	[ V5.1(XF25) ]
#
# 09-Apr-88  Mike Accetta (mja) at Carnegie-Mellon University
#	Corrected object and binary rules to permit errors and remove
#	target before copying in new version (in case it is not
#	writeable);  added version file for patch level;  changed "md"
#	invocation to simply wildcard all files rather than only those
#	newer than "Makefile" since this can often cause files to be
#	overlooked if "Makefile" is touched before they are
#	incorporated.
#	[ V5.1(XF23) ]
#
#  6-Jan-88  Michael Young (mwyoung) at Carnegie-Mellon University
#	Change references from h/ to sys/.
#	Remove all but the most pertinent history.
#
# 15-Dec-87  Robert Baron (rvb) at Carnegie-Mellon University
#	Add rules to profile a system as it is build.  The target is
#	gprof.
#
# 09-Nov-87  Mike Accetta (mja) at Carnegie-Mellon University
#	Update LDDEPS to include remaining files used by .swap.sys rule
#	in order to work with RCS; add CFILES dependency to "tags"
#	rule;  added new SYSDEPS definition;  change to create
#	symbols.sort in build directory;  fix to use explicit names in
#	version files to work with RCS;  add new "checkout" rule to
#	permit manual extraction of files from RCS when the
#	dependencies aren't current;  added KCC and KCPP definitions
#	for compiling kernel modules to clear the default search list
#	to prevent accidental inclusion of external include files
#	(especially important when working with header files in RCS
#	where this can easily occur from a missing dependency and a
#	checked-in source).
#	[ V5.1(XF21) ]
#
# 24-Oct-87  David Black (dlb) at Carnegie-Mellon University
#	Name version files explicitly to avoid .BAK .CKP etc.
#
# 10-Oct-87  Mike Accetta (mja) at Carnegie-Mellon University
#	Updated to pass all four version component files to the
#	"newvers.sh" script (which now includes them as kernel
#	variables and creates a version suffix) and changed SYS_RULE_4
#	to also link kernel images with the version suffix provided by
#	this script;  corrected "clean" rule to use new "LOAD" symbol
#	(provided by the "config" program) to remove all configured
#	kernel images related files;  revised symbols.sort rule to
#	use a new MACHINEDIR variable so that it can be overridden
#	for use with directories other than ../machine
#	[ V5.1(XF18) ]
#
# 11-Mar-87  Mike Accetta (mja) at Carnegie-Mellon University
#	Flushed all the "features.h" stuff since this is now a machine
#	independent file.  The equivalent function is now performed by
#	the "doconf" script if an appropriate features file exists in
#	the "machine" directory.
#	[ V5.1(F6) ]
#
# 19-Jan-87  Mike Accetta (mja) at Carnegie-Mellon University
#	Created (from old Makefile.vax).
#	[ V5.1(F1) ]
#
# 01-Oct-86  Mike Accetta (mja) at Carnegie-Mellon University
#	Reorganized to support simplified config program:
#	- COPTS_P variable defines the options used differently when
#	  compiling profiled kernels
#	- LDOBJS is the set of special objects used by the kernel load(s)
#	- LDDEPS is the set of dependencies for the kernel load(s)
#	- SWAPDEPS is the set of dependencies for the swapping module(s)
#	- Kernel configurations are built from a default rule defined here
#	  instead of inside config;  an artificial .swap.sys rule is used 
#	  to trigger this for each swap configuration
#	- Standard rules for building objects in the various normal, driver,
#	  and profiling cases are also defined here instead of inside config.
#	
#	Removed special rules for param.c and replaced PARAM variable
#	with include of new "confdep.h" file now generated by config;
#	also changed ioconf.c to use standard rules.
#	
#	Revised version number processing to eliminate newvers.c program and
#	only increment the version number as part of the archival process
#       rather than on every build.
#
# 18-Apr-86  Robert V. Baron (rvb) at Carnegie-Mellon University
#	Introduce new make depend stuff.
#
######################################################################
#
# Copyright (c) 1980, 1986 Regents of the University of California.
# All rights reserved.  The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#

#
#  In order to move the link commands out of config and back into the
#  template makefile, config has been changed to emit a dendency rule
#  of the form *vmunix.sys: *vmunix.swap for each configuration so that
#  the common commands for building each configuration can be placed
#  directly in the template in the default rule for the .sys.swap
#  dependency.
#
.SUFFIXES: .swap .sys

#
#  Make sure we don't remove this by accident if interrupted at the wrong
#  time.
#
.PRECIOUS: Makefile


#
#  Compilation components
#
CC=	cc
CPP=	${CC} -ES
C2=	/lib/c2
LD=	ld
ENCODE=	uuencode
DECODE=	uudecode
VOLATILE="-Dvolatile=" 
FORCE_VOLATILE=

KCC=	CPATH=. ${CC}
KCPP=	${KCC} -ES

#
#  This changed in the 4.3 CPP from .n to .d
#
MD_SUFFIX=d

#
#  Pre-processor enviornment
#
DEPENDS=  -MD
INCLUDES= -I$(SOURCE_DIR) -I. -I$(SOURCE_DIR)/sys
LINTOPTS= ${INCLUDES} ${IDENT} -DKERNEL

#
#  Common C-compilation flags
#
COPTS_P=${DEPENDS} ${LINTOPTS}
COPTS=	${COPTS_P}
CFLAGS=	-O ${COPTS}

#
#  Common assembly flags
#
SFLAGS=	${DEPENDS} ${INCLUDES} ${IDENT} -DKERNEL -DASSEMBLER


#
#  Path name of the version identification file.
#
FEATURES=$(SOURCE_DIR)/machine/FEATURES.h
VERSION_FILES= \
	$(SOURCE_DIR)/conf/version.major \
	$(SOURCE_DIR)/conf/version.minor \
	$(SOURCE_DIR)/conf/version.variant \
	$(SOURCE_DIR)/conf/version.edit \
	$(SOURCE_DIR)/conf/version.patch

#
#  LDOBJS is the set of object files which comprise the kernel.
#  It is used both in the dependency list for each *vmunix.swap
#  rule emitted by config and also in the .sys.swap rule
#  below which links the kernel from these objects.
#  
#  LDOBJS_PREFIX and LDOBJS_SUFFIX are defined in the machine
#  dependent Makefile (if necessary).
#
LDOBJS=${LDOBJS_PREFIX} locore.o ${OBJS} ioconf.o ${LDOBJS_SUFFIX}

#
#  LDDEPS is the set of extra dependencies associated with each
#  *vmunix.swap rule (in addition to $LDOBJS and the swap*.o file).
#
#  LDDEPS_PREFIX is defined in the machine dependent Makefile
#  (if necessary).
#
LDDEPS=${LDDEPS_PREFIX} ${VERSION_FILES} \
	$(SOURCE_DIR)/conf/newvers.sh $(SOURCE_DIR)/conf/copyright symbols.sort

#
#  SWAPDEPS is the set of extra dependencies associated with each
#  swap*.o rule emitted by config (in addition to the
#  ../machine/swap*.c file).
#
#  SWAPDEPS_PREFIX is defined in the machine dependent Makefile
#  (if necessary).
#
SWAPDEPS=${SWAPDEPS_PREFIX} 

#
#  SYSDEPS is the set of extra dependencies associated with each
#  *vmunix rule (in addition to *vmunix.sys).
#
#  SYSDEPS_PREFIX is defined in the machine dependent Makefile
#  (if necessary).
#
SYSDEPS=${SYSDEPS_PREFIX}



#
#  Compilation rules to generate *vmunix from *vmunix.sys
#
SYS_RULE_1=@echo checking for new dependencies; cp Makefile Makefile.cmp
SYS_RULE_2=md -f -d `ls *.${MD_SUFFIX}`
SYS_RULE_3=@-\
	   cmp -s Makefile Makefile.cmp; \
	   if [ "$$?" != 0 -a -f Makefile.cmp ]; \
	   then \
               make $@.sys Makefile; \
	       rm -f Makefile.cmp; \
	   else \
	       exit 0; \
	   fi
SYS_RULE_4=@eval `awk 'NR==1{S=$$1;next;}\
END {\
  C = "ln $@.sys $@";\
  if (S != "") {\
    C = C "; ln $@ $@" S; \
    printf "rm -f $@%s; ", S; \
  }\
  printf "echo \"%s\"; %s\n", C, C; \
}' vers.suffix`

#
# Compilation rules to generate .o from .b
#
B_RULE_1A=rm -f $*.o; ${DECODE} 
B_RULE_1B=$*.b

#
# Compilation rules to generate .o from .o
#
O_RULE_1A=rm -f $*.o; cp 
O_RULE_1B=$*.o .

#
# Compilation rules to generate .o from .s
#
S_RULE_1A=${KCPP} ${SFLAGS} 
S_RULE_1B=$*.s >$*.i 
S_RULE_2=${AS} -o $*.o $*.i
S_RULE_3=rm -f $*.i

#
# Compilation rules to generate .o from .c for normal files
#
C_RULE_1A=${KCC} -c -O ${COPTS} 
C_RULE_1B=$*.c
C_RULE_2=
C_RULE_3=
C_RULE_4=

#
# Compilation rules to generate .o from .c for driver files
#
C_RULE_1A_D=${C_RULE_1A}
C_RULE_1B_D=${C_RULE_1B}
C_RULE_2_D=${C_RULE_2}
C_RULE_3_D=${C_RULE_3}
C_RULE_4_D=${C_RULE_4}

#
# Compilation rules to generate .o from .c for profiling routine files
#
C_RULE_1A_P=${KCC} -c -S ${COPTS_P} 
C_RULE_1B_P=${C_RULE_1B}
C_RULE_2_P=ex - $*.s < ${GPROF.EX}
C_RULE_3_P=${AS} -o $*.o $*.s
C_RULE_4_P=rm -f $*.s



#
#  This must be here before any rules are possibly defined by the
#  machine dependent makefile fragment so that a plain "make" command
#  always works.  The config program will emit an appropriate rule to
#  cause "all" to depend on every *vmunix configuration it generates.
#

default: all

gprof: kgmon_on all kgmon_off

kgmon_on:
	kgmon -r -b

kgmon_off:
	kgmon -h -p
	gprof /mach >GPROF


#
#  Theses macros are filled in by the config program depending on the
#  current configuration.  The MACHDEP macro is replaced by the
#  contents of the machine dependent makefile template and the others
#  are replaced by the corresponding symbol definitions for the
#  configuration.
#

#
# Mach Operating System
# Copyright (c) 1986 Carnegie-Mellon University
# All rights reserved.  The CMU software License Agreement
# specifies the terms and conditions for use and redistribution.
#
######################################################################
# HISTORY
# {1}	11-Aug-88  David Bohman (bohman) at addison.andrew.cmu.edu
# 	Created from Makefile.sun3
# 
#

######################################################################
#BEGIN	Machine dependent Makefile fragment for the Macintosh II
######################################################################

CC=	cc -m68020
AS=	as -m68020

LD=	/bin/ld

KCC=	CPATH=. ${CC}
KCPP=	${KCC} -E

LDFLAGS=-N -e _start -X -T 4000
LIBS=

LDDEPS_PREFIX=
SWAPDEPS_PREFIX=
OBJSDEPS=

AHEADS=

LDOBJS_PREFIX=
LDOBJS_SUFFIX=

#
#  Special rule to temporarily create links to external include
#  files used by the debugger until this dependency is eliminated.
#

access.o:	a.out.h ctype.h setjmp.h stab.h

a.out.h ctype.h setjmp.h stab.h:
	ln -s /usr/include/$@ $@

#
#  Special rule to generate the locore.c from ../mac2/locore.c
#
LOCORE_DEPS=
LOCORE_HEADS=

locore.c: $(SOURCE_DIR)/mac2/locore.s ${LOCORE_DEPS}
	@rm -f $@
	cp $(SOURCE_DIR)/mac2/locore.s $@

#
#  Compilation rules to generate .o from .c for normal files
#
C_RULE_1A=${KCC} -c -O ${COPTS} -fno-defer-pop 
C_RULE_1B=$*.c
C_RULE_2=
C_RULE_3=
C_RULE_4=

#
#  Compilation rules to generate .o from .c for profiling routine files
#
C_RULE_1A_P=echo "not implemented"
C_RULE_2_P=
C_RULE_3_P=
C_RULE_4_P=
######################################################################
#END	 Machine dependent Makefile fragment for the SUN3
######################################################################

OBJS=afs_buffer.o afs_cache.o afs_call.o afs_callback.o afs_daemons.o \
	afs_dir.o afs_gateway.o afs_istuff.o afs_lock.o afs_osi.o \
	afs_osifile.o afs_osinet.o afs_physio.o afs_pioctl.o \
	afs_resource.o afs_vfsops.o afs_vnodeops.o fcrypt.o \
	rxkad_client.o rxkad_common.o nfs_gateway.o Kcallback.ss.o \
	Kvice.cs.o Kvice.xdr.o afsaux.o afsvlint.cs.o afsvlint.xdr.o \
	cmu_syscalls.o init_main.o init_sysent.o kern_acct.o \
	kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o \
	kern_mman.o kern_proc.o kern_prot.o kern_resource.o kern_sig.o \
	kern_subr.o kern_synch.o kern_time.o kern_xxx.o mach_process.o \
	mach_signal.o quota_sys.o subr_log.o subr_prf.o subr_rmap.o \
	subr_xxx.o sys_generic.o sys_socket.o tty.o tty_cmupty.o \
	tty_conf.o tty_pty.o tty_subr.o tty_tty.o ufs_alloc.o \
	ufs_dsort.o ufs_inode.o ufs_physio.o ufs_subr.o ufs_tables.o \
	ufs_xxx.o uipc_domain.o uipc_mbuf.o uipc_proto.o uipc_socket.o \
	uipc_socket2.o uipc_syscalls.o uipc_usrreq.o device_pager.o \
	inode_pager.o ux_exception.o param.o ast.o clock_prim.o debug.o \
	exception.o host.o iprintf.o lock.o mach_factor.o ipc_basics.o \
	ipc_copyin.o ipc_copyout.o ipc_host.o ipc_kport.o ipc_kset.o \
	ipc_pobj.o ipc_port.o ipc_tt.o ipc_globals.o ipc_mports.o \
	ipc_prims.o ipc_ptraps.o kalloc.o mach_net.o mach_timedev.o \
	mach_user_internal.o machine.o mfs_prim.o mig_support.o \
	parallel.o processor.o queue.o sched_prim.o slave.o \
	syscall_emulation.o syscall_subr.o syscall_sw.o task.o thread.o \
	thread_swap.o timer.o zalloc.o exc_server.o exc_user.o \
	mach_host_server.o mach_server.o memory_object_default_user.o \
	memory_object_user.o mach_debug_server.o af.o dli.o if.o \
	if_loop.o netisr.o raw_cb.o raw_usrreq.o route.o if_ether.o in.o \
	in_pcb.o in_proto.o ip_icmp.o ip_input.o ip_output.o raw_ip.o \
	tcp_debug.o tcp_input.o tcp_output.o tcp_subr.o tcp_timer.o \
	tcp_usrreq.o udp_usrreq.o xdr.o xdr_array.o xdr_mem.o rx.o \
	rx_bcrypt.o rx_clock.o rx_event.o rx_globals.o rx_kernel.o \
	rx_null.o rx_vab.o xdr_rx.o bdev_vnodeops.o fifo_vnodeops.o \
	spec_subr.o spec_vnodeops.o ufs_bmap.o ufs_dir.o ufs_vfsops.o \
	ufs_vnodeops.o vfs.o vfs_bio.o vfs_conf.o vfs_dnlc.o vfs_io.o \
	vfs_lookup.o vfs_pathname.o vfs_syscalls.o vfs_sysnames.o \
	vfs_vnode.o memory_object.o vm_fault.o vm_init.o vm_kern.o \
	vm_map.o vm_object.o vm_pageout.o vm_pager.o vm_resident.o \
	vm_unix.o vm_user.o conf.o cons.o kb.o fdb.o fdbs.o key.o \
	mouse.o font1.o $(SOURCE_DIR)/mac2dev/font_524.o  $(SOURCE_DIR)/mac2dev/font_521.o  video.o \
	$(SOURCE_DIR)/mac2dev/drvr_120.o  via.o scc.o mscsi.o mhd.o if_en.o \
	if_enintr_catch.o mactrap.o macinit.o macemultrap.o macmemory.o \
	macostrap.o macostrap_tables.o macexception.o macintr.o \
	macuser.o macinst.o macinst_subr.o macbus_cycle.o macvia.o \
	macdevice.o macpmap.o macscsi_mgr.o slotmgr_principal.o \
	slotmgr_special.o slotmgr_advanced.o slotmgr_subr.o \
	slotmgr_SExecCode.o slotmgr_alloc.o slotmgr_dispatch.o \
	slotmgr_extra.o slotmgr_interrupts.o slotmgr_SCallIntr.o \
	slotmgr_CallDriver.o ostrap.o ostrap_tables.o mem.o virt.o \
	phys.o setjmp.o ivect.o mac2_mach_process.o ufs_machdep.o \
	autoconf.o clock.o machdep.o pcb.o pmap.o act.o softint.o \
	mac2_init.o mac2_exception.o trap.o in_cksum.o vm_machdep.o \
	strings.o 

CFILES=\
	$(SOURCE_DIR)/afs/afs_buffer.c \
	$(SOURCE_DIR)/afs/afs_cache.c \
	$(SOURCE_DIR)/afs/afs_call.c \
	$(SOURCE_DIR)/afs/afs_callback.c \
	$(SOURCE_DIR)/afs/afs_daemons.c \
	$(SOURCE_DIR)/afs/afs_dir.c \
	$(SOURCE_DIR)/afs/afs_gateway.c \
	$(SOURCE_DIR)/afs/afs_istuff.c \
	$(SOURCE_DIR)/afs/afs_lock.c \
	$(SOURCE_DIR)/afs/afs_osi.c \
	$(SOURCE_DIR)/afs/afs_osifile.c \
	$(SOURCE_DIR)/afs/afs_osinet.c \
	$(SOURCE_DIR)/afs/afs_physio.c \
	$(SOURCE_DIR)/afs/afs_pioctl.c \
	$(SOURCE_DIR)/afs/afs_resource.c \
	$(SOURCE_DIR)/afs/afs_vfsops.c \
	$(SOURCE_DIR)/afs/afs_vnodeops.c \
	$(SOURCE_DIR)/afs/fcrypt.c \
	$(SOURCE_DIR)/afs/rxkad_client.c \
	$(SOURCE_DIR)/afs/rxkad_common.c \
	$(SOURCE_DIR)/afs/nfs_gateway.c \
	$(SOURCE_DIR)/afsint/Kcallback.ss.c \
	$(SOURCE_DIR)/afsint/Kvice.cs.c \
	$(SOURCE_DIR)/afsint/Kvice.xdr.c \
	$(SOURCE_DIR)/afsint/afsaux.c \
	$(SOURCE_DIR)/afsint/afsvlint.cs.c \
	$(SOURCE_DIR)/afsint/afsvlint.xdr.c \
	$(SOURCE_DIR)/bsd/cmu_syscalls.c \
	$(SOURCE_DIR)/bsd/init_main.c \
	$(SOURCE_DIR)/bsd/init_sysent.c \
	$(SOURCE_DIR)/bsd/kern_acct.c \
	$(SOURCE_DIR)/bsd/kern_clock.c \
	$(SOURCE_DIR)/bsd/kern_descrip.c \
	$(SOURCE_DIR)/bsd/kern_exec.c \
	$(SOURCE_DIR)/bsd/kern_exit.c \
	$(SOURCE_DIR)/bsd/kern_fork.c \
	$(SOURCE_DIR)/bsd/kern_mman.c \
	$(SOURCE_DIR)/bsd/kern_proc.c \
	$(SOURCE_DIR)/bsd/kern_prot.c \
	$(SOURCE_DIR)/bsd/kern_resource.c \
	$(SOURCE_DIR)/bsd/kern_sig.c \
	$(SOURCE_DIR)/bsd/kern_subr.c \
	$(SOURCE_DIR)/bsd/kern_synch.c \
	$(SOURCE_DIR)/bsd/kern_time.c \
	$(SOURCE_DIR)/bsd/kern_xxx.c \
	$(SOURCE_DIR)/bsd/mach_process.c \
	$(SOURCE_DIR)/bsd/mach_signal.c \
	$(SOURCE_DIR)/bsd/quota_sys.c \
	$(SOURCE_DIR)/bsd/subr_log.c \
	$(SOURCE_DIR)/bsd/subr_prf.c \
	$(SOURCE_DIR)/bsd/subr_rmap.c \
	$(SOURCE_DIR)/bsd/subr_xxx.c \
	$(SOURCE_DIR)/bsd/sys_generic.c \
	$(SOURCE_DIR)/bsd/sys_socket.c \
	$(SOURCE_DIR)/bsd/tty.c \
	$(SOURCE_DIR)/bsd/tty_cmupty.c \
	$(SOURCE_DIR)/bsd/tty_conf.c \
	$(SOURCE_DIR)/bsd/tty_pty.c \
	$(SOURCE_DIR)/bsd/tty_subr.c \
	$(SOURCE_DIR)/bsd/tty_tty.c \
	$(SOURCE_DIR)/bsd/ufs_alloc.c \
	$(SOURCE_DIR)/bsd/ufs_dsort.c \
	$(SOURCE_DIR)/bsd/ufs_inode.c \
	$(SOURCE_DIR)/bsd/ufs_physio.c \
	$(SOURCE_DIR)/bsd/ufs_subr.c \
	$(SOURCE_DIR)/bsd/ufs_tables.c \
	$(SOURCE_DIR)/bsd/ufs_xxx.c \
	$(SOURCE_DIR)/bsd/uipc_domain.c \
	$(SOURCE_DIR)/bsd/uipc_mbuf.c \
	$(SOURCE_DIR)/bsd/uipc_proto.c \
	$(SOURCE_DIR)/bsd/uipc_socket.c \
	$(SOURCE_DIR)/bsd/uipc_socket2.c \
	$(SOURCE_DIR)/bsd/uipc_syscalls.c \
	$(SOURCE_DIR)/bsd/uipc_usrreq.c \
	$(SOURCE_DIR)/builtin/device_pager.c \
	$(SOURCE_DIR)/builtin/inode_pager.c \
	$(SOURCE_DIR)/builtin/ux_exception.c \
	$(SOURCE_DIR)/conf/param.c \
	$(SOURCE_DIR)/kern/ast.c \
	$(SOURCE_DIR)/kern/clock_prim.c \
	$(SOURCE_DIR)/kern/debug.c \
	$(SOURCE_DIR)/kern/exception.c \
	$(SOURCE_DIR)/kern/host.c \
	$(SOURCE_DIR)/kern/iprintf.c \
	$(SOURCE_DIR)/kern/lock.c \
	$(SOURCE_DIR)/kern/mach_factor.c \
	$(SOURCE_DIR)/kern/ipc_basics.c \
	$(SOURCE_DIR)/kern/ipc_copyin.c \
	$(SOURCE_DIR)/kern/ipc_copyout.c \
	$(SOURCE_DIR)/kern/ipc_host.c \
	$(SOURCE_DIR)/kern/ipc_kport.c \
	$(SOURCE_DIR)/kern/ipc_kset.c \
	$(SOURCE_DIR)/kern/ipc_pobj.c \
	$(SOURCE_DIR)/kern/ipc_port.c \
	$(SOURCE_DIR)/kern/ipc_tt.c \
	$(SOURCE_DIR)/kern/ipc_globals.c \
	$(SOURCE_DIR)/kern/ipc_mports.c \
	$(SOURCE_DIR)/kern/ipc_prims.c \
	$(SOURCE_DIR)/kern/ipc_ptraps.c \
	$(SOURCE_DIR)/kern/kalloc.c \
	$(SOURCE_DIR)/kern/mach_net.c \
	$(SOURCE_DIR)/kern/mach_timedev.c \
	$(SOURCE_DIR)/kern/mach_user_internal.c \
	$(SOURCE_DIR)/kern/machine.c \
	$(SOURCE_DIR)/kern/mfs_prim.c \
	$(SOURCE_DIR)/kern/mig_support.c \
	$(SOURCE_DIR)/kern/parallel.c \
	$(SOURCE_DIR)/kern/processor.c \
	$(SOURCE_DIR)/kern/queue.c \
	$(SOURCE_DIR)/kern/sched_prim.c \
	$(SOURCE_DIR)/kern/slave.c \
	$(SOURCE_DIR)/kern/syscall_emulation.c \
	$(SOURCE_DIR)/kern/syscall_subr.c \
	$(SOURCE_DIR)/kern/syscall_sw.c \
	$(SOURCE_DIR)/kern/task.c \
	$(SOURCE_DIR)/kern/thread.c \
	$(SOURCE_DIR)/kern/thread_swap.c \
	$(SOURCE_DIR)/kern/timer.c \
	$(SOURCE_DIR)/kern/zalloc.c \
	./mach/exc_server.c \
	./mach/exc_user.c \
	./mach/mach_host_server.c \
	./mach/mach_server.c \
	./mach/memory_object_default_user.c \
	./mach/memory_object_user.c \
	./mach_debug/mach_debug_server.c \
	$(SOURCE_DIR)/net/af.c \
	$(SOURCE_DIR)/net/dli.c \
	$(SOURCE_DIR)/net/if.c \
	$(SOURCE_DIR)/net/if_loop.c \
	$(SOURCE_DIR)/net/netisr.c \
	$(SOURCE_DIR)/net/raw_cb.c \
	$(SOURCE_DIR)/net/raw_usrreq.c \
	$(SOURCE_DIR)/net/route.c \
	$(SOURCE_DIR)/netinet/if_ether.c \
	$(SOURCE_DIR)/netinet/in.c \
	$(SOURCE_DIR)/netinet/in_pcb.c \
	$(SOURCE_DIR)/netinet/in_proto.c \
	$(SOURCE_DIR)/netinet/ip_icmp.c \
	$(SOURCE_DIR)/netinet/ip_input.c \
	$(SOURCE_DIR)/netinet/ip_output.c \
	$(SOURCE_DIR)/netinet/raw_ip.c \
	$(SOURCE_DIR)/netinet/tcp_debug.c \
	$(SOURCE_DIR)/netinet/tcp_input.c \
	$(SOURCE_DIR)/netinet/tcp_output.c \
	$(SOURCE_DIR)/netinet/tcp_subr.c \
	$(SOURCE_DIR)/netinet/tcp_timer.c \
	$(SOURCE_DIR)/netinet/tcp_usrreq.c \
	$(SOURCE_DIR)/netinet/udp_usrreq.c \
	$(SOURCE_DIR)/rpc/xdr.c \
	$(SOURCE_DIR)/rpc/xdr_array.c \
	$(SOURCE_DIR)/rpc/xdr_mem.c \
	$(SOURCE_DIR)/rx/rx.c \
	$(SOURCE_DIR)/rx/rx_bcrypt.c \
	$(SOURCE_DIR)/rx/rx_clock.c \
	$(SOURCE_DIR)/rx/rx_event.c \
	$(SOURCE_DIR)/rx/rx_globals.c \
	$(SOURCE_DIR)/rx/rx_kernel.c \
	$(SOURCE_DIR)/rx/rx_null.c \
	$(SOURCE_DIR)/rx/rx_vab.c \
	$(SOURCE_DIR)/rx/xdr_rx.c \
	$(SOURCE_DIR)/specfs/bdev_vnodeops.c \
	$(SOURCE_DIR)/specfs/fifo_vnodeops.c \
	$(SOURCE_DIR)/specfs/spec_subr.c \
	$(SOURCE_DIR)/specfs/spec_vnodeops.c \
	$(SOURCE_DIR)/vfs/ufs_bmap.c \
	$(SOURCE_DIR)/vfs/ufs_dir.c \
	$(SOURCE_DIR)/vfs/ufs_vfsops.c \
	$(SOURCE_DIR)/vfs/ufs_vnodeops.c \
	$(SOURCE_DIR)/vfs/vfs.c \
	$(SOURCE_DIR)/vfs/vfs_bio.c \
	$(SOURCE_DIR)/vfs/vfs_conf.c \
	$(SOURCE_DIR)/vfs/vfs_dnlc.c \
	$(SOURCE_DIR)/vfs/vfs_io.c \
	$(SOURCE_DIR)/vfs/vfs_lookup.c \
	$(SOURCE_DIR)/vfs/vfs_pathname.c \
	$(SOURCE_DIR)/vfs/vfs_syscalls.c \
	$(SOURCE_DIR)/vfs/vfs_sysnames.c \
	$(SOURCE_DIR)/vfs/vfs_vnode.c \
	$(SOURCE_DIR)/vm/memory_object.c \
	$(SOURCE_DIR)/vm/vm_fault.c \
	$(SOURCE_DIR)/vm/vm_init.c \
	$(SOURCE_DIR)/vm/vm_kern.c \
	$(SOURCE_DIR)/vm/vm_map.c \
	$(SOURCE_DIR)/vm/vm_object.c \
	$(SOURCE_DIR)/vm/vm_pageout.c \
	$(SOURCE_DIR)/vm/vm_pager.c \
	$(SOURCE_DIR)/vm/vm_resident.c \
	$(SOURCE_DIR)/vm/vm_unix.c \
	$(SOURCE_DIR)/vm/vm_user.c \
	$(SOURCE_DIR)/mac2/conf.c \
	$(SOURCE_DIR)/mac2dev/cons.c \
	$(SOURCE_DIR)/mac2dev/kb.c \
	$(SOURCE_DIR)/mac2dev/fdb.c \
	$(SOURCE_DIR)/mac2dev/key.c \
	$(SOURCE_DIR)/mac2dev/mouse.c \
	$(SOURCE_DIR)/mac2dev/video.c \
	$(SOURCE_DIR)/mac2dev/via.c \
	$(SOURCE_DIR)/mac2dev/scc.c \
	$(SOURCE_DIR)/mac2dev/mscsi.c \
	$(SOURCE_DIR)/mac2dev/mhd.c \
	$(SOURCE_DIR)/mac2if/if_en.c \
	$(SOURCE_DIR)/mac2emul/macinit.c \
	$(SOURCE_DIR)/mac2emul/macemultrap.c \
	$(SOURCE_DIR)/mac2emul/macmemory.c \
	$(SOURCE_DIR)/mac2emul/macostrap.c \
	$(SOURCE_DIR)/mac2emul/macostrap_tables.c \
	$(SOURCE_DIR)/mac2emul/macexception.c \
	$(SOURCE_DIR)/mac2emul/macintr.c \
	$(SOURCE_DIR)/mac2emul/macinst.c \
	$(SOURCE_DIR)/mac2emul/macinst_subr.c \
	$(SOURCE_DIR)/mac2emul/macbus_cycle.c \
	$(SOURCE_DIR)/mac2emul/macvia.c \
	$(SOURCE_DIR)/mac2emul/macdevice.c \
	$(SOURCE_DIR)/mac2emul/macpmap.c \
	$(SOURCE_DIR)/mac2emul/macscsi_mgr.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_principal.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_special.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_advanced.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_subr.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_alloc.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_dispatch.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_extra.c \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_interrupts.c \
	$(SOURCE_DIR)/mac2/ostrap.c \
	$(SOURCE_DIR)/mac2/ostrap_tables.c \
	$(SOURCE_DIR)/mac2/mem.c \
	$(SOURCE_DIR)/mac2/ivect.c \
	$(SOURCE_DIR)/mac2/mac2_mach_process.c \
	$(SOURCE_DIR)/mac2/ufs_machdep.c \
	$(SOURCE_DIR)/mac2/autoconf.c \
	$(SOURCE_DIR)/mac2/clock.c \
	$(SOURCE_DIR)/mac2/machdep.c \
	$(SOURCE_DIR)/mac2/pcb.c \
	$(SOURCE_DIR)/mac2/pmap.c \
	$(SOURCE_DIR)/mac2/act.c \
	$(SOURCE_DIR)/mac2/softint.c \
	$(SOURCE_DIR)/mac2/mac2_init.c \
	$(SOURCE_DIR)/mac2/mac2_exception.c \
	$(SOURCE_DIR)/mac2/trap.c \
	$(SOURCE_DIR)/mac2/in_cksum.c \
	$(SOURCE_DIR)/mac2/vm_machdep.c \
	$(SOURCE_DIR)/mac2/strings.c 

SFILES=\
	$(SOURCE_DIR)/mac2dev/fdbs.s \
	$(SOURCE_DIR)/mac2dev/font1.s \
	$(SOURCE_DIR)/mac2if/if_enintr_catch.s \
	$(SOURCE_DIR)/mac2emul/mactrap.s \
	$(SOURCE_DIR)/mac2emul/macuser.s \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_SExecCode.s \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_SCallIntr.s \
	$(SOURCE_DIR)/mac2slotmgr/slotmgr_CallDriver.s \
	$(SOURCE_DIR)/mac2/virt.s \
	$(SOURCE_DIR)/mac2/phys.s \
	$(SOURCE_DIR)/mac2/setjmp.s 

BFILES=


#
#  Default rule used to build a *vmunix.sys configuration from the
#  object list and a particular *vmunix.swap module.  The *vmunix.swap
#  module is a normal object file compiled from the appropriate swap*.c
#  file and then copied to the *vmunix.swap name to trigger the full
#  kernel link using this default rule.
#

.swap.sys:
	@/bin/sh $(SOURCE_DIR)/conf/newvers.sh \
			 $(SOURCE_DIR)/conf/copyright \
			`cat ${VERSION_FILES}`
	@${CC} -c vers.c
	@rm -f $* $*.sys
	@echo loading $*.sys
	@${LD} ${LDFLAGS} -x ${LDOBJS} vers.o $*.swap ${LIBS}
	@echo rearranging symbols
	@-grep -v '^#' $(SOURCE_DIR)/machine/symbols.raw \
	    | sed 's/^	//' | sort -u > symbols.tmp
	@-mv -f symbols.tmp symbols.sort
	@-symorder symbols.sort a.out
	@size a.out
	@chmod 755 a.out
	@mv a.out $*.sys



#
#  OBJSDEPS is the set of files (defined in the machine dependent
#  template if necessary) which all objects depend on (such as an
#  in-line assembler expansion filter
#

${OBJS}: ${OBJSDEPS}



#
#  This macro is replaced by three rules per configuration, plus a
#  final definition for the LOAD symbol consisting of all configuration
#  names and a dependency of "all" on this symbol (so that the
#  "default" rule above will build everything).  The three rules in
#  each configuration are:
#
#  - a *vmunix from *vmunix.sys dependency using the SYS_RULE_* rules,
#  - a *vmunix.swap from LDDEPS, swap*.o, and LDDEPS dependency that
#    simply copies the swap file to the target name, and
#  - a swap*.o from swap*.c and SWAPDEPS dependency using the C_RULE_* rules.
#

vmunix: vmunix.sys ${SYSDEPS}
	${SYS_RULE_1}
	${SYS_RULE_2}
	${SYS_RULE_3}
	${SYS_RULE_4}

vmunix.sys: ${P} ${LDOBJS} ${LDDEPS}

vmunix.swap: swapgeneric.o
	@cp swapgeneric.o $@

swapgeneric.o: $(SOURCE_DIR)/machine/swapgeneric.c ${SWAPDEPS}
	${C_RULE_1A}$(SOURCE_DIR)/machine/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

LOAD = vmunix

all: ${LOAD}




#
#  Rules for components which are not part of the kernel proper or that
#  need to be built in a special manner.
#

genassym.o: $(SOURCE_DIR)/machine/genassym.c
	${KCC} -c ${COPTS_P} ${VOLATILE} $(SOURCE_DIR)/machine/genassym.c

assym.s: genassym.o
	${KCC} genassym.o
	./a.out > assym.s; rm -f a.out

locore.o: assym.s locore.c ${LOCORE_HEADS}
	${KCC} -E -DLOCORE -I$(SOURCE_DIR)/machine ${SFLAGS} locore.c >locore.i
	${AS} -o locore.o ${LOCORE_HEADS} locore.i
	rm locore.i

ioconf.o: ioconf.c
	${C_RULE_1A}${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

#
#  Mach IPC-based interfaces
#

MACH_DEFSFILES=\
	$(SOURCE_DIR)/mach/std_types.defs \
	$(SOURCE_DIR)/mach/mach_types.defs \
	${SOURCE_DIR}/mach/mach.defs \
	${SOURCE_DIR}/mach/mach_host.defs \
	${SOURCE_DIR}/mach/exc.defs \
	${SOURCE_DIR}/mach/memory_object.defs \
	${SOURCE_DIR}/mach/memory_object_default.defs \
	${SOURCE_DIR}/mach/device_types.defs \
	${SOURCE_DIR}/mach/device.defs \
	${SOURCE_DIR}/mach/monitor.defs

MACH_GENFILES=\
	./mach/mach_server.c \
	./mach/mach_user_internal.h \
	./mach/mach_interface.h \
	./mach/mach_host_server.c \
	./mach/mach_host.h \
	./mach/memory_object_server.c \
	./mach/memory_object_user.c \
	./mach/memory_object_user.h \
	./mach/memory_object_default_server.c \
	./mach/memory_object_default_user.c \
	./mach/memory_object_default.h \
	./mach/device_server.c \
	./mach/exc_server.c \
	./mach/exc_user.c \
	./mach/exc.h \
	./mach/monitor_server.c \
	./mach/monitor.h

MACH_MKFILE=	$(SOURCE_DIR)/mach/Makefile

$(MACH_GENFILES) : migfiles

migfiles :: $(MACH_DEFSFILES) $(MACH_MKFILE)
	rm -rf ./mach
	mkdir ./mach
	cp -p ${MACH_DEFSFILES} ./mach/
	cp -p $(MACH_MKFILE) ./mach/
	cd ./mach && make && touch ../migfiles


MACH_DEBUG_DEFSFILES=\
	$(SOURCE_DIR)/mach_debug/mach_debug_types.defs \
	$(SOURCE_DIR)/mach_debug/mach_debug.defs

MACH_DEBUG_GENFILES=\
	./mach_debug/mach_debug_server.c

MACH_DEBUG_MKFILE=	$(SOURCE_DIR)/mach_debug/Makefile

$(MACH_DEBUG_GENFILES) : migdebugfiles

migdebugfiles :: $(MACH_DEBUG_DEFSFILES) $(MACH_DEBUG_MKFILE)
	rm -rf ./mach_debug
	mkdir ./mach_debug
	cp -p $(MACH_DEBUG_DEFSFILES) ./mach_debug/
	cp -p $(MACH_DEBUG_MKFILE) ./mach_debug/
	cd ./mach_debug && make && touch ../migdebugfiles

#
#  Update the Makefile when any dependency files exist rather than only
#  when they are newer than the makefile (since it often gets touched
#  during reconfigurations when dependency files have yet to be
#  integrated).  The makefile is copied before doing any potential
#  integration so that the new and old versions can be compared when
#  done (by the SYS_RULE_* rules) to prevent re-building things when no
#  dependencies change.
#
#  N.B.  There is always an empty artificial dependency file M.d
#  (created by config) which will never be integrated and simply
#  prevents the wild-card expansion below from failing.
#

Makefile: *.${MD_SUFFIX}
	@cp Makefile Makefile.cmp
	md -f -d `ls *.${MD_SUFFIX}`

depend: 
	@echo you don\'t make depend any more.



#
#  Permit manually forced checkout of modules when the dependency
#  information is not current.
#

checkout:	${USE}



#
#  Clean up the current build directory.
#

clean:
	@for f in ${LOAD}; do echo rm -f $$f $$f.* && rm -f $$f $$f.*; done
	rm -f eddep tags *.o locore.i \
		errs linterrs makelinks *.log *LOG* ${CLEAN_EXTRA}


#
#  Run "lint" on the current build directory.  This will often be done
#  with a special configuration that defines the union of all options
#  used in all configurations so that all combinations are checked.
#  The LINTFILES variable allows lint to be easily run on an optional
#  sub-set of files specified on the make command line when this is
#  desired.
#

LINTFILES=$(SOURCE_DIR)/machine/Locore.c ${CFILES} $(SOURCE_DIR)/machine/swapgeneric.c ioconf.c

lint:	ALWAYS assym.s
	@lint -n -hbxn -DGENERIC ${LINTOPTS} ${LINTFILES} | \
	    grep -v 'struct/union .* never defined' | \
	    grep -v 'possible pointer alignment problem'

ALWAYS:



#
#  Standard rules which get only erratic (if any) use at CMU.
#
	
MACHINEDIR=$(SOURCE_DIR)/machine

symbols.sort: ${MACHINEDIR}/symbols.raw
	grep -v '^#' ${MACHINEDIR}/symbols.raw \
	    | sed 's/^	//' | sort -u > symbols.tmp
	mv -f symbols.tmp symbols.sort

links:
	egrep '#if' ${CFILES} ${SFILES} | sed -f $(SOURCE_DIR)/conf/defines | \
	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
	echo ${CFILES} ${SFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
	  sort -u | comm -23 - dontlink | \
	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
	echo 'rm -f udiv.o;ln -s ../GENERIC/udiv.o udiv.o' >> makelinks
	echo 'rm -f urem.o;ln -s ../GENERIC/urem.o urem.o' >> makelinks
	sh makelinks && rm -f dontlink

tags:	${CFILES}
	rm -f tags
	/usr/ucb/ctags ${CFILES}

print:
	@pr -f Makefile ../sys/TODO linterrs
	@/usr/ucb/ctags -x ${CFILES} | pr -f -h XREF
	@(size vmunix *.o) | pr -f -h sizes
	@ls -ls | pr -f
	@cd ../sys; ls -ls | pr -f ; pr -f *.m *.h
	@echo 'once upon a time ...'
	@cd ../machine; pr -f Locore.c scb.s locore.s
	@cd ../machine/inline; make print
	@cd ../sys; pr -f asm.sed Locore.c scb.s locore.s
	@pr -f ${CFILES} ${SFILES}



#
#  This macro is replaced by the set of rules which build everything in
#  OBJS.  The extra dependencies for each object file are inserted
#  following this by md which uses the keys on the sentinel line
#  below.
#

afs_buffer.o: $(SOURCE_DIR)/afs/afs_buffer.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_cache.o: $(SOURCE_DIR)/afs/afs_cache.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_call.o: $(SOURCE_DIR)/afs/afs_call.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_callback.o: $(SOURCE_DIR)/afs/afs_callback.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_daemons.o: $(SOURCE_DIR)/afs/afs_daemons.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_dir.o: $(SOURCE_DIR)/afs/afs_dir.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_gateway.o: $(SOURCE_DIR)/afs/afs_gateway.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_istuff.o: $(SOURCE_DIR)/afs/afs_istuff.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_lock.o: $(SOURCE_DIR)/afs/afs_lock.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_osi.o: $(SOURCE_DIR)/afs/afs_osi.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_osifile.o: $(SOURCE_DIR)/afs/afs_osifile.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_osinet.o: $(SOURCE_DIR)/afs/afs_osinet.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_physio.o: $(SOURCE_DIR)/afs/afs_physio.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_pioctl.o: $(SOURCE_DIR)/afs/afs_pioctl.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_resource.o: $(SOURCE_DIR)/afs/afs_resource.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_vfsops.o: $(SOURCE_DIR)/afs/afs_vfsops.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afs_vnodeops.o: $(SOURCE_DIR)/afs/afs_vnodeops.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

fcrypt.o: $(SOURCE_DIR)/afs/fcrypt.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rxkad_client.o: $(SOURCE_DIR)/afs/rxkad_client.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rxkad_common.o: $(SOURCE_DIR)/afs/rxkad_common.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

nfs_gateway.o: $(SOURCE_DIR)/afs/nfs_gateway.c
	${C_RULE_1A}$(SOURCE_DIR)/afs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

Kcallback.ss.o: $(SOURCE_DIR)/afsint/Kcallback.ss.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

Kvice.cs.o: $(SOURCE_DIR)/afsint/Kvice.cs.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

Kvice.xdr.o: $(SOURCE_DIR)/afsint/Kvice.xdr.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afsaux.o: $(SOURCE_DIR)/afsint/afsaux.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afsvlint.cs.o: $(SOURCE_DIR)/afsint/afsvlint.cs.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

afsvlint.xdr.o: $(SOURCE_DIR)/afsint/afsvlint.xdr.c
	${C_RULE_1A}$(SOURCE_DIR)/afsint/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

cmu_syscalls.o: $(SOURCE_DIR)/bsd/cmu_syscalls.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

init_main.o: $(SOURCE_DIR)/bsd/init_main.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

init_sysent.o: $(SOURCE_DIR)/bsd/init_sysent.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_acct.o: $(SOURCE_DIR)/bsd/kern_acct.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_clock.o: $(SOURCE_DIR)/bsd/kern_clock.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_descrip.o: $(SOURCE_DIR)/bsd/kern_descrip.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_exec.o: $(SOURCE_DIR)/bsd/kern_exec.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_exit.o: $(SOURCE_DIR)/bsd/kern_exit.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_fork.o: $(SOURCE_DIR)/bsd/kern_fork.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_mman.o: $(SOURCE_DIR)/bsd/kern_mman.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_proc.o: $(SOURCE_DIR)/bsd/kern_proc.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_prot.o: $(SOURCE_DIR)/bsd/kern_prot.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_resource.o: $(SOURCE_DIR)/bsd/kern_resource.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_sig.o: $(SOURCE_DIR)/bsd/kern_sig.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_subr.o: $(SOURCE_DIR)/bsd/kern_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_synch.o: $(SOURCE_DIR)/bsd/kern_synch.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_time.o: $(SOURCE_DIR)/bsd/kern_time.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kern_xxx.o: $(SOURCE_DIR)/bsd/kern_xxx.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_process.o: $(SOURCE_DIR)/bsd/mach_process.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_signal.o: $(SOURCE_DIR)/bsd/mach_signal.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

quota_sys.o: $(SOURCE_DIR)/bsd/quota_sys.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

subr_log.o: $(SOURCE_DIR)/bsd/subr_log.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

subr_prf.o: $(SOURCE_DIR)/bsd/subr_prf.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

subr_rmap.o: $(SOURCE_DIR)/bsd/subr_rmap.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

subr_xxx.o: $(SOURCE_DIR)/bsd/subr_xxx.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

sys_generic.o: $(SOURCE_DIR)/bsd/sys_generic.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

sys_socket.o: $(SOURCE_DIR)/bsd/sys_socket.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty.o: $(SOURCE_DIR)/bsd/tty.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty_cmupty.o: $(SOURCE_DIR)/bsd/tty_cmupty.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty_conf.o: $(SOURCE_DIR)/bsd/tty_conf.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty_pty.o: $(SOURCE_DIR)/bsd/tty_pty.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty_subr.o: $(SOURCE_DIR)/bsd/tty_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tty_tty.o: $(SOURCE_DIR)/bsd/tty_tty.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_alloc.o: $(SOURCE_DIR)/bsd/ufs_alloc.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_dsort.o: $(SOURCE_DIR)/bsd/ufs_dsort.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_inode.o: $(SOURCE_DIR)/bsd/ufs_inode.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_physio.o: $(SOURCE_DIR)/bsd/ufs_physio.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_subr.o: $(SOURCE_DIR)/bsd/ufs_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_tables.o: $(SOURCE_DIR)/bsd/ufs_tables.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_xxx.o: $(SOURCE_DIR)/bsd/ufs_xxx.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_domain.o: $(SOURCE_DIR)/bsd/uipc_domain.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_mbuf.o: $(SOURCE_DIR)/bsd/uipc_mbuf.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_proto.o: $(SOURCE_DIR)/bsd/uipc_proto.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_socket.o: $(SOURCE_DIR)/bsd/uipc_socket.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_socket2.o: $(SOURCE_DIR)/bsd/uipc_socket2.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_syscalls.o: $(SOURCE_DIR)/bsd/uipc_syscalls.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

uipc_usrreq.o: $(SOURCE_DIR)/bsd/uipc_usrreq.c
	${C_RULE_1A}$(SOURCE_DIR)/bsd/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

device_pager.o: $(SOURCE_DIR)/builtin/device_pager.c
	${C_RULE_1A}$(SOURCE_DIR)/builtin/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

inode_pager.o: $(SOURCE_DIR)/builtin/inode_pager.c
	${C_RULE_1A}$(SOURCE_DIR)/builtin/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ux_exception.o: $(SOURCE_DIR)/builtin/ux_exception.c
	${C_RULE_1A}$(SOURCE_DIR)/builtin/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

param.o: $(SOURCE_DIR)/conf/param.c
	${C_RULE_1A}$(SOURCE_DIR)/conf/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ast.o: $(SOURCE_DIR)/kern/ast.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

clock_prim.o: $(SOURCE_DIR)/kern/clock_prim.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

debug.o: $(SOURCE_DIR)/kern/debug.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

exception.o: $(SOURCE_DIR)/kern/exception.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

host.o: $(SOURCE_DIR)/kern/host.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

iprintf.o: $(SOURCE_DIR)/kern/iprintf.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

lock.o: $(SOURCE_DIR)/kern/lock.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_factor.o: $(SOURCE_DIR)/kern/mach_factor.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_basics.o: $(SOURCE_DIR)/kern/ipc_basics.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_copyin.o: $(SOURCE_DIR)/kern/ipc_copyin.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_copyout.o: $(SOURCE_DIR)/kern/ipc_copyout.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_host.o: $(SOURCE_DIR)/kern/ipc_host.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_kport.o: $(SOURCE_DIR)/kern/ipc_kport.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_kset.o: $(SOURCE_DIR)/kern/ipc_kset.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_pobj.o: $(SOURCE_DIR)/kern/ipc_pobj.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_port.o: $(SOURCE_DIR)/kern/ipc_port.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_tt.o: $(SOURCE_DIR)/kern/ipc_tt.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_globals.o: $(SOURCE_DIR)/kern/ipc_globals.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_mports.o: $(SOURCE_DIR)/kern/ipc_mports.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_prims.o: $(SOURCE_DIR)/kern/ipc_prims.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ipc_ptraps.o: $(SOURCE_DIR)/kern/ipc_ptraps.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kalloc.o: $(SOURCE_DIR)/kern/kalloc.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_net.o: $(SOURCE_DIR)/kern/mach_net.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_timedev.o: $(SOURCE_DIR)/kern/mach_timedev.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_user_internal.o: $(SOURCE_DIR)/kern/mach_user_internal.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

machine.o: $(SOURCE_DIR)/kern/machine.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mfs_prim.o: $(SOURCE_DIR)/kern/mfs_prim.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mig_support.o: $(SOURCE_DIR)/kern/mig_support.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

parallel.o: $(SOURCE_DIR)/kern/parallel.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

processor.o: $(SOURCE_DIR)/kern/processor.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

queue.o: $(SOURCE_DIR)/kern/queue.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

sched_prim.o: $(SOURCE_DIR)/kern/sched_prim.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slave.o: $(SOURCE_DIR)/kern/slave.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

syscall_emulation.o: $(SOURCE_DIR)/kern/syscall_emulation.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

syscall_subr.o: $(SOURCE_DIR)/kern/syscall_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

syscall_sw.o: $(SOURCE_DIR)/kern/syscall_sw.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

task.o: $(SOURCE_DIR)/kern/task.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

thread.o: $(SOURCE_DIR)/kern/thread.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

thread_swap.o: $(SOURCE_DIR)/kern/thread_swap.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

timer.o: $(SOURCE_DIR)/kern/timer.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

zalloc.o: $(SOURCE_DIR)/kern/zalloc.c
	${C_RULE_1A}$(SOURCE_DIR)/kern/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

exc_server.o: ./mach/exc_server.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

exc_user.o: ./mach/exc_user.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_host_server.o: ./mach/mach_host_server.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_server.o: ./mach/mach_server.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

memory_object_default_user.o: ./mach/memory_object_default_user.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

memory_object_user.o: ./mach/memory_object_user.c
	${C_RULE_1A}./mach/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mach_debug_server.o: ./mach_debug/mach_debug_server.c
	${C_RULE_1A}./mach_debug/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

af.o: $(SOURCE_DIR)/net/af.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

dli.o: $(SOURCE_DIR)/net/dli.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

if.o: $(SOURCE_DIR)/net/if.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

if_loop.o: $(SOURCE_DIR)/net/if_loop.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

netisr.o: $(SOURCE_DIR)/net/netisr.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

raw_cb.o: $(SOURCE_DIR)/net/raw_cb.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

raw_usrreq.o: $(SOURCE_DIR)/net/raw_usrreq.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

route.o: $(SOURCE_DIR)/net/route.c
	${C_RULE_1A}$(SOURCE_DIR)/net/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

if_ether.o: $(SOURCE_DIR)/netinet/if_ether.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

in.o: $(SOURCE_DIR)/netinet/in.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

in_pcb.o: $(SOURCE_DIR)/netinet/in_pcb.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

in_proto.o: $(SOURCE_DIR)/netinet/in_proto.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ip_icmp.o: $(SOURCE_DIR)/netinet/ip_icmp.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ip_input.o: $(SOURCE_DIR)/netinet/ip_input.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ip_output.o: $(SOURCE_DIR)/netinet/ip_output.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

raw_ip.o: $(SOURCE_DIR)/netinet/raw_ip.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_debug.o: $(SOURCE_DIR)/netinet/tcp_debug.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_input.o: $(SOURCE_DIR)/netinet/tcp_input.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_output.o: $(SOURCE_DIR)/netinet/tcp_output.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_subr.o: $(SOURCE_DIR)/netinet/tcp_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_timer.o: $(SOURCE_DIR)/netinet/tcp_timer.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

tcp_usrreq.o: $(SOURCE_DIR)/netinet/tcp_usrreq.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

udp_usrreq.o: $(SOURCE_DIR)/netinet/udp_usrreq.c
	${C_RULE_1A}$(SOURCE_DIR)/netinet/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

xdr.o: $(SOURCE_DIR)/rpc/xdr.c
	${C_RULE_1A}$(SOURCE_DIR)/rpc/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

xdr_array.o: $(SOURCE_DIR)/rpc/xdr_array.c
	${C_RULE_1A}$(SOURCE_DIR)/rpc/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

xdr_mem.o: $(SOURCE_DIR)/rpc/xdr_mem.c
	${C_RULE_1A}$(SOURCE_DIR)/rpc/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx.o: $(SOURCE_DIR)/rx/rx.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_bcrypt.o: $(SOURCE_DIR)/rx/rx_bcrypt.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_clock.o: $(SOURCE_DIR)/rx/rx_clock.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_event.o: $(SOURCE_DIR)/rx/rx_event.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_globals.o: $(SOURCE_DIR)/rx/rx_globals.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_kernel.o: $(SOURCE_DIR)/rx/rx_kernel.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_null.o: $(SOURCE_DIR)/rx/rx_null.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

rx_vab.o: $(SOURCE_DIR)/rx/rx_vab.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

xdr_rx.o: $(SOURCE_DIR)/rx/xdr_rx.c
	${C_RULE_1A}$(SOURCE_DIR)/rx/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

bdev_vnodeops.o: $(SOURCE_DIR)/specfs/bdev_vnodeops.c
	${C_RULE_1A}$(SOURCE_DIR)/specfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

fifo_vnodeops.o: $(SOURCE_DIR)/specfs/fifo_vnodeops.c
	${C_RULE_1A}$(SOURCE_DIR)/specfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

spec_subr.o: $(SOURCE_DIR)/specfs/spec_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/specfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

spec_vnodeops.o: $(SOURCE_DIR)/specfs/spec_vnodeops.c
	${C_RULE_1A}$(SOURCE_DIR)/specfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_bmap.o: $(SOURCE_DIR)/vfs/ufs_bmap.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_dir.o: $(SOURCE_DIR)/vfs/ufs_dir.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_vfsops.o: $(SOURCE_DIR)/vfs/ufs_vfsops.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_vnodeops.o: $(SOURCE_DIR)/vfs/ufs_vnodeops.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs.o: $(SOURCE_DIR)/vfs/vfs.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_bio.o: $(SOURCE_DIR)/vfs/vfs_bio.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_conf.o: $(SOURCE_DIR)/vfs/vfs_conf.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_dnlc.o: $(SOURCE_DIR)/vfs/vfs_dnlc.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_io.o: $(SOURCE_DIR)/vfs/vfs_io.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_lookup.o: $(SOURCE_DIR)/vfs/vfs_lookup.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_pathname.o: $(SOURCE_DIR)/vfs/vfs_pathname.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_syscalls.o: $(SOURCE_DIR)/vfs/vfs_syscalls.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_sysnames.o: $(SOURCE_DIR)/vfs/vfs_sysnames.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vfs_vnode.o: $(SOURCE_DIR)/vfs/vfs_vnode.c
	${C_RULE_1A}$(SOURCE_DIR)/vfs/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

memory_object.o: $(SOURCE_DIR)/vm/memory_object.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_fault.o: $(SOURCE_DIR)/vm/vm_fault.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_init.o: $(SOURCE_DIR)/vm/vm_init.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_kern.o: $(SOURCE_DIR)/vm/vm_kern.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_map.o: $(SOURCE_DIR)/vm/vm_map.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_object.o: $(SOURCE_DIR)/vm/vm_object.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_pageout.o: $(SOURCE_DIR)/vm/vm_pageout.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_pager.o: $(SOURCE_DIR)/vm/vm_pager.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_resident.o: $(SOURCE_DIR)/vm/vm_resident.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_unix.o: $(SOURCE_DIR)/vm/vm_unix.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_user.o: $(SOURCE_DIR)/vm/vm_user.c
	${C_RULE_1A}$(SOURCE_DIR)/vm/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

conf.o: $(SOURCE_DIR)/mac2/conf.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

cons.o: $(SOURCE_DIR)/mac2dev/cons.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

kb.o: $(SOURCE_DIR)/mac2dev/kb.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

fdb.o: $(SOURCE_DIR)/mac2dev/fdb.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

fdbs.o: $(SOURCE_DIR)/mac2dev/fdbs.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2dev/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

key.o: $(SOURCE_DIR)/mac2dev/key.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mouse.o: $(SOURCE_DIR)/mac2dev/mouse.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

font1.o: $(SOURCE_DIR)/mac2dev/font1.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2dev/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

video.o: $(SOURCE_DIR)/mac2dev/video.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

via.o: $(SOURCE_DIR)/mac2dev/via.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

scc.o: $(SOURCE_DIR)/mac2dev/scc.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mscsi.o: $(SOURCE_DIR)/mac2dev/mscsi.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mhd.o: $(SOURCE_DIR)/mac2dev/mhd.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2dev/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

if_en.o: $(SOURCE_DIR)/mac2if/if_en.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2if/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

if_enintr_catch.o: $(SOURCE_DIR)/mac2if/if_enintr_catch.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2if/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

mactrap.o: $(SOURCE_DIR)/mac2emul/mactrap.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2emul/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

macinit.o: $(SOURCE_DIR)/mac2emul/macinit.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macemultrap.o: $(SOURCE_DIR)/mac2emul/macemultrap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macmemory.o: $(SOURCE_DIR)/mac2emul/macmemory.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macostrap.o: $(SOURCE_DIR)/mac2emul/macostrap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macostrap_tables.o: $(SOURCE_DIR)/mac2emul/macostrap_tables.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macexception.o: $(SOURCE_DIR)/mac2emul/macexception.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macintr.o: $(SOURCE_DIR)/mac2emul/macintr.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macuser.o: $(SOURCE_DIR)/mac2emul/macuser.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2emul/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

macinst.o: $(SOURCE_DIR)/mac2emul/macinst.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macinst_subr.o: $(SOURCE_DIR)/mac2emul/macinst_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macbus_cycle.o: $(SOURCE_DIR)/mac2emul/macbus_cycle.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macvia.o: $(SOURCE_DIR)/mac2emul/macvia.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macdevice.o: $(SOURCE_DIR)/mac2emul/macdevice.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macpmap.o: $(SOURCE_DIR)/mac2emul/macpmap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

macscsi_mgr.o: $(SOURCE_DIR)/mac2emul/macscsi_mgr.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2emul/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_principal.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_principal.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_special.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_special.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_advanced.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_advanced.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_subr.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_subr.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_SExecCode.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_SExecCode.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

slotmgr_alloc.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_alloc.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_dispatch.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_dispatch.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_extra.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_extra.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_interrupts.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_interrupts.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

slotmgr_SCallIntr.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_SCallIntr.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

slotmgr_CallDriver.o: $(SOURCE_DIR)/mac2slotmgr/slotmgr_CallDriver.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2slotmgr/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

ostrap.o: $(SOURCE_DIR)/mac2/ostrap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ostrap_tables.o: $(SOURCE_DIR)/mac2/ostrap_tables.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mem.o: $(SOURCE_DIR)/mac2/mem.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

virt.o: $(SOURCE_DIR)/mac2/virt.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

phys.o: $(SOURCE_DIR)/mac2/phys.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

setjmp.o: $(SOURCE_DIR)/mac2/setjmp.s
	${S_RULE_1A}$(SOURCE_DIR)/mac2/${S_RULE_1B}
	${S_RULE_2}
	${S_RULE_3}

ivect.o: $(SOURCE_DIR)/mac2/ivect.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mac2_mach_process.o: $(SOURCE_DIR)/mac2/mac2_mach_process.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

ufs_machdep.o: $(SOURCE_DIR)/mac2/ufs_machdep.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

autoconf.o: $(SOURCE_DIR)/mac2/autoconf.c
	${C_RULE_1A_D}$(SOURCE_DIR)/mac2/${C_RULE_1B_D}
	${C_RULE_2_D}
	${C_RULE_3_D}
	${C_RULE_4_D}

clock.o: $(SOURCE_DIR)/mac2/clock.c
	${C_RULE_1A_D}$(SOURCE_DIR)/mac2/${C_RULE_1B_D}
	${C_RULE_2_D}
	${C_RULE_3_D}
	${C_RULE_4_D}

machdep.o: $(SOURCE_DIR)/mac2/machdep.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

pcb.o: $(SOURCE_DIR)/mac2/pcb.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

pmap.o: $(SOURCE_DIR)/mac2/pmap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

act.o: $(SOURCE_DIR)/mac2/act.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

softint.o: $(SOURCE_DIR)/mac2/softint.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mac2_init.o: $(SOURCE_DIR)/mac2/mac2_init.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

mac2_exception.o: $(SOURCE_DIR)/mac2/mac2_exception.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

trap.o: $(SOURCE_DIR)/mac2/trap.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

in_cksum.o: $(SOURCE_DIR)/mac2/in_cksum.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

vm_machdep.o: $(SOURCE_DIR)/mac2/vm_machdep.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}

strings.o: $(SOURCE_DIR)/mac2/strings.c
	${C_RULE_1A}$(SOURCE_DIR)/mac2/${C_RULE_1B}
	${C_RULE_2}
	${C_RULE_3}
	${C_RULE_4}



# DO NOT DELETE THIS LINE -- "make Makefile" uses it

