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