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