# Compiler and flags
CXX = g++
CXXFLAGS = -Wall -std=c++11 -g -O0 -I../../include

# Targets
TARGETS = ini_reader ini_writer

# Source files
COMMON_DIR = ../ini_file
COMMON_SRC = $(COMMON_DIR)/ini_file.cpp
COMMON_HDR = ../../include/infiniband/misc/ini_file/ini_file.h
COMMON_OBJ = $(COMMON_DIR)/ini_file.o

READ_SRC = ini_reader.cpp
READ_OBJ = ini_reader.o

WRITE_SRC = ini_writer.cpp
WRITE_OBJ = ini_writer.o

# Default target
all: $(TARGETS)

# Build ini_reader
ini_reader: $(READ_OBJ) $(COMMON_OBJ)
	$(CXX) $(CXXFLAGS) -o $@ $^

# Build ini_writer
ini_writer: $(WRITE_OBJ) $(COMMON_OBJ)
	$(CXX) $(CXXFLAGS) -o $@ $^

# Compile current dir .cpp
%.o: %.cpp $(COMMON_HDR)
	$(CXX) $(CXXFLAGS) -c $< -o $@

# Compile common dir .cpp
$(COMMON_DIR)/%.o: $(COMMON_DIR)/%.cpp $(COMMON_HDR)
	$(CXX) $(CXXFLAGS) -c $< -o $@

# Clean
clean:
	rm -f *.o $(COMMON_DIR)/*.o $(TARGETS)
