	
# CC is the compiler to use.
CC=g++

# CFLAGS is the options I'll pass to the compiler.
CFLAGS=-c -Wall -std=c++11

# EXEC is the name of the excutable
EXEC=dia_rep

# RUNC_COMMAND is the command to be executed to run the inputs
RUN_COMMAND=./$(EXEC)		# Linux
#RUN_COMMAND=$(EXEC).exe	# Windows

# Directories to be used
SRC_DIR=src
DAR_SRC_DIR=../dar
DAR_OUT_DIR=processed


#
# BUILD PROJECT
#

all: project

project: main.o config.o process.o automata.o
	$(CC) main.o config.o process.o automata.o -o $(EXEC)

main.o: $(SRC_DIR)/main.cpp
	$(CC) $(CFLAGS) $(SRC_DIR)/main.cpp

config.o: $(SRC_DIR)/config.cpp
	$(CC) $(CFLAGS) $(SRC_DIR)/config.cpp

process.o: $(SRC_DIR)/process.cpp
	$(CC) $(CFLAGS) $(SRC_DIR)/process.cpp

automata.o: $(SRC_DIR)/automata.cpp
	$(CC) $(CFLAGS) $(SRC_DIR)/automata.cpp

getfiles.o: $(SRC_DIR)/getfiles.cpp
	$(CC) $(CFLAGS) $(SRC_DIR)/getfiles.cpp
	
#
# CLEAN
#

clean: clean_linux
clean_win:
	del *o $(EXEC).exe
clean_linux:
	rm -rf *o $(EXEC)
cleanall: clean
	rm alldeputies.txt
	rm -rf processed/*


#
# RUN INPUT FILES
#

run: all
	$(RUN_COMMAND) config.ini

rundebug: all
	$(RUN_COMMAND) $(SRC_DIR)/config.ini --debug 0 ../dar/12/dar_12_01_016.html
	
run08: all
	mkdir -p $(DAR_OUT_DIR)/08/
	for i in $$(find $(DAR_SRC_DIR)/08/dar_08_02_*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config2.ini $$i > $(DAR_OUT_DIR)/08/$$(basename $$i).txt; \
	done
	rm $(DAR_OUT_DIR)/08/dar_08_02_073.html.txt
	rm $(DAR_OUT_DIR)/08/dar_08_02_075.html.txt
	rm $(DAR_OUT_DIR)/08/dar_08_02_105.html.txt
	rm $(DAR_OUT_DIR)/08/dar_08_02_019.html.txt

run09: all
	mkdir -p $(DAR_OUT_DIR)/09/
	for i in $$(find $(DAR_SRC_DIR)/09/*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config2.ini $$i > $(DAR_OUT_DIR)/09/$$(basename $$i).txt; \
	done

run10: all
	mkdir -p $(DAR_OUT_DIR)/10/
	for i in $$(find $(DAR_SRC_DIR)/10/dar_10_01_* $(DAR_SRC_DIR)/10/dar_10_02_00* $(DAR_SRC_DIR)/10/dar_10_02_01[0-6]*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config2.ini $$i > $(DAR_OUT_DIR)/10/$$(basename $$i).txt; \
	done
	for i in $$(find $(DAR_SRC_DIR)/10/dar_10_02_01[7-9]* $(DAR_SRC_DIR)/10/dar_10_02_0[2-7]* $(DAR_SRC_DIR)/10/dar_10_0[3-4]* -not -iname dar_10_02_075.html -not -iname dar_10_03_077.html); do \
		$(RUN_COMMAND) $(SRC_DIR)/config3.ini $$i > $(DAR_OUT_DIR)/10/$$(basename $$i).txt; \
	done
	for i in $$(find $(DAR_SRC_DIR)/10/dar_10_02_0[8-9]*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config.ini $$i > $(DAR_OUT_DIR)/10/$$(basename $$i).txt; \
	done
	rm $(DAR_OUT_DIR)/10/dar_10_01_001.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_01_041.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_01_043.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_01_048.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_02_002.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_03_089.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_03_111.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_009.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_035.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_036.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_095.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_106.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_03_008.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_04_073.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_01_148.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_03_012.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_02_050.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_02_051.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_02_052.html.txt
	rm $(DAR_OUT_DIR)/10/dar_10_02_032.html.txt

run11: all
	mkdir -p $(DAR_OUT_DIR)/11/
	for i in $$(find $(DAR_SRC_DIR)/11/*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config.ini $$i > $(DAR_OUT_DIR)/11/$$(basename $$i).txt; \
	done
	rm $(DAR_OUT_DIR)/11/dar_11_02_073.html.txt
	rm $(DAR_OUT_DIR)/11/dar_11_02_057.html.txt
	
run12: all
	mkdir -p $(DAR_OUT_DIR)/12/
	for i in $$(find $(DAR_SRC_DIR)/12/*); do \
		$(RUN_COMMAND) $(SRC_DIR)/config.ini $$i > $(DAR_OUT_DIR)/12/$$(basename $$i).txt; \
	done
	rm $(DAR_OUT_DIR)/12/dar_12_01_024.html.txt
	rm $(DAR_OUT_DIR)/12/dar_12_01_027.html.txt

runall: run08 run09 run10 run11 run12



deputies:
	rm -f alldeputies.txt
	rm -f alldeputies.tmp
	touch alldeputies.txt
	for i in $$(find $(DAR_OUT_DIR)); do \
		mv alldeputies.txt alldeputies.tmp; \
		cat $$i alldeputies.tmp | sort | uniq > alldeputies.txt; \
	done
	rm alldeputies.tmp
	cat alldeputies.txt
	
sessions:
	rm -f sessions.txt
	for i in $$(find $(DAR_OUT_DIR)); do \
		if [ -f $$i ]; then \
			echo $$(basename $$i) | cut --delimiter=. --fields=1 | cut --bytes=5- >> sessions.txt; \
		fi \
	done
	cat sessions.txt


buildall: project runall deputies sessions

#
# TEST REGEX
#
regex:
	gcc regex_test.c -o regex_test
	./regex_test

