]>
Commit | Line | Data |
---|---|---|
6054c1eb | 1 | # SPDX-License-Identifier: GPL-2.0 |
4bd62446 | 2 | TCOBJ= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o tc_monitor.o \ |
e4225669 | 3 | tc_exec.o m_police.o m_estimator.o m_action.o m_ematch.o \ |
5f78bc3e | 4 | emp_ematch.tab.o emp_ematch.lex.o |
aba5acdf | 5 | |
5f1df307 | 6 | include ../config.mk |
67e1d73b | 7 | |
f2e27cfb | 8 | SHARED_LIBS ?= y |
adff36d7 | 9 | |
aba5acdf SH |
10 | TCMODULES := |
11 | TCMODULES += q_fifo.o | |
12 | TCMODULES += q_sfq.o | |
13 | TCMODULES += q_red.o | |
14 | TCMODULES += q_prio.o | |
141b55f8 | 15 | TCMODULES += q_skbprio.o |
aba5acdf SH |
16 | TCMODULES += q_tbf.o |
17 | TCMODULES += q_cbq.o | |
45305c24 | 18 | TCMODULES += q_rr.o |
fe1a34fa | 19 | TCMODULES += q_multiq.o |
954df8c6 | 20 | TCMODULES += q_netem.o |
a4eca97c | 21 | TCMODULES += q_choke.o |
d7f3299d | 22 | TCMODULES += q_sfb.o |
aba5acdf SH |
23 | TCMODULES += f_rsvp.o |
24 | TCMODULES += f_u32.o | |
25 | TCMODULES += f_route.o | |
26 | TCMODULES += f_fw.o | |
9ddbb02e | 27 | TCMODULES += f_basic.o |
d05df686 | 28 | TCMODULES += f_bpf.o |
9932abb4 | 29 | TCMODULES += f_flow.o |
ff213c4b | 30 | TCMODULES += f_cgroup.o |
30eb304e | 31 | TCMODULES += f_flower.o |
cda17fcd SH |
32 | TCMODULES += q_dsmark.o |
33 | TCMODULES += q_gred.o | |
34 | TCMODULES += f_tcindex.o | |
35 | TCMODULES += q_ingress.o | |
4b1bbd9c SH |
36 | TCMODULES += q_hfsc.o |
37 | TCMODULES += q_htb.o | |
c86f3494 | 38 | TCMODULES += q_drr.o |
c441bd4c | 39 | TCMODULES += q_qfq.o |
9bf19a85 | 40 | TCMODULES += m_gact.o |
00fa8480 | 41 | TCMODULES += m_mirred.o |
fb57b092 | 42 | TCMODULES += m_mpls.o |
fc2d0206 | 43 | TCMODULES += m_nat.o |
7e7c7372 | 44 | TCMODULES += m_pedit.o |
d3e51122 | 45 | TCMODULES += m_ife.o |
f72a7aab | 46 | TCMODULES += m_skbedit.o |
cba134ae | 47 | TCMODULES += m_skbmod.o |
3822cc98 | 48 | TCMODULES += m_csum.o |
087f46ee | 49 | TCMODULES += m_simple.o |
8b1c0216 | 50 | TCMODULES += m_vlan.o |
b8d5c9a7 | 51 | TCMODULES += m_connmark.o |
d7f2bccd | 52 | TCMODULES += m_ctinfo.o |
86ab59a6 | 53 | TCMODULES += m_bpf.o |
d57639a4 | 54 | TCMODULES += m_tunnel_key.o |
0b1abd84 | 55 | TCMODULES += m_sample.o |
c8a49431 | 56 | TCMODULES += m_ct.o |
07d5ee70 | 57 | TCMODULES += m_gate.o |
7e7c7372 | 58 | TCMODULES += p_ip.o |
f3e1b244 | 59 | TCMODULES += p_ip6.o |
7e7c7372 | 60 | TCMODULES += p_icmp.o |
3cd5149e | 61 | TCMODULES += p_eth.o |
7e7c7372 | 62 | TCMODULES += p_tcp.o |
63 | TCMODULES += p_udp.o | |
9ddbb02e SH |
64 | TCMODULES += em_nbyte.o |
65 | TCMODULES += em_cmp.o | |
66 | TCMODULES += em_u32.o | |
7b5f30e1 | 67 | TCMODULES += em_canid.o |
9ddbb02e | 68 | TCMODULES += em_meta.o |
91495304 | 69 | TCMODULES += q_mqprio.o |
185d88f9 | 70 | TCMODULES += q_codel.o |
c3524efc | 71 | TCMODULES += q_fq_codel.o |
bc113e46 | 72 | TCMODULES += q_fq.o |
80dd880d | 73 | TCMODULES += q_pie.o |
9dced637 | 74 | TCMODULES += q_fq_pie.o |
714444c0 | 75 | TCMODULES += q_cake.o |
ac74bd2a | 76 | TCMODULES += q_hhf.o |
8f9afdd5 | 77 | TCMODULES += q_clsact.o |
4bd62446 | 78 | TCMODULES += e_bpf.o |
d5cbf3ff | 79 | TCMODULES += f_matchall.o |
c9681ac1 | 80 | TCMODULES += q_cbs.o |
7da5ef22 | 81 | TCMODULES += q_etf.o |
0dd16449 | 82 | TCMODULES += q_taprio.o |
c865c523 | 83 | TCMODULES += q_plug.o |
d2773f12 | 84 | TCMODULES += q_ets.o |
7e7c7372 | 85 | |
ab814d63 AH |
86 | TCSO := |
87 | ifeq ($(TC_CONFIG_ATM),y) | |
88 | TCSO += q_atm.so | |
89 | endif | |
63c7d26f | 90 | |
4710e46e DB |
91 | ifneq ($(TC_CONFIG_NO_XT),y) |
92 | ifeq ($(TC_CONFIG_XT),y) | |
93 | TCSO += m_xt.so | |
dd296215 | 94 | TCMODULES += em_ipt.o |
4710e46e DB |
95 | ifeq ($(TC_CONFIG_IPSET),y) |
96 | TCMODULES += em_ipset.o | |
97 | endif | |
80d689d0 | 98 | else |
4710e46e DB |
99 | ifeq ($(TC_CONFIG_XT_OLD),y) |
100 | TCSO += m_xt_old.so | |
80d689d0 | 101 | else |
4710e46e DB |
102 | ifeq ($(TC_CONFIG_XT_OLD_H),y) |
103 | CFLAGS += -DTC_CONFIG_XT_H | |
104 | TCSO += m_xt_old.so | |
105 | else | |
106 | TCMODULES += m_ipt.o | |
107 | endif | |
80d689d0 | 108 | endif |
63c7d26f JHS |
109 | endif |
110 | endif | |
111 | ||
aba5acdf | 112 | TCOBJ += $(TCMODULES) |
bb18c981 | 113 | LDLIBS += -L. -lm |
f2e27cfb MF |
114 | |
115 | ifeq ($(SHARED_LIBS),y) | |
116 | LDLIBS += -ldl | |
117 | LDFLAGS += -Wl,-export-dynamic | |
118 | endif | |
aba5acdf SH |
119 | |
120 | TCLIB := tc_core.o | |
121 | TCLIB += tc_red.o | |
122 | TCLIB += tc_cbq.o | |
123 | TCLIB += tc_estimator.o | |
839c8456 | 124 | TCLIB += tc_stab.o |
01bb0bcd | 125 | TCLIB += tc_qevent.o |
aba5acdf | 126 | |
9bf19a85 | 127 | CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB |
12ddfff7 AH |
128 | ifneq ($(IPT_LIB_DIR),) |
129 | CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\" | |
130 | endif | |
9bf19a85 | 131 | |
c0fc3ab4 | 132 | LEX := flex |
155ad802 | 133 | CFLAGS += -DYY_NO_INPUT |
c0fc3ab4 | 134 | |
5c434a9e | 135 | MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc |
ab814d63 | 136 | |
d3ea2e81 | 137 | %.so: %.c |
1a03ac6b | 138 | $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic $< -o $@ |
d3ea2e81 | 139 | |
aba5acdf | 140 | |
bb18c981 | 141 | all: tc $(TCSO) |
d5b48556 | 142 | |
be67f812 | 143 | tc: $(TCOBJ) $(LIBNETLINK) libtc.a |
57bdf8b7 | 144 | $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@ |
8e64f6fe | 145 | |
aba5acdf | 146 | libtc.a: $(TCLIB) |
bb18c981 | 147 | $(QUIET_AR)$(AR) rcs $@ $^ |
aba5acdf SH |
148 | |
149 | install: all | |
bf512683 MF |
150 | mkdir -p $(MODDESTDIR) |
151 | install -m 0755 tc $(DESTDIR)$(SBINDIR) | |
69286fe8 | 152 | for i in $(TCSO); \ |
bf512683 | 153 | do install -m 755 $$i $(MODDESTDIR); \ |
a2218e8e | 154 | done |
ab814d63 AH |
155 | if [ ! -f $(MODDESTDIR)/m_ipt.so ]; then \ |
156 | if [ -f $(MODDESTDIR)/m_xt.so ]; \ | |
157 | then ln -s m_xt.so $(MODDESTDIR)/m_ipt.so ; \ | |
158 | elif [ -f $(MODDESTDIR)/m_xt_old.so ]; \ | |
159 | then ln -s m_xt_old.so $(MODDESTDIR)/m_ipt.so ; \ | |
160 | fi; \ | |
161 | fi | |
aba5acdf SH |
162 | |
163 | clean: | |
5f78bc3e ES |
164 | rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.tab.h; \ |
165 | rm -f emp_ematch.tab.* | |
aba5acdf | 166 | |
d3ea2e81 | 167 | q_atm.so: q_atm.c |
1a03ac6b | 168 | $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm |
d3ea2e81 | 169 | |
ab814d63 | 170 | m_xt.so: m_xt.c |
1a03ac6b | 171 | $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o m_xt.so m_xt.c $$($(PKG_CONFIG) xtables --cflags --libs) |
ab814d63 AH |
172 | |
173 | m_xt_old.so: m_xt_old.c | |
1a03ac6b | 174 | $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o m_xt_old.so m_xt_old.c $$($(PKG_CONFIG) xtables --cflags --libs) |
ab814d63 | 175 | |
5ab3a4de BP |
176 | em_ipset.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags) |
177 | ||
dd296215 EB |
178 | em_ipt.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags) |
179 | ||
180 | ifeq ($(TC_CONFIG_XT),y) | |
6ddb36c3 | 181 | LDLIBS += $$($(PKG_CONFIG) xtables --libs) |
dd296215 EB |
182 | endif |
183 | ||
5f78bc3e ES |
184 | %.tab.c: %.y |
185 | $(QUIET_YACC)$(YACC) $(YACCFLAGS) -p ematch_ -b $(basename $(basename $@)) $< | |
9ddbb02e SH |
186 | |
187 | %.lex.c: %.l | |
57bdf8b7 | 188 | $(QUIET_LEX)$(LEX) $(LEXFLAGS) -o$@ $< |
f2e27cfb | 189 | |
aa48b593 MF |
190 | # our lexer includes the header from yacc, so make sure |
191 | # we don't attempt to compile it before the header has | |
192 | # been generated as part of the yacc step. | |
5f78bc3e | 193 | emp_ematch.lex.o: emp_ematch.tab.c |
aa48b593 | 194 | |
f2e27cfb MF |
195 | ifneq ($(SHARED_LIBS),y) |
196 | ||
197 | tc: static-syms.o | |
198 | static-syms.o: static-syms.h | |
199 | static-syms.h: $(wildcard *.c) | |
200 | files="$^" ; \ | |
201 | for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \ | |
202 | sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \ | |
203 | done > $@ | |
204 | ||
205 | endif |