#================================================================================
EXEC_NAME=preProcessor-srv
INST_NAME=test
DEBUG_LEV=-v1
INSTALL_DIR=/usr/local/bin
#================================================================================
INC_DIR=/usr/local/omniORB/include \
	   /usr/local/zeromq/include/zmq \
	   /usr/local/tango/include/tango \
	   /usr/local/boost/include \
	   ./src
LIB_DIR=/usr/local/omniORB/lib \
	   /usr/local/zeromq/lib \
	   /usr/local/tango/lib \
	   /usr/local/boost/lib
#================================================================================
CC=g++
CXX_DEBUG_FLAGS=-g -DVERBOSE_DEBUG
CXX_RELEASE_FLAGS=-O3
CXX_DEFAULT_FLAGS=-c -Wall -Wextra -std=c++0x
LDFLAGS=-Wall -lomniORB4 -lomniDynamic4 -lCOS4 -lomnithread -ltango -llog4tango \
	-lboost_thread -lboost_filesystem -lboost_system -lboost_chrono
INC_PARM=$(foreach d, $(INC_DIR), -I$d)
LIB_PARM=$(foreach d, $(LIB_DIR), -L$d)
#================================================================================
SRC_DIR=./src
OBJ_DIR=./obj
BIN_DIR=./bin
#================================================================================
EXECUTABLE=$(BIN_DIR)/$(EXEC_NAME)
CPP_FILES=$(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES=$(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o)))
#================================================================================

.PHONY: all
all: debug 

.PHONY: run
run: debug
	$(EXECUTABLE) $(INST_NAME) $(DEBUG_LEV)

.PHONY: release
release: CXXFLAGS+=$(CXX_RELEASE_FLAGS) $(CXX_DEFAULT_FLAGS)
release: $(EXECUTABLE)

.PHONY: debug
debug: CXXFLAGS+=$(CXX_DEBUG_FLAGS) $(CXX_DEFAULT_FLAGS)
debug: $(EXECUTABLE)

$(EXECUTABLE): makedir $(OBJ_FILES)
	$(CC) $(LDFLAGS) $(LIB_PARM) -o $@ $(OBJ_FILES)

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
	$(CC) $(CXXFLAGS) $(INC_PARM) -o $@ $<

.PHONY: makedir 
makedir:
	-mkdir -p $(OBJ_DIR) $(BIN_DIR)

.PHONY: clean
clean:
	-rm -rf $(OBJ_DIR) $(BIN_DIR)

.PHONY: install
install:
	-cp $(EXECUTABLE) $(INSTALL_DIR)

.PHONY: echo
echo:
	@echo EXECUTABLE:
	@echo $(EXECUTABLE)
	@echo CPP FILES:
	@echo $(CPP_FILES)
	@echo OBJ_FILES:
	@echo $(OBJ_FILES)
	@echo INC_PARM
	@echo $(INC_PARM)
	@echo LIB_PARM
	@echo $(LIB_PARM)

