CC=gcc
FLAGS=-g -Wall -Wextra -Wpedantic
LFLAGS=


all: bin/colloscope

test: bin/colloscope
	bin/colloscope -v S3-creneaux.txt 31 S3-colleurs.txt 16 7 15 3000 output-S3.csv 4 6

mpi-ALL: bin/colloscope
	bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 21 14 10000 output-MPI.csv 4 999999

mpi-all: bin/colloscope
	bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 21 14 1000 output-MPI.csv 4 999999

mpi-20: bin/colloscope
	bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 20 14 2500 output-MPI.csv 4 999999

mpi-12: bin/colloscope
	bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 12 14 7000 output-MPI.csv 4 999999

mpi-8: bin/colloscope
	bin/colloscope -v MPI-creneaux.txt 26 MPI-colleurs.txt 15 8 14 10000 output-MPI.csv 4 999999

mem: bin/
	valgrind --leak-check=full ./bin/colloscope -v S3-creneaux.txt 21 S3-colleurs.txt 16 7 15 100 output-S3.csv 3 6

OBJECTS = obj/structure.o obj/algorithm.o obj/display.o obj/logger.o obj/main.o
bin/colloscope: $(OBJECTS)
	@mkdir -p bin
	$(CC) -o $@ $(LFLAGS) $(FLAGS) $(OBJECTS)

obj/main.o: src/main.c
	@mkdir -p obj
	$(CC) -o $@ -c $(FLAGS) $<

obj/structure.o: src/structure.c src/structure.h
	@mkdir -p obj
	$(CC) -o $@ -c $(FLAGS) $<

obj/display.o: src/display.c src/display.h
	@mkdir -p obj
	$(CC) -o $@ -c $(FLAGS) $<

obj/algorithm.o: src/algorithm.c src/algorithm.h
	@mkdir -p obj
	$(CC) -o $@ -c $(FLAGS) $<

obj/logger.o: src/logger.c src/logger.h
	@mkdir -p obj
	$(CC) -o $@ -c $(FLAGS) $<

.PHONY: clean

clean:
	rm -rf bin/ obj/