# defines
MPICXX=mpicxx
SPEEDFLAGS=-O3
CXXFLAGS=-Wall $(SPEEDFLAGS)
LDFLAGS=$(SPEEDFLAGS)

TARGET = gen_valid_info validation gen_RMAT gen_random solution_mpi

all: $(TARGET)

# your own distributed implementation
solution_mpi: main_mpi.o solution_mpi.o graph_tools.o gen_RMAT_mpi.o gen_random_mpi.o
	$(MPICXX) $^ -o $@ $(LDFLAGS)

# RMAT generator
gen_RMAT: gen_RMAT.o graph_tools.o
	$(MPICXX) $^ -o $@ $(LDFLAGS)

# Erdos-Renyi (random) graph generator
gen_random: gen_random.o graph_tools.o
	$(MPICXX) $^ -o $@ $(LDFLAGS)

# gen_valid_info
gen_valid_info: gen_valid_info.o reference_bfs.o graph_tools.o
	$(MPICXX) $^ -o $@ $(LDFLAGS)

# validation
validation: validation.o
	$(MPICXX) $^ -o $@ $(LDFLAGS)

.cpp.o:
	$(MPICXX) $(CXXFLAGS) -o $@ -c $<

clean:
	rm -rf *.o $(TARGET)
