xref: /aosp_15_r20/external/dexmaker/Android.bp (revision 2ffc472c461b441c3ddd38c52c72da5a6be8f680)
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