# Makefile
#
# Generated by phxrpc_pb2server from store.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 = store.pb.o \
		store_service_impl.o \
		phxrpc_store_service.o \
		phxrpc_store_dispatcher.o \
		store_server_config.o \
		store_main.o

CLI_OBJS = store.pb.o \
		store_client.o \
		store_client_uthread.o \
		phxrpc_store_stub.o

TARGETS = libstore_client.a store_main store_tool_main

all: $(TARGETS)

store_main: $(SVR_OBJS)
	$(LINKER) $^ -L$(PHXQUEUE_LIB_DIR) -L$(PHXRPC_LIB_DIR) -lphxrpc  -L../../../lib/ -lphxqueue_phxrpc_plugin -lphxqueue_phxrpc_comm \
	-lphxqueue_store -lphxqueue_config -lphxqueue_comm -lphxqueue_plugin $(LDFLAGS) -o $@

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

store_tool_main: phxrpc_store_tool.o store_tool_impl.o store_tool_main.o libstore_client.a
	$(LINKER) $^ -L$(PHXRPC_LIB_DIR) -lphxrpc -L../../../lib/ -lphxqueue_phxrpc_plugin -lphxqueue_phxrpc_comm \
	-lphxqueue_store -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: store.pb.cc store.pb.h

store.pb.cc: store.pb.h

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

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

phxrpc_store_stub.cpp: phxrpc_store_stub.h
phxrpc_store_stub.o: phxrpc_store_stub.h
store_client.cpp: phxrpc_store_stub.h
store_client.o: phxrpc_store_stub.h
store_client_uthread.cpp: phxrpc_store_stub.h
store_client_uthread.o: phxrpc_store_stub.h

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

phxrpc_store_service.cpp: phxrpc_store_service.h
phxrpc_store_service.o: phxrpc_store_service.h
store_service_impl.cpp: phxrpc_store_service.h
store_service_impl.o: phxrpc_store_service.h
phxrpc_store_dispatcher.cpp: phxrpc_store_service.h
phxrpc_store_dispatcher.o: phxrpc_store_service.h

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

phxrpc_store_tool.cpp: phxrpc_store_tool.h
phxrpc_store_tool.o: phxrpc_store_tool.h
store_tool_impl.cpp: phxrpc_store_tool.h
store_tool_impl.o: phxrpc_store_tool.h
store_tool_main.cpp: phxrpc_store_tool.h
store_tool_main.o: phxrpc_store_tool.h

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


