# Makefile
#
# Generated by phxrpc_pb2server from scheduler.proto
#
#

include ../../../makefile.mk

#PLUGIN_BOOST_LDFLAGS = -Wl,--whole-archive -L$(PHXRPC_LIB_DIR) -lphxrpc_plugin_boost \
#		-Wl,--no-whole-archive $(BOOST_ROOT_DIR)/lib/libboost_context.a  #-L$(BOOST_LIB_DIR) -lboost_context
#LDFLAGS := $(PLUGIN_BOOST_LDFLAGS) $(LDFLAGS) # for boost

SVR_OBJS = scheduler.pb.o \
		scheduler_service_impl.o \
		phxrpc_scheduler_service.o \
		phxrpc_scheduler_dispatcher.o \
		scheduler_server_config.o \
		scheduler_main.o

CLI_OBJS = scheduler.pb.o \
		scheduler_client.o \
		scheduler_client_uthread.o \
		phxrpc_scheduler_stub.o

TARGETS = libscheduler_client.a scheduler_main scheduler_tool_main

all: $(TARGETS)

scheduler_main: $(SVR_OBJS)
	$(MAKE) -C ../lock/ liblock_client.a
	$(LINKER) $^ -L$(PHXQUEUE_LIB_DIR)  -L../../../lib/ \
	-lphxqueue_phxrpc_scheduler \
	-L ../lock/ -llock_client \
	-L$(PHXRPC_LIB_DIR) -lphxrpc \
	-lphxqueue_phxrpc_plugin -lphxqueue_phxrpc_comm \
	-lphxqueue_scheduler -lphxqueue_config -lphxqueue_comm -lphxqueue_plugin \
	$(LDFLAGS) -o $@

libscheduler_client.a: $(CLI_OBJS)
	$(AR) $@ $^

scheduler_tool_main: phxrpc_scheduler_tool.o scheduler_tool_impl.o scheduler_tool_main.o libscheduler_client.a
	$(LINKER) $^ -L$(PHXRPC_LIB_DIR) -lphxrpc -L../../../lib/ -lphxqueue_phxrpc_scheduler -lphxqueue_phxrpc_plugin -lphxqueue_phxrpc_comm \
	-lphxqueue_scheduler -lphxqueue_config -lphxqueue_comm -lphxqueue_plugin $(LDFLAGS) -o $@

%.pb.o: %.pb.cc
	$(CXX) $(CXXFLAGS) -o $@ -c $< -I$(PROTOBUF_INCLUDE_DIR) -I$(PHXRPC_INCLUDE_DIR) \
			-I$(PHXQUEUE_INCLUDE_DIR) -I.

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -o $@ -c $< -I$(GLOG_INCLUDE_DIR) -I$(PROTOBUF_INCLUDE_DIR) \
			-I$(LEVELDB_INCLUDE_DIR) -I$(LIBCO_INCLUDE_DIR) -I$(PHXRPC_INCLUDE_DIR) \
			-I$(PHXPAXOS_INCLUDE_DIR) -I$(PHXPAXOS_PLUGIN_INCLUDE_DIR) -I$(PHXQUEUE_INCLUDE_DIR)

########## message ##########

pb: scheduler.pb.cc scheduler.pb.h

scheduler.pb.cc: scheduler.pb.h

scheduler.pb.h: scheduler.proto
	$(PROTOBUF_BIN_DIR)/protoc $^ --proto_path=$(PHXRPC_INCLUDE_DIR) --proto_path=$(PHXQUEUE_INCLUDE_DIR) $(PBFLAGS)

########## client ##########

phxrpc_scheduler_stub.cpp: phxrpc_scheduler_stub.h
phxrpc_scheduler_stub.o: phxrpc_scheduler_stub.h
scheduler_client.cpp: phxrpc_scheduler_stub.h
scheduler_client.o: phxrpc_scheduler_stub.h
scheduler_client_uthread.cpp: phxrpc_scheduler_stub.h
scheduler_client_uthread.o: phxrpc_scheduler_stub.h

########## service ##########

phxrpc_scheduler_service.cpp: phxrpc_scheduler_service.h
phxrpc_scheduler_service.o: phxrpc_scheduler_service.h
scheduler_service_impl.cpp: phxrpc_scheduler_service.h
scheduler_service_impl.o: phxrpc_scheduler_service.h
phxrpc_scheduler_dispatcher.cpp: phxrpc_scheduler_service.h
phxrpc_scheduler_dispatcher.o: phxrpc_scheduler_service.h

########## tool ##########

phxrpc_scheduler_tool.cpp: phxrpc_scheduler_tool.h
phxrpc_scheduler_tool.o: phxrpc_scheduler_tool.h
scheduler_tool_impl.cpp: phxrpc_scheduler_tool.h
scheduler_tool_impl.o: phxrpc_scheduler_tool.h
scheduler_tool_main.cpp: phxrpc_scheduler_tool.h
scheduler_tool_main.o: phxrpc_scheduler_tool.h

clean:
	@($(RM) $(TARGETS))
	@($(RM) *.o)
	@($(RM) *.pb.*)

