# Compiler and linker Configuration
CC       	= gcc
LINK.c		= gcc	
INCLUDES 	= -I. -I../include -I/usr/local/include
MYCFLAGS	= -W -g -MMD
CFLAGS   	= $(MYCFLAGS)
CFLAGS         += -DDEBUG -D_REENTRANT
CFLAGS         += $(INCLUDES)
LFLAGS          = -L/usr/local/lib
LIBS	       += -lthread -lnsl 
RPCGENFLAGS     = -N -C -A 	

TM = trans_man
RM =   res_man
LGM = log_man
RM_DEF   =   ../include/$(RM).x
TM_DEF   =   ../include/$(TM).x
LGM_DEF  =   ../include/$(LGM).x

SOURCES = $(TM)_svc.c $(TM)_xdr.c $(TM)_svc_proc.c $(TM)_main.c tm_private.c\
		$(RM)_clnt.c $(RM)_xdr.c $(LGM)_clnt.c $(LGM)_xdr.c

OBJS = $(SOURCES:.c=.o)
DEPENDENCIES = $(SOURCES:.c=.d)

all:	$(TM)

$(TM): $(OBJS)
	$(CC) -o $(TM) $^ $(LFLAGS) $(LIBS)

$(TM)_svc.o : $(TM)_svc.c ../include/$(TM).h

$(TM)_main.o : $(TM)_main.c ../include/$(TM).h ../include/$(LGM).h

#
# General	
#
%: %.o
	$(CC) -o $@ $^ $(LFLAGS) $(LIBS)

%.d: %.c
	touch $@

%.h: %.x
	rpcgen $(RPCGENFLAGS) -h -o $@ $^

%_xdr.c: ../include/%.x
	rpcgen $(RPCGENFLAGS) -c -o $@ $^

%_clnt.c: ../include/%.x
	rpcgen $(RPCGENFLAGS) -l -o $@ $^

%_svc.c: ../include/%.x
	rpcgen $(RPCGENFLAGS) -m -o $@ $^

#
# Resource Manager Protocol Configuration
#
$(RM)_xdr.o : CFLAGS += -D_DBS_PROT_XDR_
../include/$(RM).h: $(RM_DEF)
	rpcgen $(RPCGENFLAGS) -h -o ../include/$(RM).h $(RM_DEF)
$(RM)_xdr.c: $(RM_DEF)
	rpcgen $(RPCGENFLAGS) -c -o $(RM)_xdr.c $(RM_DEF)
$(RM)_clnt.c: $(RM_DEF)
	rpcgen $(RPCGENFLAGS) -l -o $(RM)_clnt.c $(RM_DEF)

#
# Log Manager Protocol Configuration
#
$(LGM)_xdr.o : CFLAGS += -D_DBS_PROT_XDR_
../include/$(LGM).h: $(LGM_DEF)
	rpcgen $(RPCGENFLAGS) -h -o ../include/$(LGM).h $(LGM_DEF)
$(LGM)_xdr.c: $(LGM_DEF)
	rpcgen $(RPCGENFLAGS) -c -o $(LGM)_xdr.c $(LGM_DEF)
$(LGM)_clnt.c: $(LGM_DEF)
	rpcgen $(RPCGENFLAGS) -l -o $(LGM)_clnt.c $(LGM_DEF)

#
# Cleanup
#
clean:
	rm -f *.o ../include/$(RM).h $(TM) ../include/$(TM).h \
		  ../include/$(TM).h

really_clean: clean
	rm -f *.d $(TM)_svc.c $(TM)_xdr.c $(LGM)_xdr.c $(LGM)_clnt.c \
	$(RM)_xdr.c $(RM)_clnt.c


include $(DEPENDENCIES)
