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