xref: /aosp_15_r20/external/iptables/extensions/Android.bp (revision a71a954618bbadd4a345637e5edcf36eec826889)
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