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