LIBRARY_DIR=../../..

LIB_CONFIG = $(LIBRARY_DIR)/bin/library-config --prefix=$(LIBRARY_DIR)

CXX   = `$(LIB_CONFIG) --c++`
CHDIR = cd
RM    = rm

GENERAL_SERVER_DIR = ..
LIBGENERAL_SERVER  = $(GENERAL_SERVER_DIR)/libgeneral_server.a

INCLUDES = -I$(GENERAL_SERVER_DIR)

CXXFLAGS = -g `$(LIB_CONFIG) --cflags` \
	      $(INCLUDES) \
	      $(CCXXOPTFLAGS) $(CXXOPTFLAGS) \
	      $(CCXXADDITIONALFLAGS) $(CXXADDITIONALFLAGS)

LDFLAGS = `$(LIB_CONFIG) --libs` $(LDADDITIONALFLAGS)


OBJS = echo_interpreter.o main.o


all: echo_server

echo_server: $(LIBRARY_DIR)/.build_done $(LIBGENERAL_SERVER) $(OBJS)
	$(RM) -f echo_server
	$(CXX) -o echo_server $(CXXFLAGS) $(OBJS) $(LIBGENERAL_SERVER) \
		$(LDFLAGS)

rebuild: $(LIBRARY_DIR)/.build_done $(LIBGENERAL_SERVER) $(OBJS)
	$(RM) -f echo_server
	$(MAKE) echo_server

clean:
	$(RM) -f *.o echo_server

.PHONY: all rebuild clean

$(LIBRARY_DIR)/.build_done:
	($(CHDIR) $(LIBRARY_DIR) && $(MAKE))

$(LIBGENERAL_SERVER):
	($(CHDIR) $(GENERAL_SERVER_DIR) && $(MAKE))

##
main.o: main.cc \
	echo_interpreter.h \
	$(GENERAL_SERVER_DIR)/general_server_option_analyzer.h \
	$(GENERAL_SERVER_DIR)/general_server.h \
	$(GENERAL_SERVER_DIR)/general_server_interpreter.h

echo_interpreter.o: echo_interpreter.h \
		      echo_interpreter.cc \
		      $(GENERAL_SERVER_DIR)/general_server_interpreter.h
