CC = gcc
MPICC = mpicc
CFLAGS = -Wall -O2 -g 

OBJECTS1 = redtrap.o getdata2.o func.o traprule.o 
OBJECTS2 = redtrap.o getdata3.o func.o traprule.o 
OBJECTS3 =  parallel_mat_vect.o parmatvec.o readvec.o readmat.o\
	printvec.o printmat.o 

all: reducetrap reducetrap2 matvec

reducetrap: $(OBJECTS1)
	$(MPICC) -o reducetrap $(OBJECTS1)

reducetrap2: $(OBJECTS2)
	$(MPICC) -o reducetrap2 $(OBJECTS2)

matvec: $(OBJECTS3)
	$(MPICC) -o matvec $(OBJECTS3)

redtrap.o: redtrap.c
	$(MPICC) $(CFLAGS) -c redtrap.c

getdata2.o: getdata2.c
	$(MPICC) $(CFLAGS) -c getdata2.c

getdata3.o: getdata3.c
	$(MPICC) $(CFLAGS) -c getdata3.c

traprule.o: traprule.c
	$(MPICC) $(CFLAGS) -c traprule.c

func.o: func.c
	$(MPICC) $(CFLAGS) -c func.c   

parallel_mat_vect.o: parallel_mat_vect.c
	$(MPICC) $(CFLAGS) -c parallel_mat_vect.c   

parmatvec.o: parmatvec.c
	$(MPICC) $(CFLAGS) -c parmatvec.c   

readvec.o: readvec.c
	$(MPICC) $(CFLAGS) -c readvec.c   

readmat.o: readmat.c
	$(MPICC) $(CFLAGS) -c readmat.c   

printvec.o: printvec.c
	$(MPICC) $(CFLAGS) -c printvec.c   

printmat.o: printmat.c
	$(MPICC) $(CFLAGS) -c printmat.c   

clean:
	rm *.o reducetrap reducetrap2 matvec