#for quick tests, no optimization...to enable debug messages
#which may be printed by the Qubit classes, etc delete -DNODEBUG
CC			= g++
CFLAGS	= -O2 -g -I. -DNODEBUG -DNDEBUG	
LNKOPT	= -L. -lOpenQubit
PERCEPS	= templates/perceps
PEROPT	= -h -a -b -e -m -r -t templates/ 

all: qubit

clean:
	rm -f *.o *.a

docs:
	$(PERCEPS) $(PEROPT) -d doc/

libOpenQubit.a: utility.o qstate.o iomanip.o qgate.o
	ar rc libOpenQubit.a utility.o qstate.o iomanip.o qgate.o
	ranlib libOpenQubit.a

utility.o: utility.cc utility.h
	$(CC) $(CFLAGS) -c utility.cc

qstate.o: qstate.cc qstate.h
	$(CC) $(CFLAGS) -c qstate.cc

iomanip.o: iomanip.cc
	$(CC) $(CFLAGS) -c iomanip.cc

qgate.o: utility.o qgate.cc qgate.h
	$(CC) $(CFLAGS) -c qgate.cc

qubit: main.cc libOpenQubit.a
	$(CC) $(CFLAGS) main.cc -o shor $(LNKOPT)
