| cc_defaults { |
| name: "libext_defaults", |
| defaults: ["iptables_defaults"], |
| |
| header_libs: ["iptables_config_header"], |
| |
| cflags: [ |
| "-DNO_SHARED_LIBS=1", |
| "-DXTABLES_INTERNAL", |
| |
| "-Wno-format", |
| "-Wno-missing-field-initializers", |
| // libxt_recent.c:202:11: error: address of array 'info->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion] |
| "-Wno-pointer-bool-conversion", |
| "-Wno-tautological-pointer-compare", |
| ], |
| } |
| |
| // All of the extension source files have the same function name (_init). Since we don't support |
| // per-file cflags that upstream uses, instead: |
| // |
| // 1. Rewrite the source files with filter_init to have per-file function names. (libext*_srcs) |
| // 2. Create a new source file that defines a function (init_extensions*) with gen_init that calls |
| // all of the renamed _init functions (libext*_init) |
| // |
| // This all happens three times -- once each for libext, libext4, libext6 |
| |
| genrule { |
| name: "libext_init", |
| cmd: "$(location gen_init) '' $(locations libxt_*.c) > $(out)", |
| srcs: [ |
| "gen_init", |
| "libxt_*.c", |
| ], |
| out: ["initext.c"], |
| exclude_srcs: [ |
| // Exclude some modules that are problematic to compile (types/headers) |
| "libxt_TCPOPTSTRIP.c", |
| "libxt_connlabel.c", |
| "libxt_cgroup.c", |
| |
| "libxt_dccp.c", |
| "libxt_ipvs.c", |
| ], |
| } |
| |
| gensrcs { |
| name: "libext_srcs", |
| tool_files: ["filter_init"], |
| cmd: "$(location filter_init) $(in) > $(out)", |
| output_extension: "c", |
| srcs: ["libxt_*.c"], |
| exclude_srcs: [ |
| // Exclude some modules that are problematic to compile (types/headers) |
| "libxt_TCPOPTSTRIP.c", |
| "libxt_connlabel.c", |
| "libxt_cgroup.c", |
| |
| "libxt_dccp.c", |
| "libxt_ipvs.c", |
| ], |
| } |
| |
| cc_library_static { |
| name: "libext", |
| defaults: ["libext_defaults"], |
| srcs: [ |
| ":libext_init", |
| ":libext_srcs", |
| ], |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| genrule { |
| name: "libext4_init", |
| cmd: "$(location gen_init) '4' $(locations libipt_*.c) > $(out)", |
| srcs: [ |
| "gen_init", |
| "libipt_*.c", |
| ], |
| out: ["initext.c"], |
| } |
| |
| gensrcs { |
| name: "libext4_srcs", |
| tool_files: ["filter_init"], |
| cmd: "$(location filter_init) $(in) > $(out)", |
| output_extension: "c", |
| srcs: ["libipt_*.c"], |
| } |
| |
| cc_library_static { |
| name: "libext4", |
| defaults: ["libext_defaults"], |
| srcs: [ |
| ":libext4_init", |
| ":libext4_srcs", |
| ], |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////////////////////////// |
| |
| genrule { |
| name: "libext6_init", |
| cmd: "$(location gen_init) '6' $(locations libip6t_*.c) > $(out)", |
| srcs: [ |
| "gen_init", |
| "libip6t_*.c", |
| ], |
| out: ["initext.c"], |
| } |
| |
| gensrcs { |
| name: "libext6_srcs", |
| tool_files: ["filter_init"], |
| cmd: "$(location filter_init) $(in) > $(out)", |
| output_extension: "c", |
| srcs: ["libip6t_*.c"], |
| } |
| |
| cc_library_static { |
| name: "libext6", |
| defaults: ["libext_defaults"], |
| srcs: [ |
| ":libext6_init", |
| ":libext6_srcs", |
| ], |
| } |