1 # SPDX-License-Identifier: GPL-2.0
2 TCOBJ
= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o tc_monitor.o \
3 tc_exec.o m_police.o m_estimator.o m_action.o m_ematch.o \
4 emp_ematch.tab.o emp_ematch.
lex.o
15 TCMODULES
+= q_skbprio.o
19 TCMODULES
+= q_multiq.o
20 TCMODULES
+= q_netem.o
21 TCMODULES
+= q_choke.o
25 TCMODULES
+= f_route.o
27 TCMODULES
+= f_basic.o
30 TCMODULES
+= f_cgroup.o
31 TCMODULES
+= f_flower.o
32 TCMODULES
+= q_dsmark.o
34 TCMODULES
+= f_tcindex.o
35 TCMODULES
+= q_ingress.o
41 TCMODULES
+= m_mirred.o
44 TCMODULES
+= m_pedit.o
46 TCMODULES
+= m_skbedit.o
47 TCMODULES
+= m_skbmod.o
49 TCMODULES
+= m_simple.o
51 TCMODULES
+= m_connmark.o
52 TCMODULES
+= m_ctinfo.o
54 TCMODULES
+= m_tunnel_key.o
55 TCMODULES
+= m_sample.o
64 TCMODULES
+= em_nbyte.o
67 TCMODULES
+= em_canid.o
68 TCMODULES
+= em_meta.o
69 TCMODULES
+= q_mqprio.o
70 TCMODULES
+= q_codel.o
71 TCMODULES
+= q_fq_codel.o
74 TCMODULES
+= q_fq_pie.o
77 TCMODULES
+= q_clsact.o
79 TCMODULES
+= f_matchall.o
82 TCMODULES
+= q_taprio.o
87 ifeq ($(TC_CONFIG_ATM
),y
)
91 ifneq ($(TC_CONFIG_NO_XT
),y
)
92 ifeq ($(TC_CONFIG_XT
),y
)
95 ifeq ($(TC_CONFIG_IPSET
),y
)
96 TCMODULES
+= em_ipset.o
99 ifeq ($(TC_CONFIG_XT_OLD
),y
)
102 ifeq ($(TC_CONFIG_XT_OLD_H
),y
)
103 CFLAGS
+= -DTC_CONFIG_XT_H
112 TCOBJ
+= $(TCMODULES
)
115 ifeq ($(SHARED_LIBS
),y
)
117 LDFLAGS
+= -Wl
,-export-dynamic
123 TCLIB
+= tc_estimator.o
127 CFLAGS
+= -DCONFIG_GACT
-DCONFIG_GACT_PROB
128 ifneq ($(IPT_LIB_DIR
),)
129 CFLAGS
+= -DIPT_LIB_DIR
=\"$(IPT_LIB_DIR
)\"
133 CFLAGS
+= -DYY_NO_INPUT
135 MODDESTDIR
:= $(DESTDIR
)$(LIBDIR
)/tc
138 $(QUIET_CC
)$(CC
) $(CFLAGS
) $(CPPFLAGS
) $(LDFLAGS
) -shared
-fpic
$< -o
$@
143 tc
: $(TCOBJ
) $(LIBNETLINK
) libtc.a
144 $(QUIET_LINK
)$(CC
) $^
$(LDFLAGS
) $(LDLIBS
) -o
$@
147 $(QUIET_AR
)$(AR
) rcs
$@
$^
150 mkdir
-p
$(MODDESTDIR
)
151 install -m
0755 tc
$(DESTDIR
)$(SBINDIR
)
153 do
install -m
755 $$i $(MODDESTDIR
); \
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
; \
164 rm -f
$(TCOBJ
) $(TCLIB
) libtc.a tc
*.so emp_ematch.tab.h
; \
165 rm -f emp_ematch.tab.
*
168 $(QUIET_CC
)$(CC
) $(CFLAGS
) $(CPPFLAGS
) $(LDFLAGS
) -shared
-fpic
-o q_atm.so q_atm.c
-latm
171 $(QUIET_CC
)$(CC
) $(CFLAGS
) $(CPPFLAGS
) $(LDFLAGS
) -shared
-fpic
-o m_xt.so m_xt.c
$$($(PKG_CONFIG
) xtables
--cflags --libs
)
173 m_xt_old.so
: m_xt_old.c
174 $(QUIET_CC
)$(CC
) $(CFLAGS
) $(CPPFLAGS
) $(LDFLAGS
) -shared
-fpic
-o m_xt_old.so m_xt_old.c
$$($(PKG_CONFIG
) xtables
--cflags --libs
)
176 em_ipset.o
: CFLAGS
+= $$($(PKG_CONFIG
) xtables
--cflags)
178 em_ipt.o
: CFLAGS
+= $$($(PKG_CONFIG
) xtables
--cflags)
180 ifeq ($(TC_CONFIG_XT
),y
)
181 LDLIBS
+= $$($(PKG_CONFIG
) xtables
--libs
)
185 $(QUIET_YACC
)$(YACC
) $(YACCFLAGS
) -p ematch_
-b
$(basename $(basename $@
)) $<
188 $(QUIET_LEX
)$(LEX
) $(LEXFLAGS
) -o
$@
$<
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.
193 emp_ematch.
lex.o
: emp_ematch.tab.c
195 ifneq ($(SHARED_LIBS
),y
)
198 static-syms.o
: static-syms.h
199 static-syms.h
: $(wildcard *.c
)
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 ; \