CC	 = g++
MKDIR = mkdir -p
RM = rm -rf

SRC_DIR = src
OBJ_DIR = obj

SOURCE = $(wildcard $(SRC_DIR)/*.cpp)
HEADER = $(wildcard $(SRC_DIR)/*.h)
OBJECTS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(SOURCE))
DEPS = $(patsubst %.h,$(OBJ_DIR)/%.d,$(HEADER))

BINARY_DIR_OUT = bin
BINARY_FILE = "v2gX509CertInfos.so"
BINARY=$(BINARY_DIR_OUT)/$(BINARY_FILE)

FLAGS_COMMON = -Wall -O3 -MP -MD -fPIC
FLAGS_LIB	 = -shared -static-libstdc++ -static-libgcc 

LUAFLAGS ?= -I"../Third_Party/lua/lua-5.2.4/include"
IFLAGS =  ${LUAFLAGS} -I"../Third_Party/GnuTLS/include"

dll: $(BINARY)

$(BINARY): prepare_dirs $(OBJECTS)
	$(CC) $(FLAGS_COMMON) $(FLAGS_LIB) $(OBJECTS) -o $(BINARY) $(IFLAGS)

$(OBJ_DIR)/%.o: %.cpp
	$(MKDIR) $(dir $@)
	$(CC) -c $(FLAGS_COMMON) $< -o $@ $(IFLAGS)

prepare_dirs:
	$(MKDIR) $(BINARY_DIR_OUT)

clean:
	$(RM) $(OBJ_DIR) $(BINARY_DIR_OUT) $(BIN)

.PHONY: dll prepare_dirs clean
-include $(DEPS)