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