iproute2/tc/Makefile
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0
   2TCOBJ= 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
   5
   6include ../config.mk
   7
   8SHARED_LIBS ?= y
   9
  10TCMODULES :=
  11TCMODULES += q_fifo.o
  12TCMODULES += q_sfq.o
  13TCMODULES += q_red.o
  14TCMODULES += q_prio.o
  15TCMODULES += q_skbprio.o
  16TCMODULES += q_tbf.o
  17TCMODULES += q_cbq.o
  18TCMODULES += q_rr.o
  19TCMODULES += q_multiq.o
  20TCMODULES += q_netem.o
  21TCMODULES += q_choke.o
  22TCMODULES += q_sfb.o
  23TCMODULES += f_rsvp.o
  24TCMODULES += f_u32.o
  25TCMODULES += f_route.o
  26TCMODULES += f_fw.o
  27TCMODULES += f_basic.o
  28TCMODULES += f_bpf.o
  29TCMODULES += f_flow.o
  30TCMODULES += f_cgroup.o
  31TCMODULES += f_flower.o
  32TCMODULES += q_dsmark.o
  33TCMODULES += q_gred.o
  34TCMODULES += f_tcindex.o
  35TCMODULES += q_ingress.o
  36TCMODULES += q_hfsc.o
  37TCMODULES += q_htb.o
  38TCMODULES += q_drr.o
  39TCMODULES += q_qfq.o
  40TCMODULES += m_gact.o
  41TCMODULES += m_mirred.o
  42TCMODULES += m_mpls.o
  43TCMODULES += m_nat.o
  44TCMODULES += m_pedit.o
  45TCMODULES += m_ife.o
  46TCMODULES += m_skbedit.o
  47TCMODULES += m_skbmod.o
  48TCMODULES += m_csum.o
  49TCMODULES += m_simple.o
  50TCMODULES += m_vlan.o
  51TCMODULES += m_connmark.o
  52TCMODULES += m_ctinfo.o
  53TCMODULES += m_bpf.o
  54TCMODULES += m_tunnel_key.o
  55TCMODULES += m_sample.o
  56TCMODULES += m_ct.o
  57TCMODULES += m_gate.o
  58TCMODULES += p_ip.o
  59TCMODULES += p_ip6.o
  60TCMODULES += p_icmp.o
  61TCMODULES += p_eth.o
  62TCMODULES += p_tcp.o
  63TCMODULES += p_udp.o
  64TCMODULES += em_nbyte.o
  65TCMODULES += em_cmp.o
  66TCMODULES += em_u32.o
  67TCMODULES += em_canid.o
  68TCMODULES += em_meta.o
  69TCMODULES += q_mqprio.o
  70TCMODULES += q_codel.o
  71TCMODULES += q_fq_codel.o
  72TCMODULES += q_fq.o
  73TCMODULES += q_pie.o
  74TCMODULES += q_fq_pie.o
  75TCMODULES += q_cake.o
  76TCMODULES += q_hhf.o
  77TCMODULES += q_clsact.o
  78TCMODULES += e_bpf.o
  79TCMODULES += f_matchall.o
  80TCMODULES += q_cbs.o
  81TCMODULES += q_etf.o
  82TCMODULES += q_taprio.o
  83TCMODULES += q_plug.o
  84TCMODULES += q_ets.o
  85
  86TCSO :=
  87ifeq ($(TC_CONFIG_ATM),y)
  88  TCSO += q_atm.so
  89endif
  90
  91ifneq ($(TC_CONFIG_NO_XT),y)
  92  ifeq ($(TC_CONFIG_XT),y)
  93    TCSO += m_xt.so
  94    TCMODULES += em_ipt.o
  95    ifeq ($(TC_CONFIG_IPSET),y)
  96      TCMODULES += em_ipset.o
  97    endif
  98  else
  99    ifeq ($(TC_CONFIG_XT_OLD),y)
 100      TCSO += m_xt_old.so
 101    else
 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
 108    endif
 109  endif
 110endif
 111
 112TCOBJ += $(TCMODULES)
 113LDLIBS += -L. -lm
 114
 115ifeq ($(SHARED_LIBS),y)
 116LDLIBS += -ldl
 117LDFLAGS += -Wl,-export-dynamic
 118endif
 119
 120TCLIB := tc_core.o
 121TCLIB += tc_red.o
 122TCLIB += tc_cbq.o
 123TCLIB += tc_estimator.o
 124TCLIB += tc_stab.o
 125TCLIB += tc_qevent.o
 126
 127CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB
 128ifneq ($(IPT_LIB_DIR),)
 129        CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\"
 130endif
 131
 132LEX := flex
 133CFLAGS += -DYY_NO_INPUT
 134
 135MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
 136
 137%.so: %.c
 138        $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic $< -o $@
 139
 140
 141all: tc $(TCSO)
 142
 143tc: $(TCOBJ) $(LIBNETLINK) libtc.a
 144        $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@
 145
 146libtc.a: $(TCLIB)
 147        $(QUIET_AR)$(AR) rcs $@ $^
 148
 149install: all
 150        mkdir -p $(MODDESTDIR)
 151        install -m 0755 tc $(DESTDIR)$(SBINDIR)
 152        for i in $(TCSO); \
 153        do install -m 755 $$i $(MODDESTDIR); \
 154        done
 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
 162
 163clean:
 164        rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.tab.h; \
 165        rm -f emp_ematch.tab.*
 166
 167q_atm.so: q_atm.c
 168        $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
 169
 170m_xt.so: m_xt.c
 171        $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o m_xt.so m_xt.c $$($(PKG_CONFIG) xtables --cflags --libs)
 172
 173m_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)
 175
 176em_ipset.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags)
 177
 178em_ipt.o: CFLAGS += $$($(PKG_CONFIG) xtables --cflags)
 179
 180ifeq ($(TC_CONFIG_XT),y)
 181  LDLIBS += $$($(PKG_CONFIG) xtables --libs)
 182endif
 183
 184%.tab.c: %.y
 185        $(QUIET_YACC)$(YACC) $(YACCFLAGS) -p ematch_ -b $(basename $(basename $@)) $<
 186
 187%.lex.c: %.l
 188        $(QUIET_LEX)$(LEX) $(LEXFLAGS) -o$@ $<
 189
 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.
 193emp_ematch.lex.o: emp_ematch.tab.c
 194
 195ifneq ($(SHARED_LIBS),y)
 196
 197tc: static-syms.o
 198static-syms.o: static-syms.h
 199static-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
 205endif
 206