summaryrefslogtreecommitdiff
path: root/src/Makefile.in
blob: 8d1b8ff62a04a1e2cc0df254e837615cc904f6ad (plain)
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#
# qflow project source compile makefile
#

# Main compiler arguments
CFLAGS = @CFLAGS@
LIBS = @LIBS@
LDFLAGS = @LDFLAGS@
INSTALL = @INSTALL@

DEFS = @DEFS@ -DQFLOW_VERSION=\"@VERSION@\" -DQFLOW_REVISION=\"@REVISION@\"

QFLOW_LIB_DIR = /usr/lib/qflow
QFLOW_GRAYWOLF_PATH = @QFLOW_GRAYWOLF_PATH@
QFLOW_REPLACE_PATH = @QFLOW_REPLACE_PATH@
QFLOW_NTUPLACE3_PATH = @QFLOW_NTUPLACE3_PATH@
QFLOW_NTUPLACE4_PATH = @QFLOW_NTUPLACE4_PATH@
QFLOW_QROUTER_PATH = @QFLOW_QROUTER_PATH@
QFLOW_MAGIC_PATH = @QFLOW_MAGIC_PATH@
QFLOW_NETGEN_PATH = @QFLOW_NETGEN_PATH@
QFLOW_YOSYS_PATH = @QFLOW_YOSYS_PATH@
QFLOW_OPENTIMER_PATH = @QFLOW_OPENTIMER_PATH@
QFLOW_OPENSTA_PATH = @QFLOW_OPENSTA_PATH@

HAVE_YOSYS = @HAVE_YOSYS@
HAVE_MAGIC = @HAVE_MAGIC@
HAVE_NETGEN = @HAVE_NETGEN@
HAVE_OPENTIMER = @HAVE_OPENTIMER@
HAVE_OPENSTA = @HAVE_OPENSTA@
HAVE_GRAYWOLF = @HAVE_GRAYWOLF@
HAVE_REPLACE = @HAVE_REPLACE@
HAVE_QROUTER = @HAVE_QROUTER@

OBJECTS = vlog2Spice.o vlog2Verilog.o vlog2Def.o vlog2Cel.o vlogFanout.o
OBJECTS += DEF2Verilog.o addspacers.o
OBJECTS += vesta.o spice2delay.o rc2dly.o
OBJECTS += blif2BSpice.o blif2Verilog.o blifFanout.o
HASHLIB = hash.o
LIBERTYLIB = readliberty.o
VERILOGLIB = readverilog.o
LEFLIB = readlef.o
DEFLIB = readdef.o
SOURCES := $(patsubst %.o,%.c,$(OBJECTS))
TARGETS := $(patsubst %.o,%$(EXEEXT),$(OBJECTS))

BININSTALL = ${QFLOW_LIB_DIR}/bin

all: $(TARGETS)

vlog2Spice$(EXEEXT): vlog2Spice.o $(HASHLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vlog2Spice.o $(HASHLIB) $(VERILOGLIB) -o $@ $(LIBS)

vlog2Verilog$(EXEEXT): vlog2Verilog.o $(HASHLIB) $(LEFLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vlog2Verilog.o $(HASHLIB) $(VERILOGLIB) $(LEFLIB) \
		-o $@ $(LIBS)

vlog2Cel$(EXEEXT): vlog2Cel.o $(HASHLIB) $(LEFLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vlog2Cel.o $(HASHLIB) $(VERILOGLIB) $(LEFLIB) \
		-o $@ $(LIBS)

vlog2Def$(EXEEXT): vlog2Def.o $(HASHLIB) $(LEFLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vlog2Def.o $(HASHLIB) $(LEFLIB) $(VERILOGLIB) -o $@ $(LIBS) -lm

vlogFanout$(EXEEXT): vlogFanout.o $(HASHLIB) $(LIBERTYLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vlogFanout.o $(HASHLIB) $(VERILOGLIB) $(LIBERTYLIB) \
		-DQFLOW_VERSION=\"VERSION\" -DQFLOW_REVISION=\"REVISION\" \
		$(DEPENDS) -o $@ $(LIBS) -lm

DEF2Verilog$(EXEEXT): DEF2Verilog.o $(HASHLIB) $(VERILOGLIB) $(DEFLIB) $(LEFLIB)
	$(CC) $(LDFLAGS) DEF2Verilog.o $(HASHLIB) $(VERILOGLIB) $(DEFLIB) $(LEFLIB) \
		-DQFLOW_VERSION=\"VERSION\" -DQFLOW_REVISION=\"REVISION\" \
		$(DEPENDS) -o $@ $(LIBS) -lm

addspacers$(EXEEXT): addspacers.o $(HASHLIB) $(LEFLIB) $(DEFLIB)
	$(CC) $(LDFLAGS) addspacers.o $(HASHLIB) $(LEFLIB) $(DEFLIB) -o $@ $(LIBS) -lm

blif2BSpice$(EXEEXT): blif2BSpice.o
	$(CC) $(LDFLAGS) blif2BSpice.o -o $@ $(LIBS)

blif2Verilog$(EXEEXT): blif2Verilog.o
	$(CC) $(LDFLAGS) blif2Verilog.o -o $@ $(LIBS)

blifFanout$(EXEEXT): blifFanout.o $(HASHLIB) $(LIBERTYLIB)
	$(CC) $(LDFLAGS) blifFanout.o $(HASHLIB) $(LIBERTYLIB) \
		-DQFLOW_VERSION=\"VERSION\" -DQFLOW_REVISION=\"REVISION\" \
		$(DEPENDS) -o $@ $(LIBS) -lm

vesta$(EXEEXT): vesta.o $(HASHLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) vesta.o $(HASHLIB) $(VERILOGLIB) -o $@ $(LIBS)

spice2delay$(EXEEXT): spice2delay.o $(HASHLIB) $(LIBERTYLIB)
	$(CC) $(LDFLAGS) spice2delay.o $(HASHLIB) $(LIBERTYLIB) -o $@ $(LIBS)

rc2dly$(EXEEXT): rc2dly.o $(LIBERTYLIB) $(HASHLIB) $(VERILOGLIB)
	$(CC) $(LDFLAGS) rc2dly.o $(LIBERTYLIB) $(HASHLIB) $(VERILOGLIB) -o $@ $(LIBS)

install: $(TARGETS)
	@echo "Installing verilog, SPICE, etc. file format handlers"
	$(INSTALL) -d $(DESTDIR)${BININSTALL}
	@for target in $(TARGETS); do \
	   $(INSTALL) $$target $(DESTDIR)${BININSTALL} ;\
	done
	@echo "Installing links to third-party synthesis flow tool executables"
	@if test "${HAVE_GRAYWOLF}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f graywolf;  ln -s $(QFLOW_GRAYWOLF_PATH) graywolf) ;\
	fi
	@if test "${HAVE_REPLACE}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f RePlAce;  ln -s $(QFLOW_REPLACE_PATH) RePlAce) ;\
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f ntuplace3;  ln -s $(QFLOW_NTUPLACE3_PATH) ntuplace3) ;\
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f ntuplace4h;  ln -s $(QFLOW_NTUPLACE4_PATH) ntuplace4h) ;\
	fi
	@if test "${HAVE_QROUTER}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f qrouter;  ln -s $(QFLOW_QROUTER_PATH) qrouter) ;\
	fi
	@if test "${HAVE_MAGIC}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f magic;  ln -s $(QFLOW_MAGIC_PATH) magic) ;\
	fi
	@if test "${HAVE_NETGEN}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f netgen;  ln -s $(QFLOW_NETGEN_PATH) netgen); \
	fi
	@if test "${HAVE_YOSYS}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f yosys;  ln -s $(QFLOW_YOSYS_PATH) yosys); \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f yosys-abc;  ln -s $(QFLOW_YOSYS_PATH)-abc yosys-abc); \
	fi
	@if test "${HAVE_OPENTIMER}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f ot-shell;  ln -s $(QFLOW_OPENTIMER_PATH) ot-shell); \
	fi
	@if test "${HAVE_OPENSTA}" = "1"; then \
	(cd $(DESTDIR)${BININSTALL};  $(RM) -f sta;  ln -s $(QFLOW_OPENSTA_PATH) sta); \
	fi

uninstall:
	$(RM) -rf ${BININSTALL}

clean:
	$(RM) -f $(OBJECTS) $(HASHLIB) $(LIBERTYLIB) $(LEFLIB) $(DEFLIB) $(VERILOGLIB)
	$(RM) -f $(TARGETS)

veryclean:
	$(RM) -f $(OBJECTS) $(HASHLIB) $(LIBERTYLIB) $(LEFLIB) $(DEFLIB) $(VERILOGLIB)
	$(RM) -f $(TARGETS)

distclean:
	$(RM) -f $(OBJECTS) $(HASHLIB) $(LIBERTYLIB) $(LEFLIB) $(DEFLIB) $(VERILOGLIB)
	$(RM) -f $(TARGETS)

.c.o:
	$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -c $< -o $@