blob: 2289a9c6f49b9cc360e661dfdc20f9c12915b325 [file] [log] [blame]
David Sehr334b9d72018-02-12 18:27:56 -08001//
2// Copyright (C) 2011 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17cc_defaults {
18 name: "libdexfile_defaults",
19 defaults: ["art_defaults"],
20 host_supported: true,
21 srcs: [
David Sehr1f010162018-05-15 08:59:32 -070022 "dex/art_dex_file_loader.cc",
David Sehr334b9d72018-02-12 18:27:56 -080023 "dex/compact_dex_file.cc",
Mathieu Chartier5e3cfa22018-02-20 16:53:37 -080024 "dex/compact_offset_table.cc",
David Sehr334b9d72018-02-12 18:27:56 -080025 "dex/descriptors_names.cc",
26 "dex/dex_file.cc",
27 "dex/dex_file_exception_helpers.cc",
David Sehrc431b9d2018-03-02 12:01:51 -080028 "dex/dex_file_layout.cc",
David Sehr334b9d72018-02-12 18:27:56 -080029 "dex/dex_file_loader.cc",
30 "dex/dex_file_tracking_registrar.cc",
31 "dex/dex_file_verifier.cc",
32 "dex/dex_instruction.cc",
33 "dex/modifiers.cc",
David Sehr67bf42e2018-02-26 16:43:04 -080034 "dex/primitive.cc",
Andreas Gampead1aa632019-01-02 10:30:54 -080035 "dex/signature.cc",
David Sehr334b9d72018-02-12 18:27:56 -080036 "dex/standard_dex_file.cc",
David Sehr9c4a0152018-04-05 12:23:54 -070037 "dex/type_lookup_table.cc",
David Sehr334b9d72018-02-12 18:27:56 -080038 "dex/utf.cc",
39 ],
40
41 target: {
42 android: {
Nicolas Geoffray65ed42a2018-10-30 12:33:04 +000043 static_libs: [
44 "libziparchive",
45 "libz",
46 ],
David Sehr10db8fe2018-07-18 11:01:20 -070047 shared_libs: [
48 // For MemMap.
49 "libartbase",
Orion Hodson119733d2019-01-30 15:14:41 +000050 "libartpalette",
David Sehr10db8fe2018-07-18 11:01:20 -070051 "liblog",
David Sehr10db8fe2018-07-18 11:01:20 -070052 // For common macros.
53 "libbase",
54 ],
55 export_shared_lib_headers: [
56 "libartbase",
57 "libbase",
58 ],
David Sehr334b9d72018-02-12 18:27:56 -080059 },
David Sehr10db8fe2018-07-18 11:01:20 -070060 not_windows: {
Nicolas Geoffray65ed42a2018-10-30 12:33:04 +000061 shared_libs: [
62 "libziparchive",
63 "libz",
David Sehr10db8fe2018-07-18 11:01:20 -070064 // For MemMap.
65 "libartbase",
Orion Hodson119733d2019-01-30 15:14:41 +000066 "libartpalette",
David Sehr10db8fe2018-07-18 11:01:20 -070067 "liblog",
David Sehr10db8fe2018-07-18 11:01:20 -070068 // For common macros.
69 "libbase",
Nicolas Geoffray65ed42a2018-10-30 12:33:04 +000070 ],
David Sehr10db8fe2018-07-18 11:01:20 -070071 export_shared_lib_headers: [
72 "libartbase",
73 "libbase",
74 ],
75 },
76 windows: {
77 static_libs: [
78 "libziparchive",
79 "libz",
80 // For MemMap.
81 "libartbase",
Orion Hodson119733d2019-01-30 15:14:41 +000082 "libartpalette",
David Sehr10db8fe2018-07-18 11:01:20 -070083 "liblog",
David Sehr10db8fe2018-07-18 11:01:20 -070084 // For common macros.
85 "libbase",
86 ],
87 export_static_lib_headers: [
88 "libartbase",
89 "libbase",
90 ],
91 cflags: ["-Wno-thread-safety"],
Nicolas Geoffray65ed42a2018-10-30 12:33:04 +000092 },
David Sehr334b9d72018-02-12 18:27:56 -080093 },
94 generated_sources: ["dexfile_operator_srcs"],
David Sehr334b9d72018-02-12 18:27:56 -080095 export_include_dirs: ["."],
David Sehr334b9d72018-02-12 18:27:56 -080096}
97
Andreas Gampeec5ed062018-01-26 16:20:02 -080098cc_defaults {
99 name: "libdexfile_static_base_defaults",
100 static_libs: [
101 "libbase",
Andreas Gampeec5ed062018-01-26 16:20:02 -0800102 "liblog",
Nicolas Geoffray65ed42a2018-10-30 12:33:04 +0000103 "libz",
104 "libziparchive",
Andreas Gampeec5ed062018-01-26 16:20:02 -0800105 ],
106}
107
108cc_defaults {
109 name: "libdexfile_static_defaults",
110 defaults: [
111 "libartbase_static_defaults",
112 "libdexfile_static_base_defaults",
113 ],
114 static_libs: ["libdexfile"],
115}
116
117cc_defaults {
118 name: "libdexfiled_static_defaults",
119 defaults: [
120 "libartbased_static_defaults",
121 "libdexfile_static_base_defaults",
122 ],
123 static_libs: ["libdexfiled"],
124}
125
David Sehr334b9d72018-02-12 18:27:56 -0800126gensrcs {
127 name: "dexfile_operator_srcs",
Alex Lightb69d2d32018-02-21 13:37:17 -0800128 cmd: "$(location generate_operator_out) art/libdexfile $(in) > $(out)",
129 tools: ["generate_operator_out"],
David Sehr334b9d72018-02-12 18:27:56 -0800130 srcs: [
131 "dex/dex_file.h",
David Sehrc431b9d2018-03-02 12:01:51 -0800132 "dex/dex_file_layout.h",
David Sehr334b9d72018-02-12 18:27:56 -0800133 "dex/dex_instruction.h",
134 "dex/dex_instruction_utils.h",
135 "dex/invoke_type.h",
David Sehr312f3b22018-03-19 08:39:26 -0700136 "dex/method_reference.h",
David Sehr334b9d72018-02-12 18:27:56 -0800137 ],
138 output_extension: "operator_out.cc",
139}
140
David Sehr334b9d72018-02-12 18:27:56 -0800141art_cc_library {
142 name: "libdexfile",
143 defaults: ["libdexfile_defaults"],
144 // Leave the symbols in the shared library so that stack unwinders can
145 // produce meaningful name resolution.
146 strip: {
147 keep_symbols: true,
148 },
David Sehr10db8fe2018-07-18 11:01:20 -0700149 target: {
150 windows: {
151 enabled: true,
152 shared: {
153 enabled: false,
154 },
155 },
156 },
David Sehr334b9d72018-02-12 18:27:56 -0800157}
158
David Sehrfcbe15c2018-02-15 09:41:13 -0800159art_cc_library {
160 name: "libdexfiled",
161 defaults: [
162 "art_debug_defaults",
163 "libdexfile_defaults",
164 ],
David Sehr10db8fe2018-07-18 11:01:20 -0700165 target: {
166 windows: {
167 enabled: true,
168 shared: {
169 enabled: false,
170 },
171 },
172 },
David Sehrfcbe15c2018-02-15 09:41:13 -0800173}
174
Martin Stjernholmfdb2f602019-01-09 14:47:00 +0000175art_cc_test {
176 name: "art_libdexfile_tests",
177 defaults: [
178 "art_gtest_defaults",
179 ],
180 srcs: [
181 "dex/art_dex_file_loader_test.cc",
182 "dex/class_accessor_test.cc",
183 "dex/code_item_accessors_test.cc",
184 "dex/compact_dex_file_test.cc",
185 "dex/compact_offset_table_test.cc",
186 "dex/descriptors_names_test.cc",
187 "dex/test_dex_file_builder_test.cc",
188 "dex/dex_file_loader_test.cc",
189 "dex/dex_file_verifier_test.cc",
190 "dex/dex_instruction_test.cc",
191 "dex/primitive_test.cc",
192 "dex/string_reference_test.cc",
193 "dex/type_lookup_table_test.cc",
194 "dex/utf_test.cc",
195 ],
196 shared_libs: [
197 "libbacktrace",
198 "libziparchive",
199 ],
200 include_dirs: [
201 "external/zlib",
202 ],
203}
204
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000205cc_library_headers {
206 name: "libdexfile_external_headers",
207 host_supported: true,
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000208 vendor_available: true,
209 recovery_available: true,
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000210 header_libs: ["libbase_headers"],
211 export_header_lib_headers: ["libbase_headers"],
212 export_include_dirs: ["external/include"],
213
214 target: {
215 windows: {
216 enabled: true,
217 },
218 },
219}
220
221cc_library {
222 name: "libdexfile_external",
223 host_supported: true,
224 srcs: [
225 "external/dex_file_ext.cc",
226 ],
227 header_libs: ["libdexfile_external_headers"],
228 shared_libs: [
229 "libbase",
230 "libdexfile",
231 ],
232
Martin Stjernholm84bf6982019-02-05 15:07:57 +0000233 stubs: {
234 symbol_file: "external/libdexfile_external.map.txt",
235 versions: ["1"],
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000236 },
237}
238
Martin Stjernholmfdb2f602019-01-09 14:47:00 +0000239art_cc_test {
240 name: "art_libdexfile_external_tests",
241 host_supported: true,
242 test_per_src: true, // For consistency with other ART gtests.
243 srcs: [
244 "external/dex_file_ext_c_test.c",
245 ],
246 header_libs: ["libdexfile_external_headers"],
247}
248
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000249// Support library with a C++ API for accessing the libdexfile API for external
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000250// (non-ART) users.
251//
252// This library dlopens libdexfile_external on first use, so there is no build
253// time dependency on dex file logic. It is therefore safe to use from binaries
254// compiled without dex file support, given they won't encounter any dex file
255// stack frames.
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000256cc_library {
257 name: "libdexfile_support",
258 host_supported: true,
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000259 vendor_available: true,
260 recovery_available: true,
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000261 srcs: [
262 "external/dex_file_supp.cc",
263 ],
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000264 required: ["libdexfile_external"],
265 shared_libs: ["liblog"],
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000266 header_libs: ["libdexfile_external_headers"],
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000267 export_header_lib_headers: ["libdexfile_external_headers"],
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000268 target: {
269 recovery: {
270 cflags: ["-DNO_DEXFILE_SUPPORT"],
271 },
272 vendor: {
273 cflags: ["-DNO_DEXFILE_SUPPORT"],
274 },
275 },
Martin Stjernholmb3d2e832018-11-15 18:09:35 +0000276}
Martin Stjernholm750bf042019-01-09 22:51:12 +0000277
278art_cc_test {
279 name: "art_libdexfile_support_tests",
280 host_supported: true,
Martin Stjernholm750bf042019-01-09 22:51:12 +0000281 srcs: [
282 "external/dex_file_supp_test.cc",
283 ],
284 shared_libs: [
285 "libartbase",
286 "libbase",
287 "libdexfile_external",
288 "libdexfile_support",
289 ],
290}
Martin Stjernholmfe94b1c2019-01-31 17:40:39 +0000291
292cc_library_static {
293 name: "libdexfile_support_static",
294 host_supported: true,
295 defaults: ["libdexfile_static_defaults"],
296 srcs: [
297 "external/dex_file_supp.cc",
298 ],
299 cflags: ["-DSTATIC_LIB"],
300 // Using whole_static_libs here only as a "poor man's transitivity" kludge.
301 whole_static_libs: [
302 "libbase",
303 "libdexfile",
304 "libdexfile_external",
305 "liblog",
306 "libz",
307 "libziparchive",
308 ],
309 header_libs: ["libdexfile_external_headers"],
310 export_header_lib_headers: ["libdexfile_external_headers"],
311}
312
313art_cc_test {
314 name: "art_libdexfile_support_static_tests",
315 host_supported: true,
316 srcs: [
317 "external/dex_file_supp_test.cc",
318 ],
319 static_libs: [
320 "libbase",
321 "libdexfile_support_static",
322 ],
323}