all: format_all build run

update_rlib:
	cp ../rlib/rlib.c ./rlib.h

format_all:
	clang-format *.c *.h -i

build: 
	gcc rrex2.c -o rrex2 -O2 -Wall -Wextra -static
	
run:
	./rrex2

test:
	$(MAKE) build
	./rrex2 test 

cli: build 
	./rrex2 cli

one-file:
	rmerge rrex2.c > rrex2full.c
	clang-format rrex2full.c -i
	gcc rrex2full.c -o rrexfull.o -O3 -static -Wall -Wextra
	@echo "g++ rrex2full.c -o rrex2full.o -O2"

compiler:
	gcc compiler.c -o compiler.o -O3
	./compiler.o

coverage: 
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex.coverage.info   2>/dev/null
	gcc -pg -fprofile-arcs -ftest-coverage -g -o rrex_coverage.o rrex2.c
	./rrex_coverage.o test
	lcov --capture --directory . --output-file rrex.coverage.info
	genhtml rrex.coverage.info --output-directory rrex.coverage
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex.coverage.info   2>/dev/null
	@rm -f rrex_coverage.o
	@rm -f gmon.out
	google-chrome rrex.coverage/index.html

build_and_run_rrex3: build_rrex3 run_rrex3

build_rrex3:
	gcc rrex3.c -o rrex3 -Wall -Wextra -Ofast
	-@rmerge rrex3.c > rrex3all.c 
	-@gcc -E rrex3.c -o rrex3alle.c -Wall -Wextra -Ofast 

run_rrex3:
	./rrex3 

r4: rrex4 run_rrex4

rrex4: rrex4.c rrex4.h
	gcc rrex4.c -o rrex4 -Wall -Wextra -Ofast

run_rrex4:
	./rrex4 

debug_rrex4:
	./rrex4 --debug

coverage_rrex4:
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex4.coverage.info   2>/dev/null
	gcc -pg -fprofile-arcs -ftest-coverage -g -o rrex4_coverage.o rrex4.c
	./rrex4_coverage.o test --debug
	lcov --capture --directory . --output-file rrex4.coverage.info
	genhtml rrex4.coverage.info --output-directory rrex4.coverage
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex4.coverage.info   2>/dev/null
	@rm -f rrex4_coverage.o
	@rm -f gmon.out
	google-chrome rrex4.coverage/index.html




build_and_run_re: build_re run_re

build_re:
	gcc re.c -o re -Wall -Wextra -O2

run_re:
	./re "/home/projects/retoor/rlib" " (.*) ";

coverage_rrex3:
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex3.coverage.info   2>/dev/null
	gcc -pg -fprofile-arcs -ftest-coverage -g -o rrex3_coverage.o rrex3.c
	./rrex3_coverage.o test
	lcov --capture --directory . --output-file rrex3.coverage.info
	genhtml rrex3.coverage.info --output-directory rrex3.coverage
	@rm -f *.gcda   2>/dev/null
	@rm -f *.gcno   2>/dev/null
	@rm -f rrex3.coverage.info   2>/dev/null
	@rm -f rrex3_coverage.o
	@rm -f gmon.out
	google-chrome rrex3.coverage/index.html

publish:
	brz add 
	brz commit 
	brz push lp:rrex2