1*b7c941bbSAndroid Build Coastguard Worker// Copyright (C) 2016 The Android Open Source Project 2*b7c941bbSAndroid Build Coastguard Worker// 3*b7c941bbSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*b7c941bbSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*b7c941bbSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*b7c941bbSAndroid Build Coastguard Worker// 7*b7c941bbSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*b7c941bbSAndroid Build Coastguard Worker// 9*b7c941bbSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*b7c941bbSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*b7c941bbSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*b7c941bbSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*b7c941bbSAndroid Build Coastguard Worker// limitations under the License. 14*b7c941bbSAndroid Build Coastguard Worker 15*b7c941bbSAndroid Build Coastguard Workerpackage { 16*b7c941bbSAndroid Build Coastguard Worker default_applicable_licenses: ["Android-Apache-2.0"], 17*b7c941bbSAndroid Build Coastguard Worker default_team: "trendy_team_art_mainline", 18*b7c941bbSAndroid Build Coastguard Worker} 19*b7c941bbSAndroid Build Coastguard Worker 20*b7c941bbSAndroid Build Coastguard Workerjava_defaults { 21*b7c941bbSAndroid Build Coastguard Worker name: "CompilationTestCases_defaults", 22*b7c941bbSAndroid Build Coastguard Worker srcs: ["src/**/*.java"], 23*b7c941bbSAndroid Build Coastguard Worker data: [ 24*b7c941bbSAndroid Build Coastguard Worker ":apksigner", 25*b7c941bbSAndroid Build Coastguard Worker ":cts-compilation-testkey-files", 26*b7c941bbSAndroid Build Coastguard Worker ], 27*b7c941bbSAndroid Build Coastguard Worker device_common_data: [ 28*b7c941bbSAndroid Build Coastguard Worker ":StatusCheckerApp", 29*b7c941bbSAndroid Build Coastguard Worker ], 30*b7c941bbSAndroid Build Coastguard Worker java_resource_dirs: ["assets/"], 31*b7c941bbSAndroid Build Coastguard Worker device_common_java_resources: [ 32*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp", 33*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp_1_disable_embedded_profile_dm", 34*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp_1_dm", 35*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp_2_prof", 36*b7c941bbSAndroid Build Coastguard Worker ":AppUsingOtherApp", 37*b7c941bbSAndroid Build Coastguard Worker ":CompilationTestCases-package-dex-usage", 38*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp", 39*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_profile", 40*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_dm", 41*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_with_bad_profile", 42*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_with_good_profile", 43*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_debuggable", 44*b7c941bbSAndroid Build Coastguard Worker ":disable_embedded_profile_dm", 45*b7c941bbSAndroid Build Coastguard Worker ":empty_config_dm", 46*b7c941bbSAndroid Build Coastguard Worker ], 47*b7c941bbSAndroid Build Coastguard Worker libs: [ 48*b7c941bbSAndroid Build Coastguard Worker "cts-tradefed", 49*b7c941bbSAndroid Build Coastguard Worker "tradefed", 50*b7c941bbSAndroid Build Coastguard Worker "compatibility-host-util", 51*b7c941bbSAndroid Build Coastguard Worker "guava", 52*b7c941bbSAndroid Build Coastguard Worker "truth", 53*b7c941bbSAndroid Build Coastguard Worker ], 54*b7c941bbSAndroid Build Coastguard Worker static_libs: [ 55*b7c941bbSAndroid Build Coastguard Worker "android.content.pm.flags-aconfig-java-host", 56*b7c941bbSAndroid Build Coastguard Worker "art-aconfig-flags-java-lib-host", 57*b7c941bbSAndroid Build Coastguard Worker "flag-junit-host", 58*b7c941bbSAndroid Build Coastguard Worker ], 59*b7c941bbSAndroid Build Coastguard Worker} 60*b7c941bbSAndroid Build Coastguard Worker 61*b7c941bbSAndroid Build Coastguard Workerjava_test_host { 62*b7c941bbSAndroid Build Coastguard Worker name: "CtsCompilationTestCases", 63*b7c941bbSAndroid Build Coastguard Worker defaults: ["CompilationTestCases_defaults"], 64*b7c941bbSAndroid Build Coastguard Worker // tag this module as a cts test artifact 65*b7c941bbSAndroid Build Coastguard Worker test_suites: [ 66*b7c941bbSAndroid Build Coastguard Worker "cts", 67*b7c941bbSAndroid Build Coastguard Worker "general-tests", 68*b7c941bbSAndroid Build Coastguard Worker ], 69*b7c941bbSAndroid Build Coastguard Worker test_config: "CtsCompilationTestCases.xml", 70*b7c941bbSAndroid Build Coastguard Worker} 71*b7c941bbSAndroid Build Coastguard Worker 72*b7c941bbSAndroid Build Coastguard Workerjava_test_host { 73*b7c941bbSAndroid Build Coastguard Worker name: "CompilationTestCases", 74*b7c941bbSAndroid Build Coastguard Worker defaults: ["CompilationTestCases_defaults"], 75*b7c941bbSAndroid Build Coastguard Worker test_suites: [ 76*b7c941bbSAndroid Build Coastguard Worker "general-tests", 77*b7c941bbSAndroid Build Coastguard Worker ], 78*b7c941bbSAndroid Build Coastguard Worker test_config: "CompilationTestCases.xml", 79*b7c941bbSAndroid Build Coastguard Worker} 80*b7c941bbSAndroid Build Coastguard Worker 81*b7c941bbSAndroid Build Coastguard Worker// Generates a binary profile from a text profile for an APK. 82*b7c941bbSAndroid Build Coastguard Worker// The first input must be the text profile. 83*b7c941bbSAndroid Build Coastguard Worker// The second input must be the APK. 84*b7c941bbSAndroid Build Coastguard Workergenrule_defaults { 85*b7c941bbSAndroid Build Coastguard Worker name: "profile_defaults", 86*b7c941bbSAndroid Build Coastguard Worker tools: ["profman"], 87*b7c941bbSAndroid Build Coastguard Worker cmd: "inputs=($(in)) && " + 88*b7c941bbSAndroid Build Coastguard Worker "$(location profman) " + 89*b7c941bbSAndroid Build Coastguard Worker "--create-profile-from=$${inputs[0]} " + 90*b7c941bbSAndroid Build Coastguard Worker "--apk=$${inputs[1]} " + 91*b7c941bbSAndroid Build Coastguard Worker "--dex-location=base.apk " + 92*b7c941bbSAndroid Build Coastguard Worker "--reference-profile-file=$(out)", 93*b7c941bbSAndroid Build Coastguard Worker} 94*b7c941bbSAndroid Build Coastguard Worker 95*b7c941bbSAndroid Build Coastguard Workersh_binary { 96*b7c941bbSAndroid Build Coastguard Worker name: "generate_dm", 97*b7c941bbSAndroid Build Coastguard Worker host_supported: true, 98*b7c941bbSAndroid Build Coastguard Worker src: "scripts/generate_dm.sh", 99*b7c941bbSAndroid Build Coastguard Worker} 100*b7c941bbSAndroid Build Coastguard Worker 101*b7c941bbSAndroid Build Coastguard Worker// Generates a DM file. 102*b7c941bbSAndroid Build Coastguard Worker// Each input must be a binary profile or a config file in binary protobuf 103*b7c941bbSAndroid Build Coastguard Worker// format. 104*b7c941bbSAndroid Build Coastguard Workergenrule_defaults { 105*b7c941bbSAndroid Build Coastguard Worker name: "dm_defaults", 106*b7c941bbSAndroid Build Coastguard Worker tools: [ 107*b7c941bbSAndroid Build Coastguard Worker "generate_dm", 108*b7c941bbSAndroid Build Coastguard Worker "soong_zip", 109*b7c941bbSAndroid Build Coastguard Worker ], 110*b7c941bbSAndroid Build Coastguard Worker cmd: "$(location generate_dm) $(location soong_zip) $(out) $(in)", 111*b7c941bbSAndroid Build Coastguard Worker} 112*b7c941bbSAndroid Build Coastguard Worker 113*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 114*b7c941bbSAndroid Build Coastguard Worker name: "CtsCompilationApp_profile", 115*b7c941bbSAndroid Build Coastguard Worker defaults: ["profile_defaults"], 116*b7c941bbSAndroid Build Coastguard Worker srcs: [ 117*b7c941bbSAndroid Build Coastguard Worker "assets/primary.prof.txt", 118*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp", 119*b7c941bbSAndroid Build Coastguard Worker ], 120*b7c941bbSAndroid Build Coastguard Worker out: ["CtsCompilationApp.prof"], 121*b7c941bbSAndroid Build Coastguard Worker} 122*b7c941bbSAndroid Build Coastguard Worker 123*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 124*b7c941bbSAndroid Build Coastguard Worker name: "CtsCompilationApp_dm", 125*b7c941bbSAndroid Build Coastguard Worker defaults: ["dm_defaults"], 126*b7c941bbSAndroid Build Coastguard Worker srcs: [ 127*b7c941bbSAndroid Build Coastguard Worker ":CtsCompilationApp_profile", 128*b7c941bbSAndroid Build Coastguard Worker ], 129*b7c941bbSAndroid Build Coastguard Worker out: ["CtsCompilationApp.dm"], 130*b7c941bbSAndroid Build Coastguard Worker} 131*b7c941bbSAndroid Build Coastguard Worker 132*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 133*b7c941bbSAndroid Build Coastguard Worker name: "AppUsedByOtherApp_1_prof", 134*b7c941bbSAndroid Build Coastguard Worker defaults: ["profile_defaults"], 135*b7c941bbSAndroid Build Coastguard Worker srcs: [ 136*b7c941bbSAndroid Build Coastguard Worker "assets/app_used_by_other_app_1.prof.txt", 137*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp", 138*b7c941bbSAndroid Build Coastguard Worker ], 139*b7c941bbSAndroid Build Coastguard Worker out: ["AppUsedByOtherApp_1.prof"], 140*b7c941bbSAndroid Build Coastguard Worker} 141*b7c941bbSAndroid Build Coastguard Worker 142*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 143*b7c941bbSAndroid Build Coastguard Worker name: "AppUsedByOtherApp_1_dm", 144*b7c941bbSAndroid Build Coastguard Worker defaults: ["dm_defaults"], 145*b7c941bbSAndroid Build Coastguard Worker srcs: [ 146*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp_1_prof", 147*b7c941bbSAndroid Build Coastguard Worker ], 148*b7c941bbSAndroid Build Coastguard Worker out: ["AppUsedByOtherApp_1.dm"], 149*b7c941bbSAndroid Build Coastguard Worker} 150*b7c941bbSAndroid Build Coastguard Worker 151*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 152*b7c941bbSAndroid Build Coastguard Worker name: "AppUsedByOtherApp_2_prof", 153*b7c941bbSAndroid Build Coastguard Worker defaults: ["profile_defaults"], 154*b7c941bbSAndroid Build Coastguard Worker srcs: [ 155*b7c941bbSAndroid Build Coastguard Worker "assets/app_used_by_other_app_2.prof.txt", 156*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp", 157*b7c941bbSAndroid Build Coastguard Worker ], 158*b7c941bbSAndroid Build Coastguard Worker out: ["AppUsedByOtherApp_2.prof"], 159*b7c941bbSAndroid Build Coastguard Worker} 160*b7c941bbSAndroid Build Coastguard Worker 161*b7c941bbSAndroid Build Coastguard Workergenrule { 162*b7c941bbSAndroid Build Coastguard Worker name: "CompilationTestCases-package-dex-usage", 163*b7c941bbSAndroid Build Coastguard Worker srcs: [ 164*b7c941bbSAndroid Build Coastguard Worker ":libartservice_protos", 165*b7c941bbSAndroid Build Coastguard Worker "assets/package-dex-usage.textproto", 166*b7c941bbSAndroid Build Coastguard Worker ], 167*b7c941bbSAndroid Build Coastguard Worker tools: ["aprotoc"], 168*b7c941bbSAndroid Build Coastguard Worker cmd: "$(location aprotoc) " + 169*b7c941bbSAndroid Build Coastguard Worker "--encode=com.android.server.art.proto.DexUseProto " + 170*b7c941bbSAndroid Build Coastguard Worker "$(locations :libartservice_protos) " + 171*b7c941bbSAndroid Build Coastguard Worker "< $(location assets/package-dex-usage.textproto) > $(out)", 172*b7c941bbSAndroid Build Coastguard Worker out: ["package-dex-usage.pb"], 173*b7c941bbSAndroid Build Coastguard Worker} 174*b7c941bbSAndroid Build Coastguard Worker 175*b7c941bbSAndroid Build Coastguard Workergenrule { 176*b7c941bbSAndroid Build Coastguard Worker name: "CompilationTestCases-config-empty", 177*b7c941bbSAndroid Build Coastguard Worker srcs: [ 178*b7c941bbSAndroid Build Coastguard Worker ":libartservice_protos", 179*b7c941bbSAndroid Build Coastguard Worker ], 180*b7c941bbSAndroid Build Coastguard Worker tools: ["aprotoc"], 181*b7c941bbSAndroid Build Coastguard Worker cmd: "$(location aprotoc) " + 182*b7c941bbSAndroid Build Coastguard Worker "--encode=com.android.server.art.proto.DexMetadataConfig " + 183*b7c941bbSAndroid Build Coastguard Worker "$(locations :libartservice_protos) " + 184*b7c941bbSAndroid Build Coastguard Worker "<<<'' > $(out)", 185*b7c941bbSAndroid Build Coastguard Worker out: ["config-empty.pb"], 186*b7c941bbSAndroid Build Coastguard Worker} 187*b7c941bbSAndroid Build Coastguard Worker 188*b7c941bbSAndroid Build Coastguard Workergenrule { 189*b7c941bbSAndroid Build Coastguard Worker name: "empty_config_dm", 190*b7c941bbSAndroid Build Coastguard Worker defaults: ["dm_defaults"], 191*b7c941bbSAndroid Build Coastguard Worker srcs: [ 192*b7c941bbSAndroid Build Coastguard Worker ":CompilationTestCases-config-empty", 193*b7c941bbSAndroid Build Coastguard Worker ], 194*b7c941bbSAndroid Build Coastguard Worker out: ["empty_config.dm"], 195*b7c941bbSAndroid Build Coastguard Worker} 196*b7c941bbSAndroid Build Coastguard Worker 197*b7c941bbSAndroid Build Coastguard Workergenrule { 198*b7c941bbSAndroid Build Coastguard Worker name: "CompilationTestCases-config-disable_embedded_profile", 199*b7c941bbSAndroid Build Coastguard Worker srcs: [ 200*b7c941bbSAndroid Build Coastguard Worker ":libartservice_protos", 201*b7c941bbSAndroid Build Coastguard Worker ], 202*b7c941bbSAndroid Build Coastguard Worker tools: ["aprotoc"], 203*b7c941bbSAndroid Build Coastguard Worker cmd: "$(location aprotoc) " + 204*b7c941bbSAndroid Build Coastguard Worker "--encode=com.android.server.art.proto.DexMetadataConfig " + 205*b7c941bbSAndroid Build Coastguard Worker "$(locations :libartservice_protos) " + 206*b7c941bbSAndroid Build Coastguard Worker "<<<'enable_embedded_profile: false' > $(out)", 207*b7c941bbSAndroid Build Coastguard Worker out: ["config-disable_embedded_profile.pb"], 208*b7c941bbSAndroid Build Coastguard Worker} 209*b7c941bbSAndroid Build Coastguard Worker 210*b7c941bbSAndroid Build Coastguard Workergenrule { 211*b7c941bbSAndroid Build Coastguard Worker name: "disable_embedded_profile_dm", 212*b7c941bbSAndroid Build Coastguard Worker defaults: ["dm_defaults"], 213*b7c941bbSAndroid Build Coastguard Worker srcs: [ 214*b7c941bbSAndroid Build Coastguard Worker ":CompilationTestCases-config-disable_embedded_profile", 215*b7c941bbSAndroid Build Coastguard Worker ], 216*b7c941bbSAndroid Build Coastguard Worker out: ["disable_embedded_profile.dm"], 217*b7c941bbSAndroid Build Coastguard Worker} 218*b7c941bbSAndroid Build Coastguard Worker 219*b7c941bbSAndroid Build Coastguard Workerjava_genrule { 220*b7c941bbSAndroid Build Coastguard Worker name: "AppUsedByOtherApp_1_disable_embedded_profile_dm", 221*b7c941bbSAndroid Build Coastguard Worker defaults: ["dm_defaults"], 222*b7c941bbSAndroid Build Coastguard Worker srcs: [ 223*b7c941bbSAndroid Build Coastguard Worker ":AppUsedByOtherApp_1_prof", 224*b7c941bbSAndroid Build Coastguard Worker ":CompilationTestCases-config-disable_embedded_profile", 225*b7c941bbSAndroid Build Coastguard Worker ], 226*b7c941bbSAndroid Build Coastguard Worker out: ["AppUsedByOtherApp_1_disable_embedded_profile.dm"], 227*b7c941bbSAndroid Build Coastguard Worker} 228