-include config.out

CXX ?= g++
CXXFLAGS := -std=c++11 -g -Wall -pedantic
OBJFLAGS := $(CXXFLAGS) -c
LDFLAGS := -lreadline

PREFIX ?= /usr/local
USER_NAME ?= $(USER)
TRACKING_DIR ?= /home/$(USER)/track

BIN_PATH := bin
SRC_PATH := src

SRC := $(foreach x, $(SRC_PATH), $(wildcard $(addprefix $(x)/*,cpp)))
OBJ := $(addprefix $(SRC_PATH)/, $(addsuffix .o, $(notdir $(basename $(SRC)))))

default: makedir all

$(BIN_PATH)/tt: $(OBJ)
	$(CXX)  $(CXXFLAGS) -o $@ $(OBJ) $(LDFLAGS)

$(SRC_PATH)/%.o: $(SRC_PATH)/%.cpp
	$(CXX) -DPREFIX=$(PREFIX) $(OBJFLAGS) -o $@ $<

makedir:
	@mkdir -p $(BIN_PATH)

all: $(BIN_PATH)/tt
	@echo "PREFIX=$(PREFIX)" > config.out
	@echo "USER_NAME=$(USER_NAME)" >> config.out
	@echo "TRACKING_DIR=$(TRACKING_DIR)" >> config.out
install: all
	@echo "Installing tt at $(PREFIX) for user $(USER_NAME). Tracking directory will be $(TRACKING_DIR)."
	@mkdir -p $(PREFIX)/bin
	@mkdir -p $(PREFIX)/etc
	@cp bin/tt $(PREFIX)/bin
	@touch $(PREFIX)/etc/tt.conf;\
		echo "user_name=$(USER_NAME)" > $(PREFIX)/etc/tt.conf;\
		echo "tracking_directory=$(TRACKING_DIR)" >> $(PREFIX)/etc/tt.conf
	@echo "tt successfully installed. User name and tracking directory can be adjusted in $(PREFIX)/etc/tt.conf."
	
uninstall:
	rm -rf $(PREFIX)/bin/tt
	rm -rf $(PREFIX)/etc/tt.conf

clean:
	rm -rf $(SRC_PATH)/*.o
	rm -rf $(BIN_PATH)
	rm -rf config.out

.PHONY: makedir clean