AR=ar
ARFLAGS=
CC=cc
CFLAGS=-I.

#
# Compiler
#

mc:		y.tab.o mc.o expr.o lex.yy.o symbtbl.o
		$(CC) $(CFLAGS) mc.o expr.o lex.yy.o symbtbl.o y.tab.o -o $@

y.tab.h:	modula.yac
		yacc -v -d modula.yac
		
y.tab.o:	y.tab.c y.tab.h mc.h symbtbl.h lex.yy.h expr.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

lex.yy.c:	modula.lex
		lex -v modula.lex

lex.yy.o:	lex.yy.c lex.yy.h mc.h symbtbl.h y.tab.h mctypes.h
		$(CC) $(CFLAGS) -c $<

symbtbl.o:	symbtbl.c symbtbl.h mc.h lex.yy.h y.tab.h expr.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

expr.o:		expr.c expr.h symbtbl.h mc.h y.tab.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

mc.o:		mc.c mc.h symbtbl.h lex.yy.h y.tab.h expr.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

#
# Libraries
#

lib:		libmclocal.a libmcremote.a
		echo >$@ libraries created
		@echo >>$@ ''
		@echo >>$@ libmclocal.a:
		@echo >>$@ =============
		@$(AR) vt libmclocal.a >>$@
		@echo >>$@ ''
		@echo >>$@ libmcremote.a:
		@echo >>$@ =============
		@$(AR) vt libmcremote.a >>$@
		@echo >>$@ ''
		@echo >>$@ object files of libmclocal.a contain:
		@echo >>$@ =====================================
		@$(AR) vw libmclocal.a >>$@
		@echo >>$@ ''
		@echo >>$@ object files of libmcremote.a contain:
		@echo >>$@ ======================================
		@$(AR) vw libmcremote.a >>$@

libmclocal.a:	mcfktns.o rpcfktns.o mcrpc_svc.o mcrpc_clnt.o mcrpc_xdr.o rpclocal.o mclocal.o
		$(AR) $(ARFLAGS) vru $@ $?

libmcremote.a:	mcfktns.o rpcfktns.o mcrpc_clnt.o mcrpc_xdr.o rpcremot.o mcremote.o
		$(AR) $(ARFLAGS) vru $@ $?

mcfktns.o:	mcfktns.c mcfktns.h mctypes.h rpcfktns.h os.h mclocal.h
		$(CC) $(CFLAGS) -c $<

rpcfktns.o:	rpcfktns.c rpcfktns.h mcrpc.h
		$(CC) $(CFLAGS) -c $<

rpclocal.o:	rpclocal.c rpclocal.h rpcfktns.h mcrpc.h mcfktns.h mctypes.h mclocal.h
		$(CC) $(CFLAGS) -c $<

mclocal.o:	mclocal.c mclocal.h rpclocal.h rpcfktns.h mcrpc.h mcfktns.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

rpcremot.o:	rpcremot.c rpcremot.h rpcfktns.h mcrpc.h mcfktns.h mctypes.h os.h
		$(CC) $(CFLAGS) -c $<

mcremote.o:	mcremote.c mcremote.h
		$(CC) $(CFLAGS) -c $<

mcrpc.h:	mcrpc.x
		rpcgen -h -o $@ $?

mcrpc_svc.c:	mcrpc.x
		rpcgen -m -o $@ $?

mcrpc_svc.o:	mcrpc_svc.c
		$(CC) $(CFLAGS) -Drpc_service_stop_1=rpc_service_stop_server_site -Dprocmod_show_active_1=procmod_show_active_server_site -Dprocmod_register_1=procmod_register_server_site -Dprocmod_unregister_1=procmod_unregister_server_site -c $<

mcrpc_clnt.c:	mcrpc.x
		rpcgen -l -o $@ $?

mcrpc_clnt.o:	mcrpc_clnt.c
		$(CC) $(CFLAGS) -c $<

mcrpc_xdr.c:	mcrpc.x
		rpcgen -c -o $@ $?

mcrpc_xdr.o:	mcrpc_xdr.c
		$(CC) $(CFLAGS) -c $<
