.SUFFIXES: .mpi.o .cc .cpp .o
TARGET=qclibmpi.a

CC=g++

# compiler options

PATH_ROOT=../calcunits
MPIPATH=/usr/local/mpich
LIB=-L$(MPIPATH)/lib -lmpich -lm
INC= -I$(MPIPATH)/include -I$(PATH_ROOT)
OPT= 

CALCUNITS=$(PATH_ROOT)/QBits.cpp $(PATH_ROOT)/QCalcUnit.cpp \
$(PATH_ROOT)/QC_not.cpp $(PATH_ROOT)/QC_cnot.cpp  $(PATH_ROOT)/QC_ccnot.cpp \
$(PATH_ROOT)/QC_rot.cpp $(PATH_ROOT)/QC_crot.cpp  $(PATH_ROOT)/QC_hadamard.cpp \
$(PATH_ROOT)/QC_pauliX.cpp $(PATH_ROOT)/QC_pauliY.cpp $(PATH_ROOT)/QC_pauliZ.cpp \
$(PATH_ROOT)/QC_swap.cpp

CALCUNITS_O=$(CALCUNITS:.cpp=.mpi.o)

all:$(TARGET)

.cpp.mpi.o:
	$(CC) $(OPT) -D__USE__MPI=1 $(INC) -c $< -o $*.mpi.o
.cpp.o:
	$(CC) $(OPT) -D__USE__MPI=1 $(INC) -c $< -o $*.mpi.o

.cc.o:
	$(CC) $(OPT) -D__USE__MPI=1 $(INC) -c $<

test: ap

ap: main.cc qclibmpi.a
	$(CC) $(OPT) -D__USE__MPI=1 $(INC) -o ap main.cc qclibmpi.a $(LIB) 

$(TARGET): $(CALCUNITS_O)
	ar crv qclibmpi.a $(CALCUNITS_O)


clean:
	rm -f $(TARGET) $(CALCUNITS_O)
	rm -f *.o
	rm -f *~
	rm -f a.out
	rm -f ap  
