CC := g++
CFLAGS :=-std=c++11
DEBUG := 
USEPAR := YES
CCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
EXE := mcf_gen
OBJDIR := obj
OBJS := $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(filter-out $(MAIN).cpp, $(wildcard *.cpp))))
OBJS := $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))

ifneq "$(USEPAR)" "NO"
ifeq "$(NUM_THREADS)" ""
PFLAGS := -D NUM_THREADS=5 -lpthread
else
PFLAGS := -D NUM_THREADS=$(NUM_THREADS) -lpthread
endif
else
PFLAGS := 
endif

ifneq "$(DEBUG)" ""
	CFLAGS += -Wall -Wextra -g
all: $(EXE)
else
CFLAGS += -Ofast
all: release
endif
release:
	$(CC) $(CFLAGS) -o $(EXE) *.cpp $(PFLAGS)

tags: *.cpp
	ctags *.cpp


$(EXE): gen_input.cpp $(OBJS)
	$(CC) $(CFLAGS) -o $(EXE) $(OBJS)

$(OBJDIR)/%.o: %.cpp %.h
	$(CC) $(CFLAGS) -c $< -o $@


$(OBJS): | $(OBJDIR) 

$(OBJDIR):
	mkdir $(OBJDIR)


clean: $(OBJDIR)
	$(eval TEMPDIR := $(shell mktemp))
	rm $(OBJDIR) -fr
	rm *.txt -f
	mv default.cfg $(TEMPDIR)
	rm *.cfg *.city *.in -f
	mv $(TEMPDIR) default.cfg
	rm $(EXE) -f

