• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//
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: [
22        "dex/art_dex_file_loader.cc",
23        "dex/compact_dex_file.cc",
24        "dex/compact_offset_table.cc",
25        "dex/descriptors_names.cc",
26        "dex/dex_file.cc",
27        "dex/dex_file_exception_helpers.cc",
28        "dex/dex_file_layout.cc",
29        "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",
34        "dex/primitive.cc",
35        "dex/signature.cc",
36        "dex/standard_dex_file.cc",
37        "dex/type_lookup_table.cc",
38        "dex/utf.cc",
39    ],
40
41    target: {
42        android: {
43            static_libs: [
44                "libziparchive",
45                "libz",
46            ],
47            shared_libs: [
48                 // For MemMap.
49                 "libartbase",
50                 "libartpalette",
51                 "liblog",
52                 // For common macros.
53                 "libbase",
54            ],
55            export_shared_lib_headers: [
56                "libartbase",
57                "libbase",
58            ],
59        },
60        not_windows: {
61            shared_libs: [
62                "libziparchive",
63                "libz",
64                 // For MemMap.
65                 "libartbase",
66                 "libartpalette",
67                 "liblog",
68                 // For common macros.
69                 "libbase",
70            ],
71            export_shared_lib_headers: [
72                "libartbase",
73                "libbase",
74            ],
75        },
76        windows: {
77            static_libs: [
78                "libziparchive",
79                "libz",
80                 // For MemMap.
81                 "libartbase",
82                 "libartpalette",
83                 "liblog",
84                 // For common macros.
85                 "libbase",
86            ],
87            export_static_lib_headers: [
88                "libartbase",
89                "libbase",
90            ],
91            cflags: ["-Wno-thread-safety"],
92        },
93        darwin: {
94            enabled: true,
95        },
96    },
97    generated_sources: ["dexfile_operator_srcs"],
98    export_include_dirs: ["."],
99}
100
101cc_defaults {
102    name: "libdexfile_static_base_defaults",
103    static_libs: [
104        "libbase",
105        "liblog",
106        "libz",
107        "libziparchive",
108    ],
109}
110
111cc_defaults {
112    name: "libdexfile_static_defaults",
113    defaults: [
114        "libartbase_static_defaults",
115        "libdexfile_static_base_defaults",
116    ],
117    static_libs: ["libdexfile"],
118}
119
120cc_defaults {
121    name: "libdexfiled_static_defaults",
122    defaults: [
123        "libartbased_static_defaults",
124        "libdexfile_static_base_defaults",
125    ],
126    static_libs: ["libdexfiled"],
127}
128
129gensrcs {
130    name: "dexfile_operator_srcs",
131    cmd: "$(location generate_operator_out) art/libdexfile $(in) > $(out)",
132    tools: ["generate_operator_out"],
133    srcs: [
134        "dex/dex_file.h",
135        "dex/dex_file_layout.h",
136        "dex/dex_instruction.h",
137        "dex/dex_instruction_utils.h",
138        "dex/invoke_type.h",
139        "dex/method_reference.h",
140    ],
141    output_extension: "operator_out.cc",
142}
143
144art_cc_library {
145    name: "libdexfile",
146    defaults: ["libdexfile_defaults"],
147    // Leave the symbols in the shared library so that stack unwinders can
148    // produce meaningful name resolution.
149    strip: {
150        keep_symbols: true,
151    },
152    target: {
153        windows: {
154            enabled: true,
155            shared: {
156                enabled: false,
157            },
158        },
159    },
160}
161
162art_cc_library {
163    name: "libdexfiled",
164    defaults: [
165        "art_debug_defaults",
166        "libdexfile_defaults",
167    ],
168    target: {
169        windows: {
170            enabled: true,
171            shared: {
172                enabled: false,
173            },
174        },
175    },
176}
177
178art_cc_test {
179    name: "art_libdexfile_tests",
180    defaults: [
181        "art_gtest_defaults",
182    ],
183    srcs: [
184        "dex/art_dex_file_loader_test.cc",
185        "dex/class_accessor_test.cc",
186        "dex/code_item_accessors_test.cc",
187        "dex/compact_dex_file_test.cc",
188        "dex/compact_offset_table_test.cc",
189        "dex/descriptors_names_test.cc",
190        "dex/test_dex_file_builder_test.cc",
191        "dex/dex_file_loader_test.cc",
192        "dex/dex_file_verifier_test.cc",
193        "dex/dex_instruction_test.cc",
194        "dex/primitive_test.cc",
195        "dex/string_reference_test.cc",
196        "dex/type_lookup_table_test.cc",
197        "dex/utf_test.cc",
198    ],
199    shared_libs: [
200        "libbacktrace",
201        "libziparchive",
202    ],
203    include_dirs: [
204        "external/zlib",
205    ],
206}
207
208cc_library_headers {
209    name: "libdexfile_external_headers",
210    host_supported: true,
211    vendor_available: true,
212    recovery_available: true,
213    header_libs: ["libbase_headers"],
214    export_header_lib_headers: ["libbase_headers"],
215    export_include_dirs: ["external/include"],
216
217    target: {
218        windows: {
219            enabled: true,
220        },
221    },
222}
223
224cc_library {
225    name: "libdexfile_external",
226    host_supported: true,
227    srcs: [
228        "external/dex_file_ext.cc",
229    ],
230    header_libs: ["libdexfile_external_headers"],
231    shared_libs: [
232        "libbase",
233        "libdexfile",
234    ],
235
236    stubs: {
237        symbol_file: "external/libdexfile_external.map.txt",
238        versions: ["1"],
239    },
240}
241
242art_cc_test {
243    name: "art_libdexfile_external_tests",
244    host_supported: true,
245    test_per_src: true,  // For consistency with other ART gtests.
246    srcs: [
247        "external/dex_file_ext_c_test.c",
248    ],
249    header_libs: ["libdexfile_external_headers"],
250}
251
252// Support library with a C++ API for accessing the libdexfile API for external
253// (non-ART) users.
254//
255// This library dlopens libdexfile_external on first use, so there is no build
256// time dependency on dex file logic. It is therefore safe to use from binaries
257// compiled without dex file support, given they won't encounter any dex file
258// stack frames.
259cc_library {
260    name: "libdexfile_support",
261    host_supported: true,
262    vendor_available: true,
263    recovery_available: true,
264    srcs: [
265        "external/dex_file_supp.cc",
266    ],
267    required: ["libdexfile_external"],
268    shared_libs: ["liblog"],
269    header_libs: ["libdexfile_external_headers"],
270    export_header_lib_headers: ["libdexfile_external_headers"],
271    target: {
272        recovery: {
273            cflags: ["-DNO_DEXFILE_SUPPORT"],
274        },
275        vendor: {
276            cflags: ["-DNO_DEXFILE_SUPPORT"],
277        },
278    },
279}
280
281// The same source file is used in two tests here, so unlike other ART gtests it
282// doesn't use test_per_src. Its test target is
283// test-art-{host,target}-gtest-art_libdexfile_support_tests.
284art_cc_test {
285    name: "art_libdexfile_support_tests",
286    host_supported: true,
287    srcs: [
288        "external/dex_file_supp_test.cc",
289    ],
290    shared_libs: [
291        "libartbase",
292        "libbase",
293        "libdexfile_external",
294        "libdexfile_support",
295    ],
296}
297
298cc_library_static {
299    name: "libdexfile_support_static",
300    host_supported: true,
301    defaults: ["libdexfile_static_defaults"],
302    srcs: [
303        "external/dex_file_supp.cc",
304    ],
305    cflags: ["-DSTATIC_LIB"],
306    // Using whole_static_libs here only as a "poor man's transitivity" kludge.
307    whole_static_libs: [
308        "libbase",
309        "libdexfile",
310        "libdexfile_external",
311        "liblog",
312        "libz",
313        "libziparchive",
314    ],
315    header_libs: ["libdexfile_external_headers"],
316    export_header_lib_headers: ["libdexfile_external_headers"],
317}
318
319// The same source file is used in two tests here, so unlike other ART gtests it
320// doesn't use test_per_src. Its test target is
321// test-art-{host,target}-gtest-art_libdexfile_support_static_tests.
322art_cc_test {
323    name: "art_libdexfile_support_static_tests",
324    host_supported: true,
325    srcs: [
326        "external/dex_file_supp_test.cc",
327    ],
328    static_libs: [
329        "libbase",
330        "libdexfile_support_static",
331    ],
332}
333