#
# Snel makefile
#
# 	 Author: Christos Choutouridis AEM:8997
#	 email:  cchoutou@ece.auth.gr
#

CXX      := -c++
CXXFLAGS := -std=c++14 -Wall -Wextra -Werror
LDFLAGS  := -lstdc++
BUILD    := ./bin
OBJ_DIR  := $(BUILD)/obj
APP_DIR  := $(BUILD)
TARGET   := snel
SRC      := $(wildcard src/*.cpp)

OBJECTS := $(SRC:%.cpp=$(OBJ_DIR)/%.o)

$(OBJ_DIR)/%.o: %.cpp
	@mkdir -p $(@D)
	$(CXX) $(CXXFLAGS) -o $@ -c $<

$(APP_DIR)/$(TARGET): $(OBJECTS)
	@mkdir -p $(@D)
	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(APP_DIR)/$(TARGET) $(OBJECTS)

# === Rules ===
snel: build $(APP_DIR)/$(TARGET)

build:
	@mkdir -p $(APP_DIR)
	@mkdir -p $(OBJ_DIR)

debug: CXXFLAGS += -DDEBUG -g3
debug: snel

release: CXXFLAGS += -O2
release: snel

all: release

clean:
	-@rm -rvf $(OBJ_DIR)/*
	-@rm -rvf $(APP_DIR)/*

.PHONY: snel build debug release all clean


