# 
# Mach Operating System
# Copyright (c) 1987 Carnegie-Mellon University
# All rights reserved.  The CMU software License Agreement specifies
# the terms and conditions for use and redistribution.
#
######################################################################
#
#	Builds RPC interfaces for kernel functions
#
######################################################################
# HISTORY
#  9-Dec-87  Michael Young (mwyoung) at Carnegie-Mellon University
#	Added pager_default interface.
#
#  3-Dec-87  Michael Young (mwyoung) at Carnegie-Mellon University
#	Added rule for "mach_user_internal.c".
#	Removed old history.
#

MIG = mig
MIGOPTS =

MACH_INTERFACE =  mach.h mach_server.c mach_user.c

PAGER_INTERFACE = pager.h pager_server.c pager_user.c
DEFAULT_PAGER_INTERFACE = pager_default.h pager_default_server.c pager_default_user.c
EXC_INTERFACE = exc.h exc_server.c exc_user.c

all: ${MACH_INTERFACE} ${PAGER_INTERFACE} ${DEFAULT_PAGER_INTERFACE} ${EXC_INTERFACE} mach_user_internal.h

mach_server.c:	machServer.c
	rm -f mach_server.c
	ln machServer.c mach_server.c

mach_user.c:	machUser.c
	rm -f mach_user.c
	ln machUser.c mach_user.c

mach.h machUser.c machServer.c:	mach.defs
	${MIG} ${MIGOPTS} mach.defs

pager_server.c:	pagerServer.c
	rm -f pager_server.c
	ln pagerServer.c pager_server.c

# Special post-MiG wizardry here:
pager_user.c:	pagerUser.c
	sed -e 's/INTEGER_8/INTERNAL_MEMORY/' < pagerUser.c > pager_user.c

pager.h pagerUser.c pagerServer.c:	pager.defs
	${MIG} ${MIGOPTS} pager.defs

pager_default_server.c:	pager_defaultServer.c
	rm -f pager_default_server.c
	ln pager_defaultServer.c pager_default_server.c

# Special post-MiG wizardry here:
pager_default_user.c:	pager_defaultUser.c
	sed -e 's/INTEGER_8/INTERNAL_MEMORY/' < pager_defaultUser.c > pager_default_user.c

pager_default.h pager_defaultUser.c pager_defaultServer.c:	pager_default.defs
	${MIG} ${MIGOPTS} pager_default.defs

exc_server.c:	excServer.c
	rm -f exc_server.c
	ln excServer.c exc_server.c

exc_user.c:	excUser.c
	rm -f exc_user.c
	ln excUser.c exc_user.c

exc.h excUser.c excServer.c:	exc.defs
	${MIG} ${MIGOPTS} exc.defs

mach_user_internal.h:	mach_user.c
	-egrep 'Routine ' < mach_user.c | sed -e 's/.*Routine \([a-z_]*\).*/#define \1 \1_EXTERNAL/' > mach_user_internal.h
	
../sys/mig_errors.h:	/usr/mach/include/mig_errors.h
	cp $? $@

clean:
	rm -f mach_server.c mach_user.c mach.h machServer.c machUser.c
	rm -f pager_server.c pager_user.c pager.h pagerServer.c pagerUser.c
	rm -f pager_default_server.c pager_default_user.c pager_default.h pager_defaultServer.c pager_defaultUser.c
	rm -f exc_server.c exc_user.c exc.h excServer.c excUser.c
	rm -f mig_errors.h
	rm -f mach_user_internal.h


#  Display any newly modified files

NEWSRC=.

NEWSRC: ${NEWSRC}

${NEWSRC}: Makefile *.[ch]
	@echo $?
