1// Copyright (C) 2011 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 default_applicable_licenses: ["external_dexmaker_license"], 17} 18 19// Added automatically by a large-scale-change that took the approach of 20// 'apply every license found to every target'. While this makes sure we respect 21// every license restriction, it may not be entirely correct. 22// 23// e.g. GPL in an MIT project might only apply to the contrib/ directory. 24// 25// Please consider splitting the single license below into multiple licenses, 26// taking care not to lose any license_kind information, and overriding the 27// default license using the 'licenses: [...]' property on targets as needed. 28// 29// For unused files, consider creating a 'fileGroup' with "//visibility:private" 30// to attach the license to, and including a comment whether the files may be 31// used in the current project. 32// 33// large-scale-change included anything that looked like it might be a license 34// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc. 35// 36// Please consider removing redundant or irrelevant files from 'license_text:'. 37// See: http://go/android-license-faq 38license { 39 name: "external_dexmaker_license", 40 visibility: [":__subpackages__"], 41 license_kinds: [ 42 "SPDX-license-identifier-Apache-2.0", 43 "SPDX-license-identifier-MIT", 44 ], 45 license_text: [ 46 "COPYING", 47 "LICENSE", 48 "NOTICE", 49 ], 50} 51 52java_library_static { 53 name: "dexmaker", 54 55 // Include all the java files. 56 srcs: ["dexmaker/src/main/java/**/*.java"], 57 58 static_libs: [ 59 "dexmaker-dx-target", 60 ], 61 62 sdk_version: "core_current", 63 64 errorprone: { 65 javacflags: [ 66 "-Xep:EmptyTopLevelDeclaration:WARN", 67 "-Xep:ReturnValueIgnored:WARN", 68 ], 69 }, 70} 71 72// Build Dexmaker's MockMaker, a plugin to Mockito 73java_library_static { 74 name: "dexmaker-mockmaker", 75 sdk_version: "core_current", 76 srcs: ["dexmaker-mockito/src/main/java/**/*.java"], 77 java_resource_dirs: ["dexmaker-mockito/src/main/resources"], 78 libs: [ 79 "dexmaker", 80 "mockito-api", 81 ], 82} 83 84// Build dispatcher for Dexmaker's inline MockMaker 85java_library_static { 86 name: "dexmaker-inline-mockmaker-dispatcher", 87 sdk_version: "core_current", 88 srcs: ["dexmaker-mockito-inline-dispatcher/src/main/java/**/*.java"], 89} 90 91// Defaults for agent code. 92cc_defaults { 93 name: "dexmaker_agent_defaults", 94 95 // Compile with the NDK, so that the agent can be used in apps. 96 sdk_version: "current", 97 stl: "libc++_static", 98 99 host_supported: false, 100 device_supported: true, 101 102 rtti: true, 103 104 cflags: [ 105 "-std=c++11", 106 "-Wall", 107 "-Werror", 108 "-Wno-unused-parameter", 109 "-Wno-shift-count-overflow", 110 "-Wno-error=non-virtual-dtor", 111 "-Wno-sign-compare", 112 "-Wno-switch", 113 "-Wno-missing-braces", 114 ], 115 116 static_libs: [ 117 "slicer_ndk", 118 ], 119 120 shared_libs: [ 121 "libz", 122 ], 123 124 header_libs: [ 125 "jni_headers", 126 "libopenjdkjvmti_headers", 127 ], 128} 129 130// Build agent for Dexmaker's inline MockMaker 131cc_library_shared { 132 name: "libdexmakerjvmtiagent", 133 defaults: [ 134 "dexmaker_agent_defaults", 135 ], 136 srcs: ["dexmaker-mockito-inline/src/main/jni/**/*.cc"], 137 min_sdk_version: "29", 138} 139 140// Build agent for Dexmaker's extended MockMaker 141cc_library_shared { 142 name: "libstaticjvmtiagent", 143 defaults: [ 144 "dexmaker_agent_defaults", 145 ], 146 srcs: ["dexmaker-mockito-inline-extended/src/main/jni/**/*.cc"], 147 min_sdk_version: "29", 148} 149 150// Build agent for Dexmaker's inline tests 151cc_library_shared { 152 name: "libmultiplejvmtiagentsinterferenceagent", 153 defaults: [ 154 "dexmaker_agent_defaults", 155 ], 156 srcs: ["dexmaker-mockito-inline-tests/src/main/jni/**/*.cc"], 157} 158 159// Build Dexmaker's inline MockMaker, a plugin to Mockito 160java_library_static { 161 name: "dexmaker-inline-mockmaker", 162 sdk_version: "current", 163 srcs: ["dexmaker-mockito-inline/src/main/java/**/*.java"], 164 java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"], 165 libs: [ 166 "dexmaker", 167 "mockito-api", 168 ], 169 required: ["libdexmakerjvmtiagent"], 170} 171 172// Build Dexmaker's extended MockMaker, a plugin to Mockito 173java_library_static { 174 name: "dexmaker-extended-mockmaker", 175 sdk_version: "current", 176 srcs: ["dexmaker-mockito-inline-extended/src/main/java/**/*.java"], 177 178 java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"], 179 180 libs: [ 181 "dexmaker", 182 "mockito-api", 183 "dexmaker-inline-mockmaker", 184 ], 185 required: [ 186 "libdexmakerjvmtiagent", 187 "libstaticjvmtiagent", 188 ], 189 190 errorprone: { 191 javacflags: [ 192 "-Xep:ReturnValueIgnored:WARN", 193 "-Xep:InfiniteRecursion:WARN", 194 ], 195 }, 196} 197 198// Provides mockito functionality for on-device tests. Does not allow stubbing of final or static 199// methods. 200java_library_static { 201 name: "mockito-target", 202 static_libs: [ 203 "mockito-target-minus-junit4", 204 "junit", 205 ], 206 sdk_version: "core_current", 207} 208 209// Same as mockito-target but does not bundle junit 210java_library_static { 211 name: "mockito-target-minus-junit4", 212 static_libs: [ 213 "mockito", 214 "dexmaker", 215 "dexmaker-mockmaker", 216 "objenesis", 217 ], 218 libs: ["junit"], 219 sdk_version: "core_current", 220 221 java_version: "1.7", 222} 223 224// Provides mockito functionality for on-device tests. Allows stubbing of final methods. Does not 225// allow stubbing of static methods. 226// Project depending on this also need to depend on the static JNI library libdexmakerjvmtiagent 227java_library_static { 228 name: "mockito-target-inline", 229 static_libs: [ 230 "mockito-target-inline-minus-junit4", 231 "junit", 232 ], 233 sdk_version: "current", 234} 235 236// Same as mockito-target-inline but does not bundle junit 237java_library_static { 238 name: "mockito-target-inline-minus-junit4", 239 static_libs: [ 240 "mockito", 241 "dexmaker", 242 "dexmaker-inline-mockmaker", 243 "objenesis", 244 ], 245 libs: ["junit"], 246 sdk_version: "current", 247 248 java_version: "1.7", 249} 250 251// Provides mockito functionality for on-device tests. Allows stubbing of final and static methods. 252// Stubbing static methods is not an official mockito API. 253// Project depending on this also need to depend on the static JNI libraries libstaticjvmtiagent and 254// libdexmakerjvmtiagent 255java_library_static { 256 name: "mockito-target-extended", 257 static_libs: [ 258 "mockito-target-extended-minus-junit4", 259 "junit", 260 ], 261 sdk_version: "current", 262} 263 264// Same as mockito-target-extended but does not bundle junit 265java_library_static { 266 name: "mockito-target-extended-minus-junit4", 267 static_libs: [ 268 "mockito", 269 "dexmaker", 270 "dexmaker-inline-mockmaker", 271 "dexmaker-extended-mockmaker", 272 "objenesis", 273 ], 274 libs: ["junit"], 275 sdk_version: "current", 276 277 java_version: "1.7", 278} 279 280java_import { 281 name: "dexmaker-dx-target", 282 jars: ["lib/dalvik-dx-9.0.0_r3.jar"], 283} 284 285// dexmaker tests 286java_library_static { 287 name: "dexmaker-tests-lib", 288 sdk_version: "current", 289 srcs: ["dexmaker-tests/src/androidTest/java/**/*.java"], 290 291 libs: [ 292 "androidx.test.rules", 293 "dexmaker", 294 "junit", 295 ], 296 297 errorprone: { 298 javacflags: [ 299 "-Xep:ReturnValueIgnored:WARN", 300 ], 301 }, 302} 303 304// dexmaker-mockito tests 305java_library_static { 306 name: "dexmaker-mockmaker-tests", 307 sdk_version: "current", 308 srcs: ["dexmaker-mockito-tests/src/main/java/**/*.java"], 309 310 libs: [ 311 "androidx.test.rules", 312 "dexmaker", 313 "mockito", 314 "junit", 315 "dexmaker-mockmaker", 316 ], 317 318 errorprone: { 319 javacflags: [ 320 "-Xep:ReturnValueIgnored:WARN", 321 ], 322 }, 323} 324 325// dexmaker-mockito-inline tests 326java_library_static { 327 name: "dexmaker-inline-mockmaker-tests", 328 sdk_version: "current", 329 srcs: ["dexmaker-mockito-inline-tests/src/main/java/**/*.java"], 330 331 libs: [ 332 "androidx.test.rules", 333 "dexmaker", 334 "android-support-v4", 335 "mockito", 336 "junit", 337 "dexmaker-inline-mockmaker", 338 ], 339} 340 341// dexmaker-mockito-extended tests 342java_library_static { 343 name: "dexmaker-extended-mockmaker-tests", 344 sdk_version: "current", 345 srcs: ["dexmaker-mockito-inline-extended-tests/src/main/java/**/*.java"], 346 347 libs: [ 348 "androidx.test.rules", 349 "dexmaker", 350 "android-support-v4", 351 "mockito", 352 "junit", 353 "dexmaker-extended-mockmaker", 354 ], 355} 356 357/* 358 * To run the tests: 359 * atest DexmakerTests 360 */ 361 362android_test { 363 name: "DexmakerTests", 364 sdk_version: "current", 365 static_libs: [ 366 "dexmaker-tests-lib", 367 "dexmaker", 368 "androidx.test.rules", 369 "junit", 370 ], 371} 372