Android.mk revision 7ba421f1d968e5aa819bc5b49bd40cd127daa5fa
1ifneq ($(TARGET_SIMULATOR),true)
2  BUILD_IPTABLES_V14 := 1
3endif
4
5ifeq ($(BUILD_IPTABLES_V14),1)
6
7LOCAL_PATH:= $(call my-dir)
8
9#
10# Build libraries
11#
12
13#----------------------------------------------------------------
14# libip4tc
15
16include $(CLEAR_VARS)
17
18LOCAL_C_INCLUDES:= \
19	$(KERNEL_HEADERS) \
20	$(LOCAL_PATH)/include/
21
22# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
23LOCAL_CFLAGS:=-D__ANDROID__
24
25LOCAL_SRC_FILES:= \
26	libiptc/libip4tc.c \
27
28
29LOCAL_MODULE_TAGS:=
30LOCAL_MODULE:=libip4tc
31
32include $(BUILD_STATIC_LIBRARY)
33
34
35#----------------------------------------------------------------
36# libip6tc
37
38include $(CLEAR_VARS)
39
40LOCAL_C_INCLUDES:= \
41	$(KERNEL_HEADERS) \
42	$(LOCAL_PATH)/include/
43
44# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
45LOCAL_CFLAGS:=-D__ANDROID__
46
47LOCAL_SRC_FILES:= \
48	libiptc/libip6tc.c \
49
50
51LOCAL_MODULE_TAGS:=
52LOCAL_MODULE:=libip6tc
53
54include $(BUILD_STATIC_LIBRARY)
55
56#----------------------------------------------------------------
57# libiptc
58
59#include $(CLEAR_VARS)
60#
61#LOCAL_C_INCLUDES:= \
62#	$(KERNEL_HEADERS) \
63#	$(LOCAL_PATH)/include/
64#
65#LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
66#
67#LOCAL_SRC_FILES:=
68#
69#
70#LOCAL_MODULE_TAGS:=
71#LOCAL_MODULE:=libiptc
72#
73#LOCAL_STATIC_LIBRARIES := \
74#	libip4tc \
75#	libip6tc \
76#
77#include $(BUILD_STATIC_LIBRARY)
78
79#----------------------------------------------------------------
80# libxtables
81
82include $(CLEAR_VARS)
83
84LOCAL_C_INCLUDES:= \
85	$(LOCAL_PATH)/include/ \
86	$(KERNEL_HEADERS) \
87
88LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
89LOCAL_CFLAGS+=-DXTABLES_INTERNAL
90LOCAL_CFLAGS+=-DXTABLES_LIBDIR=\"xtables_libdir_not_used\"
91# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
92LOCAL_CFLAGS+=-D__ANDROID__
93
94LOCAL_LDFLAGS:=-version-info 5:0:0
95LOCAL_SRC_FILES:= \
96	xtables.c xtoptions.c
97
98
99LOCAL_MODULE_TAGS:=
100LOCAL_MODULE:=libxtables
101
102include $(BUILD_STATIC_LIBRARY)
103
104#----------------------------------------------------------------
105#----------------------------------------------------------------
106## extentsion
107
108MY_srcdir:=$(LOCAL_PATH)/extensions
109# Exclude some modules that are problematic to compile (types/header).
110MY_excluded_modules:=TCPOPTSTRIP
111
112MY_pfx_build_mod := $(patsubst ${MY_srcdir}/libxt_%.c,%,$(wildcard ${MY_srcdir}/libxt_*.c))
113MY_pf4_build_mod := $(patsubst ${MY_srcdir}/libipt_%.c,%,$(wildcard ${MY_srcdir}/libipt_*.c))
114MY_pf6_build_mod := $(patsubst ${MY_srcdir}/libip6t_%.c,%,$(wildcard ${MY_srcdir}/libip6t_*.c))
115MY_pfx_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pfx_build_mod})
116MY_pf4_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf4_build_mod})
117MY_pf6_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf6_build_mod})
118MY_pfx_objs      := $(patsubst %,libxt_%.o,${MY_pfx_build_mod})
119MY_pf4_objs      := $(patsubst %,libipt_%.o,${MY_pf4_build_mod})
120MY_pf6_objs      := $(patsubst %,libip6t_%.o,${MY_pf6_build_mod})
121
122#----------------------------------------------------------------
123# libext
124# TODO(jpa): Trun this into a function/macro as libext{,4,6} are all the same.
125
126include $(CLEAR_VARS)
127
128LOCAL_MODULE_TAGS:=
129LOCAL_MODULE:=libext
130
131# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
132#
133LOCAL_MODULE_CLASS := STATIC_LIBRARIES
134MY_intermediates := $(call local-intermediates-dir)
135
136# LOCAL_PATH/extensions needed because of dirty #include "blabla.c"
137LOCAL_C_INCLUDES:= \
138	$(LOCAL_PATH)/include/ \
139	$(KERNEL_HEADERS) \
140	$(MY_intermediates)/extensions/ \
141	$(LOCAL_PATH)/extensions/
142
143LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
144# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
145# LOCAL_CFLAGS+=-D_INIT=lib$*_init
146LOCAL_CFLAGS+=-DXTABLES_INTERNAL
147# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
148LOCAL_CFLAGS+=-D__ANDROID__
149
150MY_initext_func := $(addprefix xt_,${MY_pfx_build_mod})
151MY_GEN_INITEXT:= $(MY_intermediates)/extensions/initext.c
152$(MY_GEN_INITEXT):
153	@mkdir -p $(dir $@)
154	@( \
155	echo "" >$@; \
156	for i in ${MY_initext_func}; do \
157		echo "extern void lib$${i}_init(void);" >>$@; \
158	done; \
159	echo "void init_extensions(void);" >>$@; \
160	echo "void init_extensions(void)" >>$@; \
161	echo "{" >>$@; \
162	for i in ${MY_initext_func}; do \
163		echo " ""lib$${i}_init();" >>$@; \
164	done; \
165	echo "}" >>$@; \
166	);
167
168MY_lib_sources:= \
169	$(patsubst %,$(LOCAL_PATH)/extensions/libxt_%.c,${MY_pfx_build_mod})
170
171MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
172
173${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
174${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/extensions/filter_init $(PRIVATE_PATH)/extensions/$(notdir $@) > $@
175${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
176${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
177${MY_gen_lib_sources}: $(MY_lib_sources)
178	$(transform-generated-source)
179
180$(MY_intermediates)/extensions/initext.o : $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
181
182LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
183
184include $(BUILD_STATIC_LIBRARY)
185
186#----------------------------------------------------------------
187# libext4
188
189include $(CLEAR_VARS)
190
191LOCAL_MODULE_TAGS:=
192LOCAL_MODULE:=libext4
193
194# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
195#
196LOCAL_MODULE_CLASS := STATIC_LIBRARIES
197MY_intermediates := $(call local-intermediates-dir)
198
199# LOCAL_PATH/extensions needed because of dirty #include "blabla.c"
200LOCAL_C_INCLUDES:= \
201	$(LOCAL_PATH)/include/ \
202	$(KERNEL_HEADERS) \
203	$(MY_intermediates)/extensions/ \
204	$(LOCAL_PATH)/extensions/
205
206LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
207# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
208# LOCAL_CFLAGS+=-D_INIT=lib$*_init
209LOCAL_CFLAGS+=-DXTABLES_INTERNAL
210# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
211LOCAL_CFLAGS+=-D__ANDROID__
212
213MY_initext4_func  := $(addprefix ipt_,${MY_pf4_build_mod})
214MY_GEN_INITEXT4:= $(MY_intermediates)/extensions/initext4.c
215$(MY_GEN_INITEXT4):
216	@mkdir -p $(dir $@)
217	@( \
218	echo "" >$@; \
219	for i in ${MY_initext4_func}; do \
220		echo "extern void lib$${i}_init(void);" >>$@; \
221	done; \
222	echo "void init_extensions4(void);" >>$@; \
223	echo "void init_extensions4(void)" >>$@; \
224	echo "{" >>$@; \
225	for i in ${MY_initext4_func}; do \
226		echo  " ""lib$${i}_init();" >>$@; \
227	done; \
228	echo "}" >>$@; \
229	);
230
231MY_lib_sources:= \
232	$(patsubst %,$(LOCAL_PATH)/extensions/libipt_%.c,${MY_pf4_build_mod})
233
234MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
235
236${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
237${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/extensions/filter_init $(PRIVATE_PATH)/extensions/$(notdir $@) > $@
238${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
239${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
240${MY_gen_lib_sources}: $(MY_lib_sources)
241	$(transform-generated-source)
242
243$(MY_intermediates)/extensions/initext4.o : $(MY_GEN_INITEXT4) $(MY_gen_lib_sources)
244
245LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT4) ${MY_gen_lib_sources}
246
247include $(BUILD_STATIC_LIBRARY)
248
249#----------------------------------------------------------------
250# libext6
251
252include $(CLEAR_VARS)
253
254LOCAL_MODULE_TAGS:=
255LOCAL_MODULE:=libext6
256
257# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
258#
259LOCAL_MODULE_CLASS := STATIC_LIBRARIES
260MY_intermediates := $(call local-intermediates-dir)
261
262# LOCAL_PATH/extensions needed because of dirty #include "blabla.c"
263LOCAL_C_INCLUDES:= \
264	$(LOCAL_PATH)/include/ \
265	$(KERNEL_HEADERS) \
266	$(MY_intermediates)/extensions/ \
267	$(LOCAL_PATH)/extensions/
268
269LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
270# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
271# LOCAL_CFLAGS+=-D_INIT=lib$*_init
272LOCAL_CFLAGS+=-DXTABLES_INTERNAL
273# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
274LOCAL_CFLAGS+=-D__ANDROID__
275
276MY_initext6_func := $(addprefix ip6t_,${MY_pf6_build_mod})
277MY_GEN_INITEXT6:= $(MY_intermediates)/extensions/initext6.c
278$(MY_GEN_INITEXT6):
279	@mkdir -p $(dir $@)
280	@( \
281	echo "" >$@; \
282	for i in ${MY_initext6_func}; do \
283		echo "extern void lib$${i}_init(void);" >>$@; \
284	done; \
285	echo "void init_extensions6(void);" >>$@; \
286	echo "void init_extensions6(void)" >>$@; \
287	echo "{" >>$@; \
288	for i in ${MY_initext6_func}; do \
289		echo " ""lib$${i}_init();" >>$@; \
290	done; \
291	echo "}" >>$@; \
292	);
293
294MY_lib_sources:= \
295	$(patsubst %,$(LOCAL_PATH)/extensions/libip6t_%.c,${MY_pf6_build_mod})
296
297MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
298
299${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
300${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/extensions/filter_init $(PRIVATE_PATH)/extensions/$(notdir $@) > $@
301${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
302${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
303${MY_gen_lib_sources}: $(MY_lib_sources)
304	$(transform-generated-source)
305
306$(MY_intermediates)/extensions/initext6.o : $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
307
308LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
309
310include $(BUILD_STATIC_LIBRARY)
311
312#----------------------------------------------------------------
313# iptables
314
315
316include $(CLEAR_VARS)
317
318LOCAL_C_INCLUDES:= \
319	$(LOCAL_PATH)/include/
320
321LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
322LOCAL_CFLAGS+=-DALL_INCLUSIVE
323LOCAL_CFLAGS+=-DXTABLES_INTERNAL
324# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
325LOCAL_CFLAGS+=-D__ANDROID__
326
327LOCAL_SRC_FILES:= \
328	iptables-standalone.c iptables.c xshared.c
329
330
331LOCAL_MODULE_TAGS:=debug
332LOCAL_MODULE:=iptables
333
334LOCAL_STATIC_LIBRARIES := \
335	libext \
336	libext4 \
337	libip4tc \
338	libxtables
339
340include $(BUILD_EXECUTABLE)
341
342#----------------------------------------------------------------
343# ip6tables
344include $(CLEAR_VARS)
345
346LOCAL_C_INCLUDES:= \
347	$(LOCAL_PATH)/include/
348
349LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
350LOCAL_CFLAGS+=-DALL_INCLUSIVE
351LOCAL_CFLAGS+=-DXTABLES_INTERNAL
352# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
353LOCAL_CFLAGS+=-D__ANDROID__
354
355LOCAL_SRC_FILES:= \
356	ip6tables-standalone.c ip6tables.c xshared.c
357
358
359LOCAL_MODULE_TAGS:=debug
360LOCAL_MODULE:=ip6tables
361
362LOCAL_STATIC_LIBRARIES := \
363	libext \
364	libext6 \
365	libip6tc \
366	libxtables
367
368include $(BUILD_EXECUTABLE)
369
370
371#----------------------------------------------------------------
372endif
373