| LOCAL_PATH:= $(call my-dir) |
| #---------------------------------------------------------------- |
| ## extension |
| |
| MY_srcdir:=$(LOCAL_PATH) |
| # Exclude some modules that are problematic to compile (types/header). |
| MY_excluded_modules:=DNAT SNAT TCPOPTSTRIP |
| |
| MY_pfx_build_mod := $(patsubst ${MY_srcdir}/libxt_%.c,%,$(wildcard ${MY_srcdir}/libxt_*.c)) |
| MY_pf4_build_mod := $(patsubst ${MY_srcdir}/libipt_%.c,%,$(wildcard ${MY_srcdir}/libipt_*.c)) |
| MY_pf6_build_mod := $(patsubst ${MY_srcdir}/libip6t_%.c,%,$(wildcard ${MY_srcdir}/libip6t_*.c)) |
| MY_pfx_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pfx_build_mod}) |
| MY_pf4_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf4_build_mod}) |
| MY_pf6_build_mod := $(filter-out ${MY_excluded_modules} dccp ipvs,${MY_pf6_build_mod}) |
| MY_pfx_objs := $(patsubst %,libxt_%.o,${MY_pfx_build_mod}) |
| MY_pf4_objs := $(patsubst %,libipt_%.o,${MY_pf4_build_mod}) |
| MY_pf6_objs := $(patsubst %,libip6t_%.o,${MY_pf6_build_mod}) |
| |
| #---------------------------------------------------------------- |
| # libext |
| # TODO(jpa): Trun this into a function/macro as libext{,4,6} are all the same. |
| |
| include $(CLEAR_VARS) |
| |
| LOCAL_MODULE_TAGS:= |
| LOCAL_MODULE:=libext |
| |
| # LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir) |
| # |
| LOCAL_MODULE_CLASS := SHARED_LIBRARIES |
| MY_intermediates := $(call local-intermediates-dir) |
| |
| # LOCAL_PATH needed because of dirty #include "blabla.c" |
| LOCAL_C_INCLUDES:= \ |
| $(LOCAL_PATH)/../include/ \ |
| $(KERNEL_HEADERS) \ |
| $(MY_intermediates) \ |
| $(LOCAL_PATH) |
| |
| LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1 |
| # The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION. |
| # LOCAL_CFLAGS+=-D_INIT=lib$*_init |
| LOCAL_CFLAGS+=-DXTABLES_INTERNAL |
| # Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__ |
| LOCAL_CFLAGS+=-D__ANDROID__ |
| |
| ifeq ($(USE_CLANG),1) |
| LOCAL_CFLAGS+=-Wno-error=pointer-bool-conversion |
| endif |
| |
| MY_initext_func := $(addprefix xt_,${MY_pfx_build_mod}) |
| MY_GEN_INITEXT:= $(MY_intermediates)/initext.c |
| $(MY_GEN_INITEXT): |
| @mkdir -p $(dir $@) |
| @( \ |
| echo "" >$@; \ |
| for i in ${MY_initext_func}; do \ |
| echo "extern void lib$${i}_init(void);" >>$@; \ |
| done; \ |
| echo "void init_extensions(void);" >>$@; \ |
| echo "void init_extensions(void)" >>$@; \ |
| echo "{" >>$@; \ |
| for i in ${MY_initext_func}; do \ |
| echo " ""lib$${i}_init();" >>$@; \ |
| done; \ |
| echo "}" >>$@; \ |
| ); |
| |
| MY_lib_sources:= \ |
| $(patsubst %,$(LOCAL_PATH)/libxt_%.c,${MY_pfx_build_mod}) |
| |
| MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources}) |
| |
| ${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH) |
| ${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@ |
| ${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE) |
| ${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES) |
| ${MY_gen_lib_sources}: $(MY_lib_sources) |
| $(transform-generated-source) |
| |
| $(MY_intermediates)/initext.o : $(MY_GEN_INITEXT) $(MY_gen_lib_sources) |
| |
| LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT) $(MY_gen_lib_sources) |
| |
| LOCAL_SHARED_LIBRARIES := \ |
| libxtables |
| |
| include $(BUILD_SHARED_LIBRARY) |
| |
| #---------------------------------------------------------------- |
| # libext4 |
| |
| include $(CLEAR_VARS) |
| |
| LOCAL_MODULE_TAGS:= |
| LOCAL_MODULE:=libext4 |
| |
| # LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir) |
| # |
| LOCAL_MODULE_CLASS := SHARED_LIBRARIES |
| MY_intermediates := $(call local-intermediates-dir) |
| |
| # LOCAL_PATH needed because of dirty #include "blabla.c" |
| LOCAL_C_INCLUDES:= \ |
| $(LOCAL_PATH)/../include/ \ |
| $(KERNEL_HEADERS) \ |
| $(MY_intermediates)/ \ |
| $(LOCAL_PATH)/ |
| |
| LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1 |
| # The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION. |
| # LOCAL_CFLAGS+=-D_INIT=lib$*_init |
| LOCAL_CFLAGS+=-DXTABLES_INTERNAL |
| # Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__ |
| LOCAL_CFLAGS+=-D__ANDROID__ |
| |
| MY_initext4_func := $(addprefix ipt_,${MY_pf4_build_mod}) |
| MY_GEN_INITEXT4:= $(MY_intermediates)/initext4.c |
| $(MY_GEN_INITEXT4): |
| @mkdir -p $(dir $@) |
| @( \ |
| echo "" >$@; \ |
| for i in ${MY_initext4_func}; do \ |
| echo "extern void lib$${i}_init(void);" >>$@; \ |
| done; \ |
| echo "void init_extensions4(void);" >>$@; \ |
| echo "void init_extensions4(void)" >>$@; \ |
| echo "{" >>$@; \ |
| for i in ${MY_initext4_func}; do \ |
| echo " ""lib$${i}_init();" >>$@; \ |
| done; \ |
| echo "}" >>$@; \ |
| ); |
| |
| MY_lib_sources:= \ |
| $(patsubst %,$(LOCAL_PATH)/libipt_%.c,${MY_pf4_build_mod}) |
| |
| MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources}) |
| |
| ${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH) |
| ${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@ |
| ${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE) |
| ${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES) |
| ${MY_gen_lib_sources}: $(MY_lib_sources) |
| $(transform-generated-source) |
| |
| $(MY_intermediates)/initext4.o : $(MY_GEN_INITEXT4) $(MY_gen_lib_sources) |
| |
| LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT4) ${MY_gen_lib_sources} |
| |
| LOCAL_SHARED_LIBRARIES := \ |
| libxtables |
| |
| include $(BUILD_SHARED_LIBRARY) |
| |
| #---------------------------------------------------------------- |
| # libext6 |
| |
| include $(CLEAR_VARS) |
| |
| LOCAL_MODULE_TAGS:= |
| LOCAL_MODULE:=libext6 |
| |
| # LOCAL_MODULE_CLASS must be defined before calling $(local-intermediates-dir) |
| # |
| LOCAL_MODULE_CLASS := SHARED_LIBRARIES |
| MY_intermediates := $(call local-intermediates-dir) |
| |
| # LOCAL_PATH needed because of dirty #include "blabla.c" |
| LOCAL_C_INCLUDES:= \ |
| $(LOCAL_PATH)/../include/ \ |
| $(KERNEL_HEADERS) \ |
| $(MY_intermediates) \ |
| $(LOCAL_PATH) |
| |
| LOCAL_CFLAGS:=-DNO_SHARED_LIBS=1 |
| # The $* does not work as expected. It ends up empty. Even with SECONDEXPANSION. |
| # LOCAL_CFLAGS+=-D_INIT=lib$*_init |
| LOCAL_CFLAGS+=-DXTABLES_INTERNAL |
| # Accommodate arm-eabi-4.4.3 tools that don't set __ANDROID__ |
| LOCAL_CFLAGS+=-D__ANDROID__ |
| |
| MY_initext6_func := $(addprefix ip6t_,${MY_pf6_build_mod}) |
| MY_GEN_INITEXT6:= $(MY_intermediates)/initext6.c |
| $(MY_GEN_INITEXT6): |
| @mkdir -p $(dir $@) |
| @( \ |
| echo "" >$@; \ |
| for i in ${MY_initext6_func}; do \ |
| echo "extern void lib$${i}_init(void);" >>$@; \ |
| done; \ |
| echo "void init_extensions6(void);" >>$@; \ |
| echo "void init_extensions6(void)" >>$@; \ |
| echo "{" >>$@; \ |
| for i in ${MY_initext6_func}; do \ |
| echo " ""lib$${i}_init();" >>$@; \ |
| done; \ |
| echo "}" >>$@; \ |
| ); |
| |
| MY_lib_sources:= \ |
| $(patsubst %,$(LOCAL_PATH)/libip6t_%.c,${MY_pf6_build_mod}) |
| |
| MY_gen_lib_sources:= $(patsubst $(LOCAL_PATH)/%,${MY_intermediates}/%,${MY_lib_sources}) |
| |
| ${MY_gen_lib_sources}: PRIVATE_PATH := $(LOCAL_PATH) |
| ${MY_gen_lib_sources}: PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/filter_init $(PRIVATE_PATH)/$(notdir $@) > $@ |
| ${MY_gen_lib_sources}: PRIVATE_MODULE := $(LOCAL_MODULE) |
| ${MY_gen_lib_sources}: PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES) |
| ${MY_gen_lib_sources}: $(MY_lib_sources) |
| $(transform-generated-source) |
| |
| $(MY_intermediates)/initext6.o : $(MY_GEN_INITEXT6) $(MY_gen_lib_sources) |
| |
| LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT6) $(MY_gen_lib_sources) |
| |
| LOCAL_SHARED_LIBRARIES := \ |
| libxtables |
| |
| include $(BUILD_SHARED_LIBRARY) |
| |
| #---------------------------------------------------------------- |