# Use our own user stubs for the msg rpcs, so we can make them time out, in
# case the program is fucked, or we guess the wrong signal thread.
msg-MIGUFLAGS = -D'MSG_IMPORTS=waittime 1000;'

# ick
MIGCOM = $(MIG) -cc cat - /dev/null

# Reply servers need special massaging of the code mig generates, to make
# them work correctly for error returns in some cases.
%_reply_S.h %_reply_S.c: %_reply.defs
	$(CPP) $(CPPFLAGS) -DSERVERPREFIX=S_ -x c $< \
	| $(MIGCOM) -sheader $*_reply_S.h -server $*_reply_S.raw -user /dev/null -header /dev/null \
	&& $(AWK) -f $(srcdir)/reply_mig_hack.awk < $*_reply_S.raw > $*_reply_S.c
# Normal servers
%_S.h %_S.c: %.defs
	$(CPP) $(CPPFLAGS) -DSERVERPREFIX=S_ -x c $< \
	| $(MIGCOM) -sheader $*_S.h -server $*_S.c -user /dev/null -header /dev/null
# User rpc stubs
%_U.h %_U.c: %.defs
	$(CPP) $(CPPFLAGS) $($*-MIGUFLAGS) -x c $< \
	| $(MIGCOM) -sheader /dev/null -server /dev/null -user $*_U.c -header $*_U.h

# MIG stubs are not yet ready for C++ compilation.
%_S.o %_U.o : COMPILE.post += -x c

NAT_GENERATED_FILES = notify_S.h notify_S.c \
	process_reply_S.h process_reply_S.c \
	msg_reply_S.h msg_reply_S.c msg_U.h msg_U.c \
	exc_request_U.h exc_request_U.c exc_request_S.h exc_request_S.c
