xref: /aosp_15_r20/build/bazel/rules/apex/toolchain.bzl (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2021 The Android Open Source Project
2*7594170eSAndroid Build Coastguard Worker#
3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*7594170eSAndroid Build Coastguard Worker#
7*7594170eSAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*7594170eSAndroid Build Coastguard Worker#
9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*7594170eSAndroid Build Coastguard Worker# limitations under the License.
14*7594170eSAndroid Build Coastguard Worker
15*7594170eSAndroid Build Coastguard WorkerApexToolchainInfo = provider(
16*7594170eSAndroid Build Coastguard Worker    doc = "APEX toolchain",
17*7594170eSAndroid Build Coastguard Worker    fields = [
18*7594170eSAndroid Build Coastguard Worker        "aapt2",
19*7594170eSAndroid Build Coastguard Worker        "avbtool",
20*7594170eSAndroid Build Coastguard Worker        "apexer",
21*7594170eSAndroid Build Coastguard Worker        "mke2fs",
22*7594170eSAndroid Build Coastguard Worker        "resize2fs",
23*7594170eSAndroid Build Coastguard Worker        "e2fsdroid",
24*7594170eSAndroid Build Coastguard Worker        "sefcontext_compile",
25*7594170eSAndroid Build Coastguard Worker        "conv_apex_manifest",
26*7594170eSAndroid Build Coastguard Worker        "android_jar",
27*7594170eSAndroid Build Coastguard Worker        "apex_compression_tool",
28*7594170eSAndroid Build Coastguard Worker        "soong_zip",
29*7594170eSAndroid Build Coastguard Worker        "jsonmodify",
30*7594170eSAndroid Build Coastguard Worker        "manifest_fixer",
31*7594170eSAndroid Build Coastguard Worker        "gen_ndk_usedby_apex",
32*7594170eSAndroid Build Coastguard Worker        "readelf",
33*7594170eSAndroid Build Coastguard Worker        "gen_java_usedby_apex",
34*7594170eSAndroid Build Coastguard Worker        "dexdeps",
35*7594170eSAndroid Build Coastguard Worker        "notice_generator",
36*7594170eSAndroid Build Coastguard Worker    ],
37*7594170eSAndroid Build Coastguard Worker)
38*7594170eSAndroid Build Coastguard Worker
39*7594170eSAndroid Build Coastguard Workerdef _apex_toolchain_impl(ctx):
40*7594170eSAndroid Build Coastguard Worker    toolchain_info = platform_common.ToolchainInfo(
41*7594170eSAndroid Build Coastguard Worker        toolchain_info = ApexToolchainInfo(
42*7594170eSAndroid Build Coastguard Worker            aapt2 = ctx.file.aapt2,
43*7594170eSAndroid Build Coastguard Worker            avbtool = ctx.attr.avbtool,
44*7594170eSAndroid Build Coastguard Worker            apexer = ctx.attr.apexer,
45*7594170eSAndroid Build Coastguard Worker            mke2fs = ctx.attr.mke2fs,
46*7594170eSAndroid Build Coastguard Worker            resize2fs = ctx.attr.resize2fs,
47*7594170eSAndroid Build Coastguard Worker            e2fsdroid = ctx.attr.e2fsdroid,
48*7594170eSAndroid Build Coastguard Worker            sefcontext_compile = ctx.attr.sefcontext_compile,
49*7594170eSAndroid Build Coastguard Worker            conv_apex_manifest = ctx.attr.conv_apex_manifest,
50*7594170eSAndroid Build Coastguard Worker            android_jar = ctx.file.android_jar,
51*7594170eSAndroid Build Coastguard Worker            apex_compression_tool = ctx.attr.apex_compression_tool,
52*7594170eSAndroid Build Coastguard Worker            soong_zip = ctx.file.soong_zip,
53*7594170eSAndroid Build Coastguard Worker            jsonmodify = ctx.attr.jsonmodify,
54*7594170eSAndroid Build Coastguard Worker            manifest_fixer = ctx.attr.manifest_fixer,
55*7594170eSAndroid Build Coastguard Worker            gen_ndk_usedby_apex = ctx.attr.gen_ndk_usedby_apex,
56*7594170eSAndroid Build Coastguard Worker            readelf = ctx.attr.readelf,
57*7594170eSAndroid Build Coastguard Worker            gen_java_usedby_apex = ctx.attr.gen_java_usedby_apex,
58*7594170eSAndroid Build Coastguard Worker            dexdeps = ctx.attr.dexdeps,
59*7594170eSAndroid Build Coastguard Worker            notice_generator = ctx.attr.notice_generator,
60*7594170eSAndroid Build Coastguard Worker        ),
61*7594170eSAndroid Build Coastguard Worker    )
62*7594170eSAndroid Build Coastguard Worker    return [toolchain_info]
63*7594170eSAndroid Build Coastguard Worker
64*7594170eSAndroid Build Coastguard Workerapex_toolchain = rule(
65*7594170eSAndroid Build Coastguard Worker    implementation = _apex_toolchain_impl,
66*7594170eSAndroid Build Coastguard Worker    attrs = {
67*7594170eSAndroid Build Coastguard Worker        "aapt2": attr.label(allow_single_file = True, cfg = "exec", executable = True, mandatory = True),
68*7594170eSAndroid Build Coastguard Worker        "android_jar": attr.label(allow_single_file = True, cfg = "exec", mandatory = True),
69*7594170eSAndroid Build Coastguard Worker        "apex_compression_tool": attr.label(cfg = "exec", executable = True, mandatory = True),
70*7594170eSAndroid Build Coastguard Worker        "apexer": attr.label(cfg = "exec", executable = True, mandatory = True),
71*7594170eSAndroid Build Coastguard Worker        "avbtool": attr.label(cfg = "exec", executable = True, mandatory = True),
72*7594170eSAndroid Build Coastguard Worker        "conv_apex_manifest": attr.label(cfg = "exec", executable = True, mandatory = True),
73*7594170eSAndroid Build Coastguard Worker        "dexdeps": attr.label(cfg = "exec", executable = True, mandatory = True),
74*7594170eSAndroid Build Coastguard Worker        "e2fsdroid": attr.label(cfg = "exec", executable = True, mandatory = True),
75*7594170eSAndroid Build Coastguard Worker        "gen_java_usedby_apex": attr.label(cfg = "exec", executable = True, mandatory = True, allow_single_file = [".sh"]),
76*7594170eSAndroid Build Coastguard Worker        "gen_ndk_usedby_apex": attr.label(cfg = "exec", executable = True, mandatory = True, allow_single_file = [".sh"]),
77*7594170eSAndroid Build Coastguard Worker        "jsonmodify": attr.label(cfg = "exec", executable = True, mandatory = True),
78*7594170eSAndroid Build Coastguard Worker        "manifest_fixer": attr.label(cfg = "exec", executable = True, mandatory = True),
79*7594170eSAndroid Build Coastguard Worker        "mke2fs": attr.label(cfg = "exec", executable = True, mandatory = True),
80*7594170eSAndroid Build Coastguard Worker        "notice_generator": attr.label(allow_single_file = True, cfg = "exec", executable = True, mandatory = True),
81*7594170eSAndroid Build Coastguard Worker        "readelf": attr.label(cfg = "exec", executable = True, mandatory = True, allow_single_file = True),
82*7594170eSAndroid Build Coastguard Worker        "resize2fs": attr.label(cfg = "exec", executable = True, mandatory = True),
83*7594170eSAndroid Build Coastguard Worker        "sefcontext_compile": attr.label(cfg = "exec", executable = True, mandatory = True),
84*7594170eSAndroid Build Coastguard Worker        # soong_zip is added as a dependency of apex_compression_tool which uses
85*7594170eSAndroid Build Coastguard Worker        # soong_zip to compress APEX files. avbtool is also used in apex_compression tool
86*7594170eSAndroid Build Coastguard Worker        # and has been added to apex toolchain previously.
87*7594170eSAndroid Build Coastguard Worker        "soong_zip": attr.label(allow_single_file = True, cfg = "exec", executable = True, mandatory = True),
88*7594170eSAndroid Build Coastguard Worker    },
89*7594170eSAndroid Build Coastguard Worker)
90