• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
65// Build Dexmaker's MockMaker, a plugin to Mockito
66java_library_static {
67    name: "dexmaker-mockmaker",
68    sdk_version: "core_current",
69    srcs: ["dexmaker-mockito/src/main/java/**/*.java"],
70    java_resource_dirs: ["dexmaker-mockito/src/main/resources"],
71    libs: [
72        "dexmaker",
73        "mockito-api",
74    ],
75}
76
77// Build dispatcher for Dexmaker's inline MockMaker
78java_library_static {
79    name: "dexmaker-inline-mockmaker-dispatcher",
80    sdk_version: "core_current",
81    srcs: ["dexmaker-mockito-inline-dispatcher/src/main/java/**/*.java"],
82}
83
84// Defaults for agent code.
85cc_defaults {
86    name: "dexmaker_agent_defaults",
87
88    // Compile with the NDK, so that the agent can be used in apps.
89    sdk_version: "current",
90    stl: "libc++_static",
91
92    host_supported: false,
93    device_supported: true,
94
95    rtti: true,
96
97    cflags: [
98        "-std=c++11",
99        "-Wall",
100        "-Werror",
101        "-Wno-unused-parameter",
102        "-Wno-shift-count-overflow",
103        "-Wno-error=non-virtual-dtor",
104        "-Wno-sign-compare",
105        "-Wno-switch",
106        "-Wno-missing-braces",
107    ],
108
109    static_libs: [
110        "slicer_ndk",
111    ],
112
113    shared_libs: [
114        "libz",
115    ],
116
117    header_libs: [
118        "jni_headers",
119        "libopenjdkjvmti_headers",
120    ],
121}
122
123// Build agent for Dexmaker's inline MockMaker
124cc_library_shared {
125    name: "libdexmakerjvmtiagent",
126    defaults: [
127        "dexmaker_agent_defaults",
128    ],
129    srcs: ["dexmaker-mockito-inline/src/main/jni/**/*.cc"],
130    min_sdk_version: "29",
131}
132
133// Build agent for Dexmaker's extended MockMaker
134cc_library_shared {
135    name: "libstaticjvmtiagent",
136    defaults: [
137        "dexmaker_agent_defaults",
138    ],
139    srcs: ["dexmaker-mockito-inline-extended/src/main/jni/**/*.cc"],
140    min_sdk_version: "29",
141}
142
143// Build agent for Dexmaker's inline tests
144cc_library_shared {
145    name: "libmultiplejvmtiagentsinterferenceagent",
146    defaults: [
147        "dexmaker_agent_defaults",
148    ],
149    srcs: ["dexmaker-mockito-inline-tests/src/main/jni/**/*.cc"],
150}
151
152// Build Dexmaker's inline MockMaker, a plugin to Mockito
153java_library_static {
154    name: "dexmaker-inline-mockmaker",
155    sdk_version: "current",
156    srcs: ["dexmaker-mockito-inline/src/main/java/**/*.java"],
157    java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"],
158    libs: [
159        "dexmaker",
160        "mockito-api",
161    ],
162    required: ["libdexmakerjvmtiagent"],
163}
164
165// Build Dexmaker's extended MockMaker, a plugin to Mockito
166java_library_static {
167    name: "dexmaker-extended-mockmaker",
168    sdk_version: "current",
169    srcs: ["dexmaker-mockito-inline-extended/src/main/java/**/*.java"],
170
171    java_resource_dirs: ["dexmaker-mockito-inline/src/main/resources"],
172
173    libs: [
174        "dexmaker",
175        "mockito-api",
176        "dexmaker-inline-mockmaker",
177    ],
178    required: [
179        "libdexmakerjvmtiagent",
180        "libstaticjvmtiagent",
181    ],
182}
183
184// Provides mockito functionality for on-device tests. Does not allow stubbing of final or static
185// methods.
186java_library_static {
187    name: "mockito-target",
188    static_libs: [
189        "mockito-target-minus-junit4",
190        "junit",
191    ],
192    sdk_version: "core_current",
193}
194
195// Same as mockito-target but does not bundle junit
196java_library_static {
197    name: "mockito-target-minus-junit4",
198    static_libs: [
199        "mockito",
200        "dexmaker",
201        "dexmaker-mockmaker",
202        "objenesis",
203    ],
204    libs: ["junit"],
205    sdk_version: "core_current",
206
207    java_version: "1.7",
208}
209
210// Provides mockito functionality for on-device tests. Allows stubbing of final methods. Does not
211// allow stubbing of static methods.
212// Project depending on this also need to depend on the static JNI library libdexmakerjvmtiagent
213java_library_static {
214    name: "mockito-target-inline",
215    static_libs: [
216        "mockito-target-inline-minus-junit4",
217        "junit",
218    ],
219    sdk_version: "current",
220}
221
222// Same as mockito-target-inline but does not bundle junit
223java_library_static {
224    name: "mockito-target-inline-minus-junit4",
225    static_libs: [
226        "mockito",
227        "dexmaker",
228        "dexmaker-inline-mockmaker",
229        "objenesis",
230    ],
231    libs: ["junit"],
232    sdk_version: "current",
233
234    java_version: "1.7",
235}
236
237// Provides mockito functionality for on-device tests. Allows stubbing of final and static methods.
238// Stubbing static methods is not an official mockito API.
239// Project depending on this also need to depend on the static JNI libraries libstaticjvmtiagent and
240// libdexmakerjvmtiagent
241java_library_static {
242    name: "mockito-target-extended",
243    static_libs: [
244        "mockito-target-extended-minus-junit4",
245        "junit",
246    ],
247    sdk_version: "current",
248}
249
250// Same as mockito-target-extended but does not bundle junit
251java_library_static {
252    name: "mockito-target-extended-minus-junit4",
253    static_libs: [
254        "mockito",
255        "dexmaker",
256        "dexmaker-inline-mockmaker",
257        "dexmaker-extended-mockmaker",
258        "objenesis",
259    ],
260    libs: ["junit"],
261    sdk_version: "current",
262
263    java_version: "1.7",
264}
265
266java_import {
267    name: "dexmaker-dx-target",
268    jars: ["lib/dalvik-dx-9.0.0_r3.jar"],
269}
270
271// dexmaker tests
272java_library_static {
273    name: "dexmaker-tests-lib",
274    sdk_version: "current",
275    srcs: ["dexmaker-tests/src/androidTest/java/**/*.java"],
276
277    libs: [
278        "androidx.test.rules",
279        "dexmaker",
280        "junit",
281    ],
282}
283
284// dexmaker-mockito tests
285java_library_static {
286    name: "dexmaker-mockmaker-tests",
287    sdk_version: "current",
288    srcs: ["dexmaker-mockito-tests/src/main/java/**/*.java"],
289
290    libs: [
291        "androidx.test.rules",
292        "dexmaker",
293        "mockito",
294        "junit",
295        "dexmaker-mockmaker",
296    ],
297}
298
299// dexmaker-mockito-inline tests
300java_library_static {
301    name: "dexmaker-inline-mockmaker-tests",
302    sdk_version: "current",
303    srcs: ["dexmaker-mockito-inline-tests/src/main/java/**/*.java"],
304
305    libs: [
306        "androidx.test.rules",
307        "dexmaker",
308        "android-support-v4",
309        "mockito",
310        "junit",
311        "dexmaker-inline-mockmaker",
312    ],
313}
314
315// dexmaker-mockito-extended tests
316java_library_static {
317    name: "dexmaker-extended-mockmaker-tests",
318    sdk_version: "current",
319    srcs: ["dexmaker-mockito-inline-extended-tests/src/main/java/**/*.java"],
320
321    libs: [
322        "androidx.test.rules",
323        "dexmaker",
324        "android-support-v4",
325        "mockito",
326        "junit",
327        "dexmaker-extended-mockmaker",
328    ],
329}
330
331/*
332 * To run the tests:
333 *   atest DexmakerTests
334 */
335
336android_test {
337    name: "DexmakerTests",
338    sdk_version: "current",
339    static_libs: [
340        "dexmaker-tests-lib",
341        "dexmaker",
342        "androidx.test.rules",
343        "junit",
344    ],
345}
346