Android.mk revision e37d45ce390c2f5a7f1e64742b9100ecef0def54
1ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_PATH:= $(call my-dir)
2ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#----------------------------------------------------------------
3ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala## extension
4ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
5ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_srcdir:=$(LOCAL_PATH)
6ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# Exclude some modules that are problematic to compile (types/header).
7ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_excluded_modules:=TCPOPTSTRIP
8ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
9ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pfx_build_mod := $(patsubst ${MY_srcdir}/libxt_%.c,%,$(wildcard ${MY_srcdir}/libxt_*.c))
10ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf4_build_mod := $(patsubst ${MY_srcdir}/libipt_%.c,%,$(wildcard ${MY_srcdir}/libipt_*.c))
11ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf6_build_mod := $(patsubst ${MY_srcdir}/libip6t_%.c,%,$(wildcard ${MY_srcdir}/libip6t_*.c))
12ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pfx_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pfx_build_mod})
13ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf4_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf4_build_mod})
14ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf6_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf6_build_mod})
15ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pfx_objs      := $(patsubst %,libxt_%.o,${MY_pfx_build_mod})
16ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf4_objs      := $(patsubst %,libipt_%.o,${MY_pf4_build_mod})
17ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_pf6_objs      := $(patsubst %,libip6t_%.o,${MY_pf6_build_mod})
18ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
19ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#----------------------------------------------------------------
20ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# libext
21ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# TODO(jpa): Trun this into a function/macro as libext{,4,6} are all the same.
22ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
23ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvalainclude $(CLEAR_VARS)
24ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
25ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_MODULE_TAGS:=
26ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_MODULE:=libext
27ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
28ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir)
29ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#
30ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_MODULE_CLASS := STATIC_LIBRARIES
31ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_intermediates := $(call local-intermediates-dir)
32ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
33ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# LOCAL_PATH needed because of dirty #include "blabla.c"
34ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_C_INCLUDES:= \
35ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	$(LOCAL_PATH)/../include/ \
36ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	$(KERNEL_HEADERS) \
37ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	$(MY_intermediates) \
38ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	$(LOCAL_PATH)
39ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
40ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_CFLAGS:=-DNO_SHARED_LIBS=1
41ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION.
42ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# LOCAL_CFLAGS+=-D_INIT=lib$*_init
43ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_CFLAGS+=-DXTABLES_INTERNAL
44ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala# Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__
45ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaLOCAL_CFLAGS+=-D__ANDROID__
46ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala
47ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_initext_func := $(addprefix xt_,${MY_pfx_build_mod})
48ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville TalvalaMY_GEN_INITEXT:= $(MY_intermediates)/initext.c
49ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala$(MY_GEN_INITEXT):
50ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	@mkdir -p $(dir $@)
51ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	@( \
52ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	echo "" >$@; \
53ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	for i in ${MY_initext_func}; do \
54ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala		echo "extern void lib$${i}_init(void);" >>$@; \
55ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala	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