-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
111 lines (85 loc) · 2.89 KB
/
Copy pathMakefile
File metadata and controls
111 lines (85 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
CXX=g++
AR=ar
PROTOC=protoc
INCLUDE=include
EIGEN=/usr/include/eigen3
#EIGEN=C:/msys64/mingw64/include/eigen3
OPTIMIZATION?=-O3
override CXXFLAGS+=-g $(OPTIMIZATION) -Wall -pedantic -I$(INCLUDE) -I$(EIGEN) `pkg-config --cflags protobuf`
LDFLAGS=`pkg-config --libs protobuf`
SRC=src
OBJ=obj
BIN=bin
DOCS=docs
TESTS=tests
DEMOS=demos
PROTO=proto
.PHONY: unittest lib docs demos proto
OBJS=$(OBJ)/solace_proto.o \
$(OBJ)/libsolace.o \
$(OBJ)/utility.o \
$(OBJ)/circuit.o \
$(OBJ)/algorithm.o
DBG_OBJS=$(OBJ)/solace_proto.o \
$(OBJ)/unittest.o \
$(OBJ)/libsolace_dbg.o \
$(OBJ)/utility_dbg.o \
$(OBJ)/circuit_dbg.o \
$(OBJ)/algorithm.o \
$(OBJ)/unittest_qubit.o \
$(OBJ)/unittest_gate.o \
$(OBJ)/unittest_common_gates.o \
$(OBJ)/unittest_utility.o \
$(OBJ)/unittest_compilation.o \
$(OBJ)/unittest_circuit.o \
$(OBJ)/unittest_algorithm.o
DEMO_BINS=$(DEMOS)/01_hadamard.bin \
$(DEMOS)/02_hadamard2.bin \
$(DEMOS)/03_hadamard3.bin \
$(DEMOS)/04_grover.bin \
$(DEMOS)/05_grover2.bin \
$(DEMOS)/06_wstate.bin \
$(DEMOS)/07_bell_circuit.bin \
$(DEMOS)/08_wstate_circuit.bin \
$(DEMOS)/09_grover_circuit.bin
objs: $(OBJS)
$(BIN)/libsolace.so: $(OBJS)
$(CXX) $(CXXFLAGS) -fPIC -shared $^ -o $@
$(BIN)/libsolace.a: $(OBJS)
$(AR) rcs $@ $^
$(OBJ)/solace_proto.o: $(SRC)/solace.pb.cc
$(CXX) $(CXXFLAGS) -fPIC -shared -c $< -o $@ $(LDFLAGS)
$(OBJ)/%_dbg.o: CXXFLAGS += -DBE_A_QUANTUM_CHEATER `pkg-config --cflags gtest`
$(OBJ)/%_dbg.o: $(SRC)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
$(OBJ)/demo_%.o: $(DEMOS)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
$(DEMOS)/%.bin: $(OBJ)/demo_%.o $(BIN)/libsolace.a $(DEMOS)/executionTimeMeasurement.cpp
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
$(OBJ)/unittest_%.o: CXXFLAGS += -DBE_A_QUANTUM_CHEATER `pkg-config --cflags gtest`
$(OBJ)/unittest_%.o: $(TESTS)/unittest_%.cpp $(PROTOFILES)
$(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
$(OBJ)/unittest.o: CXXFLAGS += -DBE_A_QUANTUM_CHEATER `pkg-config --cflags gtest`
$(OBJ)/unittest.o: $(TESTS)/unittest.cpp $(PROTOFILES)
$(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
$(OBJ)/%.o: $(SRC)/%.cpp $(PROTOFILES)
$(CXX) $(CXXFLAGS) -fPIC -shared -c $< -o $@ $(LDFLAGS)
PROTOFILES=$(SRC)/solace.pb.cc $(INCLUDE)/solace.pb.h
proto: $(PROTOFILES)
$(SRC)/solace.pb.cc $(INCLUDE)/solace.pb.h &: $(PROTO)/solace.proto
$(PROTOC) -I=$(PROTO) --cpp_out=$(SRC) $<
mv $(SRC)/solace.pb.h $(INCLUDE)/solace.pb.h
$(TESTS)/unittest: CXXFLAGS += -DBE_A_QUANTUM_CHEATER -DSOLACE_DEV_DEBUG `pkg-config --cflags gtest`
$(TESTS)/unittest: $(DBG_OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@ `pkg-config --libs gtest` $(LDFLAGS)
unittest: $(TESTS)/unittest
lib: $(BIN)/libsolace.so $(BIN)/libsolace.a
docs: Doxyfile
doxygen $<
demos: $(DEMO_BINS)
clean:
$(RM) $(OBJ)/*.o $(TESTS)/unittest $(BIN)/*.o $(BIN)/*.so
$(RM) -r $(DOCS)/html
$(RM) $(DEMOS)/*.bin
$(RM) $(PROTOFILES)
$(RM) *.qbit *.qgate *.qc