Android.mk revision 9b5ca5cf509bd1ed37ba692082ec6f3f180546c1
1LOCAL_PATH:= $(call my-dir)
2#----------------------------------------------------------------
3## extension
4
5MY_srcdir:=$(LOCAL_PATH)
6# Exclude some modules that are problematic to compile (types/header).
7MY_excluded_modules:=TCPOPTSTRIP
8
9MY_pfx_build_mod := $(patsubst ${MY_srcdir}/libxt_%.c,%,$(wildcard ${MY_srcdir}/libxt_*.c))
10MY_pf4_build_mod := $(patsubst ${MY_srcdir}/libipt_%.c,%,$(wildcard ${MY_srcdir}/libipt_*.c))
11MY_pf6_build_mod := $(patsubst ${MY_srcdir}/libip6t_%.c,%,$(wildcard ${MY_srcdir}/libip6t_*.c))
12MY_pfx_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pfx_build_mod})
13MY_pf4_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf4_build_mod})
14MY_pf6_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf6_build_mod})
15MY_pfx_objs      := $(patsubst %,libxt_%.o,${MY_pfx_build_mod})
16MY_pf4_objs      := $(patsubst %,libipt_%.o,${MY_pf4_build_mod})
17MY_pf6_objs      := $(patsubst %,libip6t_%.o,${MY_pf6_build_mod})
18MY_warnings      := -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare -Wno-pointer-arith
19
20#----------------------------------------------------------------
21# libext
22# TODO(jpa): Trun this into a function/macro as libext{,4,6} are all the same.
23
24include $(CLEAR_VARS)
25
26LOCAL_MODULE_TAGS:=
27LOCAL_MODULE:=libext
28
29# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
30#
31LOCAL_MODULE_CLASS := STATIC_LIBRARIES
32MY_intermediates := $(call local-intermediates-dir)
33
34# LOCAL_PATH needed because of dirty #include "blabla.c"
35LOCAL_C_INCLUDES:= \
36	$(LOCAL_PATH)/../include/ \
37	$(KERNEL_HEADERS) \
38	$(MY_intermediates) \
39	$(LOCAL_PATH)
40
41LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
42# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
43# LOCAL_CFLAGS+=-D_INIT=lib$*_init
44LOCAL_CFLAGS+=-DXTABLES_INTERNAL
45# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
46LOCAL_CFLAGS+=-D__ANDROID__
47LOCAL_CFLAGS += $(MY_warnings)
48
49MY_initext_func := $(addprefix xt_,${MY_pfx_build_mod})
50MY_GEN_INITEXT:= $(MY_intermediates)/initext.c
51$(MY_GEN_INITEXT):
52	@mkdir -p $(dir $@)
53	@( \
54	echo "" >$@; \
55	for i in ${MY_initext_func}; do \
56		echo "extern void lib$${i}_init(void);" >>$@; \
57	done; \
58	echo "void init_extensions(void);" >>$@; \
59	echo "void init_extensions(void)" >>$@; \
60	echo "{" >>$@; \
61	for i in ${MY_initext_func}; do \
62		echo " ""lib$${i}_init();" >>$@; \
63	done; \
64	echo "}" >>$@; \
65	);
66
67MY_lib_sources:= \
68	$(patsubst %,$(LOCAL_PATH)/libxt_%.c,${MY_pfx_build_mod})
69
70MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
71
72${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
73${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@
74${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
75${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
76${MY_gen_lib_sources}: $(MY_lib_sources)
77	$(transform-generated-source)
78
79$(MY_intermediates)/initext.o : $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
80
81LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
82
83include $(BUILD_STATIC_LIBRARY)
84
85#----------------------------------------------------------------
86# libext4
87
88include $(CLEAR_VARS)
89
90LOCAL_MODULE_TAGS:=
91LOCAL_MODULE:=libext4
92
93# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
94#
95LOCAL_MODULE_CLASS := STATIC_LIBRARIES
96MY_intermediates := $(call local-intermediates-dir)
97
98# LOCAL_PATH needed because of dirty #include "blabla.c"
99LOCAL_C_INCLUDES:= \
100	$(LOCAL_PATH)/../include/ \
101	$(KERNEL_HEADERS) \
102	$(MY_intermediates)/ \
103	$(LOCAL_PATH)/
104
105LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
106# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
107# LOCAL_CFLAGS+=-D_INIT=lib$*_init
108LOCAL_CFLAGS+=-DXTABLES_INTERNAL
109# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
110LOCAL_CFLAGS+=-D__ANDROID__
111LOCAL_CFLAGS += $(MY_warnings)
112
113MY_initext4_func  := $(addprefix ipt_,${MY_pf4_build_mod})
114MY_GEN_INITEXT4:= $(MY_intermediates)/initext4.c
115$(MY_GEN_INITEXT4):
116	@mkdir -p $(dir $@)
117	@( \
118	echo "" >$@; \
119	for i in ${MY_initext4_func}; do \
120		echo "extern void lib$${i}_init(void);" >>$@; \
121	done; \
122	echo "void init_extensions4(void);" >>$@; \
123	echo "void init_extensions4(void)" >>$@; \
124	echo "{" >>$@; \
125	for i in ${MY_initext4_func}; do \
126		echo  " ""lib$${i}_init();" >>$@; \
127	done; \
128	echo "}" >>$@; \
129	);
130
131MY_lib_sources:= \
132	$(patsubst %,$(LOCAL_PATH)/libipt_%.c,${MY_pf4_build_mod})
133
134MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
135
136${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
137${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@
138${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
139${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
140${MY_gen_lib_sources}: $(MY_lib_sources)
141	$(transform-generated-source)
142
143$(MY_intermediates)/initext4.o : $(MY_GEN_INITEXT4) $(MY_gen_lib_sources)
144
145LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT4) ${MY_gen_lib_sources}
146
147include $(BUILD_STATIC_LIBRARY)
148
149#----------------------------------------------------------------
150# libext6
151
152include $(CLEAR_VARS)
153
154LOCAL_MODULE_TAGS:=
155LOCAL_MODULE:=libext6
156
157# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
158#
159LOCAL_MODULE_CLASS := STATIC_LIBRARIES
160MY_intermediates := $(call local-intermediates-dir)
161
162# LOCAL_PATH needed because of dirty #include "blabla.c"
163LOCAL_C_INCLUDES:= \
164	$(LOCAL_PATH)/../include/ \
165	$(KERNEL_HEADERS) \
166	$(MY_intermediates) \
167	$(LOCAL_PATH)
168
169LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
170# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
171# LOCAL_CFLAGS+=-D_INIT=lib$*_init
172LOCAL_CFLAGS+=-DXTABLES_INTERNAL
173# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
174LOCAL_CFLAGS+=-D__ANDROID__
175LOCAL_CFLAGS += $(MY_warnings)
176
177MY_initext6_func := $(addprefix ip6t_,${MY_pf6_build_mod})
178MY_GEN_INITEXT6:= $(MY_intermediates)/initext6.c
179$(MY_GEN_INITEXT6):
180	@mkdir -p $(dir $@)
181	@( \
182	echo "" >$@; \
183	for i in ${MY_initext6_func}; do \
184		echo "extern void lib$${i}_init(void);" >>$@; \
185	done; \
186	echo "void init_extensions6(void);" >>$@; \
187	echo "void init_extensions6(void)" >>$@; \
188	echo "{" >>$@; \
189	for i in ${MY_initext6_func}; do \
190		echo " ""lib$${i}_init();" >>$@; \
191	done; \
192	echo "}" >>$@; \
193	);
194
195MY_lib_sources:= \
196	$(patsubst %,$(LOCAL_PATH)/libip6t_%.c,${MY_pf6_build_mod})
197
198MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources})
199
200${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH)
201${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@
202${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE)
203${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES)
204${MY_gen_lib_sources}: $(MY_lib_sources)
205	$(transform-generated-source)
206
207$(MY_intermediates)/initext6.o : $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
208
209LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
210
211include $(BUILD_STATIC_LIBRARY)
212
213#----------------------------------------------------------------
214