1*a71a9546SAutomerger Merge Workerpackage { 2*a71a9546SAutomerger Merge Worker // See: http://go/android-license-faq 3*a71a9546SAutomerger Merge Worker // A large-scale-change added 'default_applicable_licenses' to import 4*a71a9546SAutomerger Merge Worker // all of the 'license_kinds' from "external_iptables_license" 5*a71a9546SAutomerger Merge Worker // to get the below license kinds: 6*a71a9546SAutomerger Merge Worker // SPDX-license-identifier-GPL 7*a71a9546SAutomerger Merge Worker // SPDX-license-identifier-GPL-2.0 8*a71a9546SAutomerger Merge Worker default_applicable_licenses: ["external_iptables_license"], 9*a71a9546SAutomerger Merge Worker} 10*a71a9546SAutomerger Merge Worker 11*a71a9546SAutomerger Merge Workercc_defaults { 12*a71a9546SAutomerger Merge Worker name: "libext_defaults", 13*a71a9546SAutomerger Merge Worker defaults: ["iptables_defaults"], 14*a71a9546SAutomerger Merge Worker 15*a71a9546SAutomerger Merge Worker header_libs: ["iptables_config_header"], 16*a71a9546SAutomerger Merge Worker 17*a71a9546SAutomerger Merge Worker cflags: [ 18*a71a9546SAutomerger Merge Worker "-DNO_SHARED_LIBS=1", 19*a71a9546SAutomerger Merge Worker "-DXTABLES_INTERNAL", 20*a71a9546SAutomerger Merge Worker 21*a71a9546SAutomerger Merge Worker "-Wno-format", 22*a71a9546SAutomerger Merge Worker "-Wno-missing-field-initializers", 23*a71a9546SAutomerger Merge Worker "-Wno-tautological-pointer-compare", 24*a71a9546SAutomerger Merge Worker ], 25*a71a9546SAutomerger Merge Worker} 26*a71a9546SAutomerger Merge Worker 27*a71a9546SAutomerger Merge Worker// All of the extension source files have the same function name (_init). Since we don't support 28*a71a9546SAutomerger Merge Worker// per-file cflags that upstream uses, instead: 29*a71a9546SAutomerger Merge Worker// 30*a71a9546SAutomerger Merge Worker// 1. Rewrite the source files with filter_init to have per-file function names. (libext*_srcs) 31*a71a9546SAutomerger Merge Worker// 2. Create a new source file that defines a function (init_extensions*) with gen_init that calls 32*a71a9546SAutomerger Merge Worker// all of the renamed _init functions (libext*_init) 33*a71a9546SAutomerger Merge Worker// 34*a71a9546SAutomerger Merge Worker// This all happens three times -- once each for libext, libext4, libext6 35*a71a9546SAutomerger Merge Worker 36*a71a9546SAutomerger Merge Workergenrule { 37*a71a9546SAutomerger Merge Worker name: "libext_init", 38*a71a9546SAutomerger Merge Worker cmd: "$(location gen_init) '' $(locations libxt_*.c) > $(out)", 39*a71a9546SAutomerger Merge Worker srcs: [ 40*a71a9546SAutomerger Merge Worker "gen_init", 41*a71a9546SAutomerger Merge Worker "libxt_*.c", 42*a71a9546SAutomerger Merge Worker ], 43*a71a9546SAutomerger Merge Worker out: ["initext.c"], 44*a71a9546SAutomerger Merge Worker exclude_srcs: [ 45*a71a9546SAutomerger Merge Worker // Exclude some modules that are problematic to compile (types/headers) 46*a71a9546SAutomerger Merge Worker "libxt_TCPOPTSTRIP.c", 47*a71a9546SAutomerger Merge Worker "libxt_connlabel.c", 48*a71a9546SAutomerger Merge Worker "libxt_cgroup.c", 49*a71a9546SAutomerger Merge Worker 50*a71a9546SAutomerger Merge Worker "libxt_dccp.c", 51*a71a9546SAutomerger Merge Worker "libxt_ipvs.c", 52*a71a9546SAutomerger Merge Worker ], 53*a71a9546SAutomerger Merge Worker} 54*a71a9546SAutomerger Merge Worker 55*a71a9546SAutomerger Merge Workergensrcs { 56*a71a9546SAutomerger Merge Worker name: "libext_srcs", 57*a71a9546SAutomerger Merge Worker tool_files: ["filter_init"], 58*a71a9546SAutomerger Merge Worker cmd: "$(location filter_init) $(in) > $(out)", 59*a71a9546SAutomerger Merge Worker output_extension: "c", 60*a71a9546SAutomerger Merge Worker srcs: ["libxt_*.c"], 61*a71a9546SAutomerger Merge Worker exclude_srcs: [ 62*a71a9546SAutomerger Merge Worker // Exclude some modules that are problematic to compile (types/headers) 63*a71a9546SAutomerger Merge Worker "libxt_TCPOPTSTRIP.c", 64*a71a9546SAutomerger Merge Worker "libxt_connlabel.c", 65*a71a9546SAutomerger Merge Worker "libxt_cgroup.c", 66*a71a9546SAutomerger Merge Worker 67*a71a9546SAutomerger Merge Worker "libxt_dccp.c", 68*a71a9546SAutomerger Merge Worker "libxt_ipvs.c", 69*a71a9546SAutomerger Merge Worker ], 70*a71a9546SAutomerger Merge Worker} 71*a71a9546SAutomerger Merge Worker 72*a71a9546SAutomerger Merge Workercc_library_static { 73*a71a9546SAutomerger Merge Worker name: "libext", 74*a71a9546SAutomerger Merge Worker defaults: ["libext_defaults"], 75*a71a9546SAutomerger Merge Worker srcs: [ 76*a71a9546SAutomerger Merge Worker ":libext_init", 77*a71a9546SAutomerger Merge Worker ":libext_srcs", 78*a71a9546SAutomerger Merge Worker ], 79*a71a9546SAutomerger Merge Worker} 80*a71a9546SAutomerger Merge Worker 81*a71a9546SAutomerger Merge Worker//////////////////////////////////////////////////////////////////////////////////////////////////// 82*a71a9546SAutomerger Merge Worker 83*a71a9546SAutomerger Merge Workergenrule { 84*a71a9546SAutomerger Merge Worker name: "libext4_init", 85*a71a9546SAutomerger Merge Worker cmd: "$(location gen_init) '4' $(locations libipt_*.c) > $(out)", 86*a71a9546SAutomerger Merge Worker srcs: [ 87*a71a9546SAutomerger Merge Worker "gen_init", 88*a71a9546SAutomerger Merge Worker "libipt_*.c", 89*a71a9546SAutomerger Merge Worker ], 90*a71a9546SAutomerger Merge Worker out: ["initext.c"], 91*a71a9546SAutomerger Merge Worker} 92*a71a9546SAutomerger Merge Worker 93*a71a9546SAutomerger Merge Workergensrcs { 94*a71a9546SAutomerger Merge Worker name: "libext4_srcs", 95*a71a9546SAutomerger Merge Worker tool_files: ["filter_init"], 96*a71a9546SAutomerger Merge Worker cmd: "$(location filter_init) $(in) > $(out)", 97*a71a9546SAutomerger Merge Worker output_extension: "c", 98*a71a9546SAutomerger Merge Worker srcs: ["libipt_*.c"], 99*a71a9546SAutomerger Merge Worker} 100*a71a9546SAutomerger Merge Worker 101*a71a9546SAutomerger Merge Workercc_library_static { 102*a71a9546SAutomerger Merge Worker name: "libext4", 103*a71a9546SAutomerger Merge Worker defaults: ["libext_defaults"], 104*a71a9546SAutomerger Merge Worker srcs: [ 105*a71a9546SAutomerger Merge Worker ":libext4_init", 106*a71a9546SAutomerger Merge Worker ":libext4_srcs", 107*a71a9546SAutomerger Merge Worker ], 108*a71a9546SAutomerger Merge Worker} 109*a71a9546SAutomerger Merge Worker 110*a71a9546SAutomerger Merge Worker//////////////////////////////////////////////////////////////////////////////////////////////////// 111*a71a9546SAutomerger Merge Worker 112*a71a9546SAutomerger Merge Workergenrule { 113*a71a9546SAutomerger Merge Worker name: "libext6_init", 114*a71a9546SAutomerger Merge Worker cmd: "$(location gen_init) '6' $(locations libip6t_*.c) > $(out)", 115*a71a9546SAutomerger Merge Worker srcs: [ 116*a71a9546SAutomerger Merge Worker "gen_init", 117*a71a9546SAutomerger Merge Worker "libip6t_*.c", 118*a71a9546SAutomerger Merge Worker ], 119*a71a9546SAutomerger Merge Worker out: ["initext.c"], 120*a71a9546SAutomerger Merge Worker} 121*a71a9546SAutomerger Merge Worker 122*a71a9546SAutomerger Merge Workergensrcs { 123*a71a9546SAutomerger Merge Worker name: "libext6_srcs", 124*a71a9546SAutomerger Merge Worker tool_files: ["filter_init"], 125*a71a9546SAutomerger Merge Worker cmd: "$(location filter_init) $(in) > $(out)", 126*a71a9546SAutomerger Merge Worker output_extension: "c", 127*a71a9546SAutomerger Merge Worker srcs: ["libip6t_*.c"], 128*a71a9546SAutomerger Merge Worker} 129*a71a9546SAutomerger Merge Worker 130*a71a9546SAutomerger Merge Workercc_library_static { 131*a71a9546SAutomerger Merge Worker name: "libext6", 132*a71a9546SAutomerger Merge Worker defaults: ["libext_defaults"], 133*a71a9546SAutomerger Merge Worker srcs: [ 134*a71a9546SAutomerger Merge Worker ":libext6_init", 135*a71a9546SAutomerger Merge Worker ":libext6_srcs", 136*a71a9546SAutomerger Merge Worker ], 137*a71a9546SAutomerger Merge Worker} 138