1*9e965d6fSRomain Jobredeaux# Copyright 2021 The Bazel Authors. All rights reserved. 2*9e965d6fSRomain Jobredeaux# 3*9e965d6fSRomain Jobredeaux# Licensed under the Apache License, Version 2.0 (the "License"); 4*9e965d6fSRomain Jobredeaux# you may not use this file except in compliance with the License. 5*9e965d6fSRomain Jobredeaux# You may obtain a copy of the License at 6*9e965d6fSRomain Jobredeaux# 7*9e965d6fSRomain Jobredeaux# http://www.apache.org/licenses/LICENSE-2.0 8*9e965d6fSRomain Jobredeaux# 9*9e965d6fSRomain Jobredeaux# Unless required by applicable law or agreed to in writing, software 10*9e965d6fSRomain Jobredeaux# distributed under the License is distributed on an "AS IS" BASIS, 11*9e965d6fSRomain Jobredeaux# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9e965d6fSRomain Jobredeaux# See the License for the specific language governing permissions and 13*9e965d6fSRomain Jobredeaux# limitations under the License. 14*9e965d6fSRomain Jobredeaux 15*9e965d6fSRomain Jobredeaux"""Attributes for android_application.""" 16*9e965d6fSRomain Jobredeaux 17*9e965d6fSRomain Jobredeauxload( 18*9e965d6fSRomain Jobredeaux "//rules:attrs.bzl", 19*9e965d6fSRomain Jobredeaux _attrs = "attrs", 20*9e965d6fSRomain Jobredeaux) 21*9e965d6fSRomain Jobredeaux 22*9e965d6fSRomain JobredeauxANDROID_APPLICATION_ATTRS = _attrs.add( 23*9e965d6fSRomain Jobredeaux dict( 24*9e965d6fSRomain Jobredeaux application_id = attr.string(), 25*9e965d6fSRomain Jobredeaux base_module = attr.label(allow_files = False), 26*9e965d6fSRomain Jobredeaux bundle_config_file = attr.label( 27*9e965d6fSRomain Jobredeaux allow_single_file = [".pb.json"], 28*9e965d6fSRomain Jobredeaux doc = ("Path to config.pb.json file, see " + 29*9e965d6fSRomain Jobredeaux "https://github.com/google/bundletool/blob/master/src/main/proto/config.proto " + 30*9e965d6fSRomain Jobredeaux "for definition.\n\nNote: this attribute is subject to changes which may " + 31*9e965d6fSRomain Jobredeaux "require teams to migrate their configurations to a build target."), 32*9e965d6fSRomain Jobredeaux ), 33*9e965d6fSRomain Jobredeaux app_integrity_config = attr.label( 34*9e965d6fSRomain Jobredeaux allow_single_file = [".binarypb"], 35*9e965d6fSRomain Jobredeaux doc = "Configuration of the integrity protection options. " + 36*9e965d6fSRomain Jobredeaux "Provide a path to a binary .binarypb instance of " + 37*9e965d6fSRomain Jobredeaux "https://github.com/google/bundletool/blob/master/src/main/proto/app_integrity_config.proto", 38*9e965d6fSRomain Jobredeaux ), 39*9e965d6fSRomain Jobredeaux rotation_config = attr.label( 40*9e965d6fSRomain Jobredeaux allow_single_file = [".textproto"], 41*9e965d6fSRomain Jobredeaux default = None, 42*9e965d6fSRomain Jobredeaux ), 43*9e965d6fSRomain Jobredeaux custom_package = attr.string(), 44*9e965d6fSRomain Jobredeaux feature_modules = attr.label_list(allow_files = False), 45*9e965d6fSRomain Jobredeaux _bundle_deploy = attr.label( 46*9e965d6fSRomain Jobredeaux allow_single_file = True, 47*9e965d6fSRomain Jobredeaux default = ":bundle_deploy.sh_template", 48*9e965d6fSRomain Jobredeaux ), 49*9e965d6fSRomain Jobredeaux _bundle_keystore_properties = attr.label( 50*9e965d6fSRomain Jobredeaux allow_single_file = True, 51*9e965d6fSRomain Jobredeaux default = "//rules:bundle_keystore_properties.tmpl", 52*9e965d6fSRomain Jobredeaux ), 53*9e965d6fSRomain Jobredeaux _feature_manifest_script = attr.label( 54*9e965d6fSRomain Jobredeaux allow_single_file = True, 55*9e965d6fSRomain Jobredeaux cfg = "exec", 56*9e965d6fSRomain Jobredeaux executable = True, 57*9e965d6fSRomain Jobredeaux default = ":gen_android_feature_manifest.sh", 58*9e965d6fSRomain Jobredeaux ), 59*9e965d6fSRomain Jobredeaux _java_toolchain = attr.label( 60*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:toolchain_android_only"), 61*9e965d6fSRomain Jobredeaux ), 62*9e965d6fSRomain Jobredeaux _merge_manifests = attr.label( 63*9e965d6fSRomain Jobredeaux default = ":merge_feature_manifests.par", 64*9e965d6fSRomain Jobredeaux allow_single_file = True, 65*9e965d6fSRomain Jobredeaux cfg = "exec", 66*9e965d6fSRomain Jobredeaux executable = True, 67*9e965d6fSRomain Jobredeaux ), 68*9e965d6fSRomain Jobredeaux _priority_feature_manifest_script = attr.label( 69*9e965d6fSRomain Jobredeaux allow_single_file = True, 70*9e965d6fSRomain Jobredeaux cfg = "exec", 71*9e965d6fSRomain Jobredeaux executable = True, 72*9e965d6fSRomain Jobredeaux default = ":gen_priority_android_feature_manifest.sh", 73*9e965d6fSRomain Jobredeaux ), 74*9e965d6fSRomain Jobredeaux _host_javabase = attr.label( 75*9e965d6fSRomain Jobredeaux cfg = "exec", 76*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:current_java_runtime"), 77*9e965d6fSRomain Jobredeaux ), 78*9e965d6fSRomain Jobredeaux ), 79*9e965d6fSRomain Jobredeaux _attrs.ANDROID_SDK, 80*9e965d6fSRomain Jobredeaux) 81*9e965d6fSRomain Jobredeaux 82*9e965d6fSRomain JobredeauxANDROID_FEATURE_MODULE_ATTRS = dict( 83*9e965d6fSRomain Jobredeaux binary = attr.label(), 84*9e965d6fSRomain Jobredeaux feature_name = attr.string(), 85*9e965d6fSRomain Jobredeaux library = attr.label( 86*9e965d6fSRomain Jobredeaux allow_rules = ["android_library"], 87*9e965d6fSRomain Jobredeaux cfg = android_common.multi_cpu_configuration, 88*9e965d6fSRomain Jobredeaux mandatory = True, 89*9e965d6fSRomain Jobredeaux doc = "android_library target to include as a feature split.", 90*9e965d6fSRomain Jobredeaux ), 91*9e965d6fSRomain Jobredeaux manifest = attr.label(allow_single_file = True), 92*9e965d6fSRomain Jobredeaux title_id = attr.string(), 93*9e965d6fSRomain Jobredeaux title_lib = attr.string(), 94*9e965d6fSRomain Jobredeaux _feature_module_validation_script = attr.label( 95*9e965d6fSRomain Jobredeaux allow_single_file = True, 96*9e965d6fSRomain Jobredeaux cfg = "exec", 97*9e965d6fSRomain Jobredeaux executable = True, 98*9e965d6fSRomain Jobredeaux default = ":feature_module_validation.sh", 99*9e965d6fSRomain Jobredeaux ), 100*9e965d6fSRomain Jobredeaux) 101