osdl.net!shemminger | 6d3692a | 2004-08-13 23:54:55 +0000 | [diff] [blame] | 1 | TCOBJ= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o \ |
Jamal Hadi Salim | 5bec348 | 2006-08-08 11:55:15 -0700 | [diff] [blame] | 2 | tc_monitor.o m_police.o m_estimator.o m_action.o \ |
| 3 | m_ematch.o emp_ematch.yacc.o emp_ematch.lex.o |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 4 | |
osdl.net!shemminger | adff36d | 2004-06-25 21:14:22 +0000 | [diff] [blame] | 5 | include ../Config |
Mike Frysinger | f2e27cf | 2009-11-06 06:09:22 -0500 | [diff] [blame] | 6 | SHARED_LIBS ?= y |
osdl.net!shemminger | adff36d | 2004-06-25 21:14:22 +0000 | [diff] [blame] | 7 | |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 8 | TCMODULES := |
| 9 | TCMODULES += q_fifo.o |
| 10 | TCMODULES += q_sfq.o |
| 11 | TCMODULES += q_red.o |
| 12 | TCMODULES += q_prio.o |
| 13 | TCMODULES += q_tbf.o |
| 14 | TCMODULES += q_cbq.o |
Stephen Hemminger | 45305c2 | 2007-10-16 14:27:42 -0700 | [diff] [blame] | 15 | TCMODULES += q_rr.o |
Alexander Duyck | fe1a34f | 2008-12-05 14:16:42 -0800 | [diff] [blame] | 16 | TCMODULES += q_multiq.o |
Stephen Hemminger | 954df8c | 2007-06-25 09:42:30 -0700 | [diff] [blame] | 17 | TCMODULES += q_netem.o |
Stephen Hemminger | a4eca97 | 2011-01-13 09:23:17 -0800 | [diff] [blame] | 18 | TCMODULES += q_choke.o |
Juliusz Chroboczek | d7f3299 | 2011-03-24 18:44:09 +0100 | [diff] [blame] | 19 | TCMODULES += q_sfb.o |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 20 | TCMODULES += f_rsvp.o |
| 21 | TCMODULES += f_u32.o |
| 22 | TCMODULES += f_route.o |
| 23 | TCMODULES += f_fw.o |
shemminger | 9ddbb02 | 2005-06-23 17:21:46 +0000 | [diff] [blame] | 24 | TCMODULES += f_basic.o |
Patrick McHardy | 9932abb | 2008-01-31 18:58:59 +0100 | [diff] [blame] | 25 | TCMODULES += f_flow.o |
Thomas Graf | ff213c4 | 2009-04-09 07:01:51 -0400 | [diff] [blame] | 26 | TCMODULES += f_cgroup.o |
osdl.org!shemminger | cda17fc | 2004-06-09 21:31:01 +0000 | [diff] [blame] | 27 | TCMODULES += q_dsmark.o |
| 28 | TCMODULES += q_gred.o |
| 29 | TCMODULES += f_tcindex.o |
| 30 | TCMODULES += q_ingress.o |
osdl.net!shemminger | 4b1bbd9 | 2004-08-09 16:35:28 +0000 | [diff] [blame] | 31 | TCMODULES += q_hfsc.o |
| 32 | TCMODULES += q_htb.o |
Patrick McHardy | c86f349 | 2008-11-19 16:08:05 +0100 | [diff] [blame] | 33 | TCMODULES += q_drr.o |
Stephen Hemminger | c441bd4 | 2011-01-07 09:43:27 -0800 | [diff] [blame] | 34 | TCMODULES += q_qfq.o |
osdl.net!shemminger | 9bf19a8 | 2004-08-30 21:20:10 +0000 | [diff] [blame] | 35 | TCMODULES += m_gact.o |
net[shemminger]!shemminger | 00fa848 | 2004-12-08 20:13:56 +0000 | [diff] [blame] | 36 | TCMODULES += m_mirred.o |
Herbert Xu | fc2d020 | 2007-10-12 17:08:40 +0800 | [diff] [blame] | 37 | TCMODULES += m_nat.o |
net[shemminger]!shemminger | 7e7c737 | 2005-01-17 23:32:51 +0000 | [diff] [blame] | 38 | TCMODULES += m_pedit.o |
Alexander Duyck | f72a7aa | 2009-01-06 19:27:03 -0800 | [diff] [blame] | 39 | TCMODULES += m_skbedit.o |
Gregoire Baron | 3822cc9 | 2010-12-01 11:17:46 -0800 | [diff] [blame] | 40 | TCMODULES += m_csum.o |
net[shemminger]!shemminger | 7e7c737 | 2005-01-17 23:32:51 +0000 | [diff] [blame] | 41 | TCMODULES += p_ip.o |
| 42 | TCMODULES += p_icmp.o |
| 43 | TCMODULES += p_tcp.o |
| 44 | TCMODULES += p_udp.o |
shemminger | 9ddbb02 | 2005-06-23 17:21:46 +0000 | [diff] [blame] | 45 | TCMODULES += em_nbyte.o |
| 46 | TCMODULES += em_cmp.o |
| 47 | TCMODULES += em_u32.o |
| 48 | TCMODULES += em_meta.o |
John Fastabend | 9149530 | 2011-04-12 08:57:27 -0700 | [diff] [blame] | 49 | TCMODULES += q_mqprio.o |
Eric Dumazet | 185d88f | 2012-05-10 20:22:35 +0000 | [diff] [blame] | 50 | TCMODULES += q_codel.o |
Eric Dumazet | c3524ef | 2012-05-11 09:49:50 +0000 | [diff] [blame^] | 51 | TCMODULES += q_fq_codel.o |
net[shemminger]!shemminger | 7e7c737 | 2005-01-17 23:32:51 +0000 | [diff] [blame] | 52 | |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 53 | TCSO := |
| 54 | ifeq ($(TC_CONFIG_ATM),y) |
| 55 | TCSO += q_atm.so |
| 56 | endif |
Jamal Hadi Salim | 63c7d26 | 2009-02-07 08:19:20 -0500 | [diff] [blame] | 57 | |
| 58 | ifeq ($(TC_CONFIG_XT),y) |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 59 | TCSO += m_xt.so |
Jamal Hadi Salim | 63c7d26 | 2009-02-07 08:19:20 -0500 | [diff] [blame] | 60 | else |
Andreas Henriksson | 80d689d | 2009-12-02 16:11:21 +0100 | [diff] [blame] | 61 | ifeq ($(TC_CONFIG_XT_OLD),y) |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 62 | TCSO += m_xt_old.so |
Jamal Hadi Salim | 63c7d26 | 2009-02-07 08:19:20 -0500 | [diff] [blame] | 63 | else |
Andreas Henriksson | 80d689d | 2009-12-02 16:11:21 +0100 | [diff] [blame] | 64 | ifeq ($(TC_CONFIG_XT_OLD_H),y) |
| 65 | CFLAGS += -DTC_CONFIG_XT_H |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 66 | TCSO += m_xt_old.so |
Andreas Henriksson | 80d689d | 2009-12-02 16:11:21 +0100 | [diff] [blame] | 67 | else |
| 68 | TCMODULES += m_ipt.o |
| 69 | endif |
Jamal Hadi Salim | 63c7d26 | 2009-02-07 08:19:20 -0500 | [diff] [blame] | 70 | endif |
| 71 | endif |
| 72 | |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 73 | TCOBJ += $(TCMODULES) |
Mike Frysinger | f2e27cf | 2009-11-06 06:09:22 -0500 | [diff] [blame] | 74 | LDLIBS += -L. -ltc -lm |
| 75 | |
| 76 | ifeq ($(SHARED_LIBS),y) |
| 77 | LDLIBS += -ldl |
| 78 | LDFLAGS += -Wl,-export-dynamic |
| 79 | endif |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 80 | |
| 81 | TCLIB := tc_core.o |
| 82 | TCLIB += tc_red.o |
| 83 | TCLIB += tc_cbq.o |
| 84 | TCLIB += tc_estimator.o |
Jussi Kivilinna | 839c845 | 2008-07-25 16:19:09 +0300 | [diff] [blame] | 85 | TCLIB += tc_stab.o |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 86 | |
osdl.net!shemminger | 9bf19a8 | 2004-08-30 21:20:10 +0000 | [diff] [blame] | 87 | CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB |
Andreas Henriksson | 12ddfff | 2010-03-11 10:54:31 +0000 | [diff] [blame] | 88 | ifneq ($(IPT_LIB_DIR),) |
| 89 | CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\" |
| 90 | endif |
osdl.net!shemminger | 9bf19a8 | 2004-08-30 21:20:10 +0000 | [diff] [blame] | 91 | |
shemminger | c0fc3ab | 2005-06-23 20:16:43 +0000 | [diff] [blame] | 92 | YACC := bison |
| 93 | LEX := flex |
Stephen Hemminger | 155ad80 | 2012-01-03 13:55:59 -0800 | [diff] [blame] | 94 | CFLAGS += -DYY_NO_INPUT |
shemminger | c0fc3ab | 2005-06-23 20:16:43 +0000 | [diff] [blame] | 95 | |
Christoph J. Thompson | 5c434a9 | 2012-03-01 17:46:26 +0100 | [diff] [blame] | 96 | MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 97 | |
osdl.net!shemminger | d3ea2e8 | 2004-07-02 17:47:53 +0000 | [diff] [blame] | 98 | %.so: %.c |
Mike Frysinger | 7315261 | 2009-12-26 14:52:36 -0500 | [diff] [blame] | 99 | $(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic $< -o $@ |
osdl.net!shemminger | d3ea2e8 | 2004-07-02 17:47:53 +0000 | [diff] [blame] | 100 | |
osdl.net!shemminger | a2218e8 | 2004-08-23 20:21:21 +0000 | [diff] [blame] | 101 | |
osdl.net!shemminger | 6cc2f07 | 2005-02-09 22:05:41 +0000 | [diff] [blame] | 102 | all: libtc.a tc $(TCSO) |
site!shemminger | d5b4855 | 2005-02-07 18:01:21 +0000 | [diff] [blame] | 103 | |
Yegor Yefremov | 8ced4fc | 2012-02-27 15:21:15 +0100 | [diff] [blame] | 104 | tc: $(TCOBJ) $(TCLIB) |
net[shemminger]!shemminger | 8e64f6f | 2004-08-30 21:07:09 +0000 | [diff] [blame] | 105 | |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 106 | libtc.a: $(TCLIB) |
| 107 | $(AR) rcs $@ $(TCLIB) |
| 108 | |
| 109 | install: all |
Mike Frysinger | bf51268 | 2010-06-09 14:52:03 +0000 | [diff] [blame] | 110 | mkdir -p $(MODDESTDIR) |
| 111 | install -m 0755 tc $(DESTDIR)$(SBINDIR) |
osdl.net!shemminger | 69286fe | 2004-08-30 20:54:46 +0000 | [diff] [blame] | 112 | for i in $(TCSO); \ |
Mike Frysinger | bf51268 | 2010-06-09 14:52:03 +0000 | [diff] [blame] | 113 | do install -m 755 $$i $(MODDESTDIR); \ |
osdl.net!shemminger | a2218e8 | 2004-08-23 20:21:21 +0000 | [diff] [blame] | 114 | done |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 115 | if [ ! -f $(MODDESTDIR)/m_ipt.so ]; then \ |
| 116 | if [ -f $(MODDESTDIR)/m_xt.so ]; \ |
| 117 | then ln -s m_xt.so $(MODDESTDIR)/m_ipt.so ; \ |
| 118 | elif [ -f $(MODDESTDIR)/m_xt_old.so ]; \ |
| 119 | then ln -s m_xt_old.so $(MODDESTDIR)/m_ipt.so ; \ |
| 120 | fi; \ |
| 121 | fi |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 122 | |
| 123 | clean: |
shemminger | 87773db | 2005-06-23 17:23:53 +0000 | [diff] [blame] | 124 | rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \ |
Stephen Hemminger | 93ba481 | 2011-11-02 16:39:36 -0700 | [diff] [blame] | 125 | rm -f emp_ematch.yacc.* |
osdl.org!shemminger | aba5acd | 2004-04-15 20:56:59 +0000 | [diff] [blame] | 126 | |
osdl.net!shemminger | d3ea2e8 | 2004-07-02 17:47:53 +0000 | [diff] [blame] | 127 | q_atm.so: q_atm.c |
Mike Frysinger | 729cbe8 | 2009-05-29 18:37:40 -0400 | [diff] [blame] | 128 | $(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm |
osdl.net!shemminger | d3ea2e8 | 2004-07-02 17:47:53 +0000 | [diff] [blame] | 129 | |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 130 | m_xt.so: m_xt.c |
Jan Engelhardt | d7aa57d | 2011-09-24 23:37:34 +0200 | [diff] [blame] | 131 | $(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o m_xt.so m_xt.c $$(pkg-config xtables --cflags --libs) |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 132 | |
| 133 | m_xt_old.so: m_xt_old.c |
Jan Engelhardt | d7aa57d | 2011-09-24 23:37:34 +0200 | [diff] [blame] | 134 | $(CC) $(CFLAGS) $(LDFLAGS) -shared -fpic -o m_xt_old.so m_xt_old.c $$(pkg-config xtables --cflags --libs) |
Andreas Henriksson | ab814d6 | 2010-04-12 20:24:23 +0200 | [diff] [blame] | 135 | |
shemminger | 9ddbb02 | 2005-06-23 17:21:46 +0000 | [diff] [blame] | 136 | %.yacc.c: %.y |
| 137 | $(YACC) $(YACCFLAGS) -o $@ $< |
| 138 | |
| 139 | %.lex.c: %.l |
shemminger | 52d5ac3 | 2005-07-05 22:11:37 +0000 | [diff] [blame] | 140 | $(LEX) $(LEXFLAGS) -o$@ $< |
Mike Frysinger | f2e27cf | 2009-11-06 06:09:22 -0500 | [diff] [blame] | 141 | |
Mike Frysinger | aa48b59 | 2011-10-18 17:38:08 -0400 | [diff] [blame] | 142 | # our lexer includes the header from yacc, so make sure |
| 143 | # we don't attempt to compile it before the header has |
| 144 | # been generated as part of the yacc step. |
| 145 | emp_ematch.lex.o: emp_ematch.yacc.c |
| 146 | |
Mike Frysinger | f2e27cf | 2009-11-06 06:09:22 -0500 | [diff] [blame] | 147 | ifneq ($(SHARED_LIBS),y) |
| 148 | |
| 149 | tc: static-syms.o |
| 150 | static-syms.o: static-syms.h |
| 151 | static-syms.h: $(wildcard *.c) |
| 152 | files="$^" ; \ |
| 153 | for s in `grep -B 3 '\<dlsym' $$files | sed -n '/snprintf/{s:.*"\([^"]*\)".*:\1:;s:%s::;p}'` ; do \ |
| 154 | sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \ |
| 155 | done > $@ |
| 156 | |
| 157 | endif |