blob: 5b132417e656a1c2337493d68155139807119997 [file] [log] [blame]
Paul Duffina80fdec2019-12-03 15:25:00 +00001// Copyright (C) 2019 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 sdk
16
17import (
18 "testing"
19
Paul Duffin1356d8c2020-02-25 19:26:33 +000020 "android/soong/android"
Paul Duffina80fdec2019-12-03 15:25:00 +000021 "android/soong/cc"
22)
23
Martin Stjernholm7feceb22020-07-11 04:33:29 +010024var ccTestFs = map[string][]byte{
Paul Duffin86b02a72021-02-22 11:50:04 +000025 "Test.cpp": nil,
26 "myinclude/Test.h": nil,
27 "myinclude-android/AndroidTest.h": nil,
28 "myinclude-host/HostTest.h": nil,
29 "arm64/include/Arm64Test.h": nil,
30 "libfoo.so": nil,
31 "aidl/foo/bar/Test.aidl": nil,
32 "some/where/stubslib.map.txt": nil,
Martin Stjernholm7feceb22020-07-11 04:33:29 +010033}
34
Paul Duffind835daa2019-11-30 17:49:09 +000035func testSdkWithCc(t *testing.T, bp string) *testSdkResult {
36 t.Helper()
Martin Stjernholm7feceb22020-07-11 04:33:29 +010037 return testSdkWithFs(t, bp, ccTestFs)
Paul Duffind835daa2019-11-30 17:49:09 +000038}
39
Paul Duffina80fdec2019-12-03 15:25:00 +000040// Contains tests for SDK members provided by the cc package.
41
Martin Stjernholmcaa47d72020-07-11 04:52:24 +010042func TestSingleDeviceOsAssumption(t *testing.T) {
43 // Mock a module with DeviceSupported() == true.
44 s := &sdk{}
45 android.InitAndroidArchModule(s, android.DeviceSupported, android.MultilibCommon)
46
47 osTypes := s.getPossibleOsTypes()
48 if len(osTypes) != 1 {
49 // The snapshot generation assumes there is a single device OS. If more are
50 // added it might need to disable them by default, like it does for host
51 // OS'es.
52 t.Errorf("expected a single device OS, got %v", osTypes)
53 }
54}
55
Paul Duffina80fdec2019-12-03 15:25:00 +000056func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000057 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000058 sdk {
59 name: "mysdk",
60 native_shared_libs: ["sdkmember"],
61 }
62
63 cc_library_shared {
64 name: "sdkmember",
65 srcs: ["Test.cpp"],
Paul Duffina80fdec2019-12-03 15:25:00 +000066 stl: "none",
67 }
68 `)
69
Colin Cross7113d202019-11-20 16:39:12 -080070 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
71 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000072
73 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000074 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000075 for _, bp := range buildParams {
76 if bp.Input != nil {
77 inputs = append(inputs, bp.Input.String())
78 }
79 }
80
81 // ensure that both 32/64 outputs are inputs of the sdk snapshot
82 ensureListContains(t, inputs, armOutput.String())
83 ensureListContains(t, inputs, arm64Output.String())
84}
85
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010086func TestSdkCompileMultilibOverride(t *testing.T) {
87 result := testSdkWithCc(t, `
88 sdk {
89 name: "mysdk",
Martin Stjernholm89238f42020-07-10 00:14:03 +010090 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010091 native_shared_libs: ["sdkmember"],
92 compile_multilib: "64",
93 }
94
95 cc_library_shared {
96 name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +010097 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010098 srcs: ["Test.cpp"],
99 stl: "none",
100 compile_multilib: "64",
101 }
102 `)
103
104 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000105 checkUnversionedAndroidBpContents(`
Martin Stjernholm89238f42020-07-10 00:14:03 +0100106// This is auto-generated. DO NOT EDIT.
107
108cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000109 name: "sdkmember",
110 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100111 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000112 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100113 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100114 stl: "none",
115 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100116 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100117 host: {
118 enabled: false,
119 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100120 android_arm64: {
121 srcs: ["android/arm64/lib/sdkmember.so"],
122 },
123 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900124 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100125 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100126 },
127 },
128}
Paul Duffin75b902a2021-02-22 12:13:13 +0000129`),
130 checkVersionedAndroidBpContents(`
131// This is auto-generated. DO NOT EDIT.
Martin Stjernholm89238f42020-07-10 00:14:03 +0100132
133cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000134 name: "mysdk_sdkmember@current",
135 sdk_member_name: "sdkmember",
Paul Duffind99d9972020-09-29 16:00:55 +0100136 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000137 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100138 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000139 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100140 stl: "none",
141 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100142 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100143 host: {
144 enabled: false,
145 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100146 android_arm64: {
147 srcs: ["android/arm64/lib/sdkmember.so"],
148 },
149 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900150 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100151 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100152 },
153 },
154}
155
156sdk_snapshot {
157 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100158 visibility: ["//visibility:public"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100159 host_supported: true,
160 native_shared_libs: ["mysdk_sdkmember@current"],
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100161 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100162 target: {
163 host: {
164 enabled: false,
165 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900166 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100167 enabled: true,
168 },
169 },
Martin Stjernholm89238f42020-07-10 00:14:03 +0100170}
171`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100172 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100173.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
174.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100175`))
176}
177
Paul Duffina80fdec2019-12-03 15:25:00 +0000178func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000179 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000180 sdk {
181 name: "mysdk",
182 native_shared_libs: ["sdkmember"],
183 }
184
Paul Duffina0843f62019-12-13 19:50:38 +0000185 cc_library_shared {
186 name: "sdkmember",
Colin Crossf9aabd72020-02-15 11:29:50 -0800187 system_shared_libs: [],
Martin Stjernholmcc776012020-07-07 03:22:21 +0100188 stl: "none",
189 apex_available: ["mysdkapex"],
Paul Duffina0843f62019-12-13 19:50:38 +0000190 }
191
Paul Duffina80fdec2019-12-03 15:25:00 +0000192 sdk_snapshot {
193 name: "mysdk@1",
194 native_shared_libs: ["sdkmember_mysdk_1"],
195 }
196
197 sdk_snapshot {
198 name: "mysdk@2",
199 native_shared_libs: ["sdkmember_mysdk_2"],
200 }
201
202 cc_prebuilt_library_shared {
203 name: "sdkmember",
204 srcs: ["libfoo.so"],
205 prefer: false,
206 system_shared_libs: [],
207 stl: "none",
208 }
209
210 cc_prebuilt_library_shared {
211 name: "sdkmember_mysdk_1",
212 sdk_member_name: "sdkmember",
213 srcs: ["libfoo.so"],
214 system_shared_libs: [],
215 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000216 // TODO: remove //apex_available:platform
217 apex_available: [
218 "//apex_available:platform",
219 "myapex",
220 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000221 }
222
223 cc_prebuilt_library_shared {
224 name: "sdkmember_mysdk_2",
225 sdk_member_name: "sdkmember",
226 srcs: ["libfoo.so"],
227 system_shared_libs: [],
228 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000229 // TODO: remove //apex_available:platform
230 apex_available: [
231 "//apex_available:platform",
232 "myapex2",
233 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000234 }
235
236 cc_library_shared {
237 name: "mycpplib",
238 srcs: ["Test.cpp"],
239 shared_libs: ["sdkmember"],
240 system_shared_libs: [],
241 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000242 apex_available: [
243 "myapex",
244 "myapex2",
245 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000246 }
247
248 apex {
249 name: "myapex",
250 native_shared_libs: ["mycpplib"],
251 uses_sdks: ["mysdk@1"],
252 key: "myapex.key",
253 certificate: ":myapex.cert",
254 }
255
256 apex {
257 name: "myapex2",
258 native_shared_libs: ["mycpplib"],
259 uses_sdks: ["mysdk@2"],
260 key: "myapex.key",
261 certificate: ":myapex.cert",
262 }
Martin Stjernholmcc776012020-07-07 03:22:21 +0100263
264 apex {
265 name: "mysdkapex",
266 native_shared_libs: ["sdkmember"],
267 key: "myapex.key",
268 certificate: ":myapex.cert",
269 }
Paul Duffina80fdec2019-12-03 15:25:00 +0000270 `)
271
Colin Crossaede88c2020-08-11 12:17:01 -0700272 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_apex10000_mysdk_1").Rule("toc").Output
273 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_apex10000_mysdk_2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000274
Colin Crossaede88c2020-08-11 12:17:01 -0700275 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_1")
276 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000277
278 // Depending on the uses_sdks value, different libs are linked
279 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
280 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
281}
282
Paul Duffina0843f62019-12-13 19:50:38 +0000283// Make sure the sdk can use host specific cc libraries static/shared and both.
284func TestHostSdkWithCc(t *testing.T) {
285 testSdkWithCc(t, `
286 sdk {
287 name: "mysdk",
288 device_supported: false,
289 host_supported: true,
290 native_shared_libs: ["sdkshared"],
291 native_static_libs: ["sdkstatic"],
292 }
293
294 cc_library_host_shared {
295 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000296 stl: "none",
297 }
298
299 cc_library_host_static {
300 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000301 stl: "none",
302 }
303 `)
304}
305
306// Make sure the sdk can use cc libraries static/shared and both.
307func TestSdkWithCc(t *testing.T) {
308 testSdkWithCc(t, `
309 sdk {
310 name: "mysdk",
311 native_shared_libs: ["sdkshared", "sdkboth1"],
312 native_static_libs: ["sdkstatic", "sdkboth2"],
313 }
314
315 cc_library_shared {
316 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000317 stl: "none",
318 }
319
320 cc_library_static {
321 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000322 stl: "none",
323 }
324
325 cc_library {
326 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000327 stl: "none",
328 }
329
330 cc_library {
331 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000332 stl: "none",
333 }
334 `)
335}
336
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000337func TestSnapshotWithObject(t *testing.T) {
338 result := testSdkWithCc(t, `
339 sdk {
340 name: "mysdk",
341 native_objects: ["crtobj"],
342 }
343
344 cc_object {
345 name: "crtobj",
346 stl: "none",
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100347 sanitize: {
348 never: true,
349 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000350 }
351 `)
352
353 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000354 checkUnversionedAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000355// This is auto-generated. DO NOT EDIT.
356
357cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000358 name: "crtobj",
359 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100360 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000361 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000362 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100363 compile_multilib: "both",
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100364 sanitize: {
365 never: true,
366 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000367 arch: {
368 arm64: {
369 srcs: ["arm64/lib/crtobj.o"],
370 },
371 arm: {
372 srcs: ["arm/lib/crtobj.o"],
373 },
374 },
375}
Paul Duffin75b902a2021-02-22 12:13:13 +0000376`),
377 // Make sure that the generated sdk_snapshot uses the native_objects property.
378 checkVersionedAndroidBpContents(`
379// This is auto-generated. DO NOT EDIT.
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000380
381cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000382 name: "mysdk_crtobj@current",
383 sdk_member_name: "crtobj",
Paul Duffind99d9972020-09-29 16:00:55 +0100384 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000385 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000386 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100387 compile_multilib: "both",
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100388 sanitize: {
389 never: true,
390 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000391 arch: {
392 arm64: {
393 srcs: ["arm64/lib/crtobj.o"],
394 },
395 arm: {
396 srcs: ["arm/lib/crtobj.o"],
397 },
398 },
399}
400
401sdk_snapshot {
402 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100403 visibility: ["//visibility:public"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000404 native_objects: ["mysdk_crtobj@current"],
405}
406`),
407 checkAllCopyRules(`
408.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
409.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
410`),
411 )
412}
413
Paul Duffinc62a5102019-12-11 18:34:15 +0000414func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
415 result := testSdkWithCc(t, `
416 sdk {
417 name: "mysdk",
418 native_shared_libs: ["mynativelib1", "mynativelib2"],
419 }
420
421 cc_library_shared {
422 name: "mynativelib1",
423 srcs: [
424 "Test.cpp",
425 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000426 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000427 stl: "none",
428 }
429
430 cc_library_shared {
431 name: "mynativelib2",
432 srcs: [
433 "Test.cpp",
434 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000435 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000436 stl: "none",
437 }
438 `)
439
Paul Duffin1356d8c2020-02-25 19:26:33 +0000440 result.CheckSnapshot("mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000441 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000442myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800443.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
444.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
445.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
446.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000447`),
448 )
449}
450
Paul Duffina43f9272021-02-17 10:55:25 +0000451func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
452 result := testSdkWithCc(t, `
453 sdk {
454 name: "mysdk",
455 native_shared_libs: ["mynativelib"],
456 }
457
458 cc_library_shared {
459 name: "mynativelib",
460 srcs: [
461 "Test.cpp",
462 ],
463 generated_headers: [
464 "generated_foo",
465 ],
466 export_generated_headers: [
467 "generated_foo",
468 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000469 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000470 stl: "none",
471 }
472
473 genrule {
474 name: "generated_foo",
475 cmd: "generate-foo",
476 out: [
477 "generated_foo/protos/foo/bar.h",
478 ],
479 export_include_dirs: [
480 ".",
481 "protos",
482 ],
483 }
484 `)
485
486 result.CheckSnapshot("mysdk", "",
487 checkUnversionedAndroidBpContents(`
488// This is auto-generated. DO NOT EDIT.
489
490cc_prebuilt_library_shared {
491 name: "mynativelib",
492 prefer: false,
493 visibility: ["//visibility:public"],
494 apex_available: ["//apex_available:platform"],
495 stl: "none",
496 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000497 export_include_dirs: ["include/myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000498 arch: {
499 arm64: {
500 srcs: ["arm64/lib/mynativelib.so"],
501 export_include_dirs: [
Paul Duffin42dd4e62021-02-22 11:35:24 +0000502 "arm64/include_gen/generated_foo/gen",
503 "arm64/include_gen/generated_foo/gen/protos",
Paul Duffina43f9272021-02-17 10:55:25 +0000504 ],
505 },
506 arm: {
507 srcs: ["arm/lib/mynativelib.so"],
508 export_include_dirs: [
Paul Duffin42dd4e62021-02-22 11:35:24 +0000509 "arm/include_gen/generated_foo/gen",
510 "arm/include_gen/generated_foo/gen/protos",
Paul Duffina43f9272021-02-17 10:55:25 +0000511 ],
512 },
513 },
514}
515`),
516 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000517myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina43f9272021-02-17 10:55:25 +0000518.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000519.intermediates/generated_foo/gen/generated_foo/protos/foo/bar.h -> arm64/include_gen/generated_foo/gen/generated_foo/protos/foo/bar.h
Paul Duffina43f9272021-02-17 10:55:25 +0000520.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000521.intermediates/generated_foo/gen/generated_foo/protos/foo/bar.h -> arm/include_gen/generated_foo/gen/generated_foo/protos/foo/bar.h
Paul Duffina43f9272021-02-17 10:55:25 +0000522`),
523 )
524}
525
Martin Stjernholmb0249572020-09-15 02:32:35 +0100526// Verify that when the shared library has some common and some arch specific
527// properties that the generated snapshot is optimized properly. Substruct
528// handling is tested with the sanitize clauses (but note there's a lot of
529// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000530func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
531 result := testSdkWithCc(t, `
532 sdk {
533 name: "mysdk",
534 native_shared_libs: ["mynativelib"],
535 }
536
537 cc_library_shared {
538 name: "mynativelib",
539 srcs: [
540 "Test.cpp",
541 "aidl/foo/bar/Test.aidl",
542 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000543 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100544 sanitize: {
545 fuzzer: false,
546 integer_overflow: true,
547 diag: { undefined: false },
548 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000549 arch: {
550 arm64: {
551 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100552 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100553 integer_overflow: false,
554 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000555 },
556 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000557 stl: "none",
558 }
559 `)
560
Paul Duffin1356d8c2020-02-25 19:26:33 +0000561 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000562 checkUnversionedAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000563// This is auto-generated. DO NOT EDIT.
564
565cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000566 name: "mynativelib",
567 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100568 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000569 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000570 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100571 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000572 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100573 sanitize: {
574 fuzzer: false,
575 diag: {
576 undefined: false,
577 },
578 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000579 arch: {
580 arm64: {
581 srcs: ["arm64/lib/mynativelib.so"],
582 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100583 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100584 integer_overflow: false,
585 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000586 },
587 arm: {
588 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100589 sanitize: {
590 integer_overflow: true,
591 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000592 },
593 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000594}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000595`),
596 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000597myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000598.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000599arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800600.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000601 )
602}
603
Paul Duffin25ce04b2020-01-16 11:47:25 +0000604func TestSnapshotWithCcBinary(t *testing.T) {
605 result := testSdkWithCc(t, `
606 module_exports {
607 name: "mymodule_exports",
608 native_binaries: ["mynativebinary"],
609 }
610
611 cc_binary {
612 name: "mynativebinary",
613 srcs: [
614 "Test.cpp",
615 ],
616 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000617 }
618 `)
619
Paul Duffin1356d8c2020-02-25 19:26:33 +0000620 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000621 checkUnversionedAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000622// This is auto-generated. DO NOT EDIT.
623
624cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000625 name: "mynativebinary",
626 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100627 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000628 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000629 compile_multilib: "both",
630 arch: {
631 arm64: {
632 srcs: ["arm64/bin/mynativebinary"],
633 },
634 arm: {
635 srcs: ["arm/bin/mynativebinary"],
636 },
637 },
638}
Paul Duffin75b902a2021-02-22 12:13:13 +0000639`),
640 // Make sure that the generated sdk_snapshot uses the native_binaries property.
641 checkVersionedAndroidBpContents(`
642// This is auto-generated. DO NOT EDIT.
Paul Duffin25ce04b2020-01-16 11:47:25 +0000643
644cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000645 name: "mymodule_exports_mynativebinary@current",
646 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100647 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000648 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +0000649 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000650 compile_multilib: "both",
651 arch: {
652 arm64: {
653 srcs: ["arm64/bin/mynativebinary"],
654 },
655 arm: {
656 srcs: ["arm/bin/mynativebinary"],
657 },
658 },
659}
660
661module_exports_snapshot {
662 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100663 visibility: ["//visibility:public"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000664 native_binaries: ["mymodule_exports_mynativebinary@current"],
665}
666`),
667 checkAllCopyRules(`
668.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
669.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
670`),
671 )
672}
673
Paul Duffina04c1072020-03-02 10:16:35 +0000674func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000675 result := testSdkWithCc(t, `
676 module_exports {
677 name: "myexports",
678 device_supported: false,
679 host_supported: true,
680 native_binaries: ["mynativebinary"],
681 target: {
682 windows: {
683 enabled: true,
684 },
685 },
686 }
687
688 cc_binary {
689 name: "mynativebinary",
690 device_supported: false,
691 host_supported: true,
692 srcs: [
693 "Test.cpp",
694 ],
695 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000696 stl: "none",
697 target: {
698 windows: {
699 enabled: true,
700 },
701 },
702 }
703 `)
704
705 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000706 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000707// This is auto-generated. DO NOT EDIT.
708
709cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000710 name: "mynativebinary",
711 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100712 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000713 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000714 device_supported: false,
715 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100716 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000717 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100718 host: {
719 enabled: false,
720 },
Paul Duffina04c1072020-03-02 10:16:35 +0000721 linux_glibc: {
722 compile_multilib: "both",
723 },
724 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900725 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000726 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
727 },
728 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900729 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000730 srcs: ["linux_glibc/x86/bin/mynativebinary"],
731 },
732 windows: {
733 compile_multilib: "64",
734 },
735 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900736 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000737 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
738 },
739 },
740}
Paul Duffin75b902a2021-02-22 12:13:13 +0000741`),
742 checkVersionedAndroidBpContents(`
743// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +0000744
745cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000746 name: "myexports_mynativebinary@current",
747 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100748 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000749 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000750 device_supported: false,
751 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000752 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100753 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000754 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100755 host: {
756 enabled: false,
757 },
Paul Duffina04c1072020-03-02 10:16:35 +0000758 linux_glibc: {
759 compile_multilib: "both",
760 },
761 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900762 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000763 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
764 },
765 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900766 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000767 srcs: ["linux_glibc/x86/bin/mynativebinary"],
768 },
769 windows: {
770 compile_multilib: "64",
771 },
772 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900773 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000774 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
775 },
776 },
777}
778
779module_exports_snapshot {
780 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100781 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +0000782 device_supported: false,
783 host_supported: true,
784 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000785 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900786 windows: {
787 compile_multilib: "64",
788 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100789 host: {
790 enabled: false,
791 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900792 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100793 enabled: true,
794 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900795 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100796 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +0900797 },
798 windows_x86_64: {
799 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +0000800 },
801 },
Paul Duffina04c1072020-03-02 10:16:35 +0000802}
803`),
804 checkAllCopyRules(`
805.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
806.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
807.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
808`),
809 )
810}
811
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100812func TestSnapshotWithSingleHostOsType(t *testing.T) {
813 ctx, config := testSdkContext(`
814 cc_defaults {
815 name: "mydefaults",
816 device_supported: false,
817 host_supported: true,
818 compile_multilib: "64",
819 target: {
820 host: {
821 enabled: false,
822 },
823 linux_bionic: {
824 enabled: true,
825 },
826 },
827 }
828
829 module_exports {
830 name: "myexports",
831 defaults: ["mydefaults"],
832 native_shared_libs: ["mynativelib"],
833 native_binaries: ["mynativebinary"],
834 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
835 }
836
837 cc_library {
838 name: "mynativelib",
839 defaults: ["mydefaults"],
840 srcs: [
841 "Test.cpp",
842 ],
843 stl: "none",
844 }
845
846 cc_binary {
847 name: "mynativebinary",
848 defaults: ["mydefaults"],
849 srcs: [
850 "Test.cpp",
851 ],
852 stl: "none",
853 }
854 `, ccTestFs, []android.OsType{android.LinuxBionic})
855
856 result := runTests(t, ctx, config)
857
858 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000859 checkUnversionedAndroidBpContents(`
860// This is auto-generated. DO NOT EDIT.
861
862cc_prebuilt_binary {
863 name: "mynativebinary",
864 prefer: false,
865 visibility: ["//visibility:public"],
866 apex_available: ["//apex_available:platform"],
867 device_supported: false,
868 host_supported: true,
869 stl: "none",
870 compile_multilib: "64",
871 target: {
872 host: {
873 enabled: false,
874 },
875 linux_bionic_x86_64: {
876 enabled: true,
877 srcs: ["x86_64/bin/mynativebinary"],
878 },
879 },
880}
881
882cc_prebuilt_library_shared {
883 name: "mynativelib",
884 prefer: false,
885 visibility: ["//visibility:public"],
886 apex_available: ["//apex_available:platform"],
887 device_supported: false,
888 host_supported: true,
889 stl: "none",
890 compile_multilib: "64",
891 target: {
892 host: {
893 enabled: false,
894 },
895 linux_bionic_x86_64: {
896 enabled: true,
897 srcs: ["x86_64/lib/mynativelib.so"],
898 },
899 },
900}
901`),
902 checkVersionedAndroidBpContents(`
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100903// This is auto-generated. DO NOT EDIT.
904
905cc_prebuilt_binary {
906 name: "myexports_mynativebinary@current",
907 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100908 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000909 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100910 device_supported: false,
911 host_supported: true,
912 installable: false,
913 stl: "none",
914 compile_multilib: "64",
915 target: {
916 host: {
917 enabled: false,
918 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100919 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900920 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100921 srcs: ["x86_64/bin/mynativebinary"],
922 },
923 },
924}
925
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100926cc_prebuilt_library_shared {
927 name: "myexports_mynativelib@current",
928 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +0100929 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000930 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100931 device_supported: false,
932 host_supported: true,
933 installable: false,
934 stl: "none",
935 compile_multilib: "64",
936 target: {
937 host: {
938 enabled: false,
939 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100940 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900941 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100942 srcs: ["x86_64/lib/mynativelib.so"],
943 },
944 },
945}
946
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100947module_exports_snapshot {
948 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100949 visibility: ["//visibility:public"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100950 device_supported: false,
951 host_supported: true,
952 native_binaries: ["myexports_mynativebinary@current"],
953 native_shared_libs: ["myexports_mynativelib@current"],
954 compile_multilib: "64",
955 target: {
956 host: {
957 enabled: false,
958 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900959 linux_bionic_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100960 enabled: true,
961 },
962 },
963}
964`),
965 checkAllCopyRules(`
966.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
967.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
968`),
969 )
970}
971
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100972// Test that we support the necessary flags for the linker binary, which is
973// special in several ways.
974func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100975 result := testSdkWithCc(t, `
976 module_exports {
977 name: "mymodule_exports",
978 host_supported: true,
979 device_supported: false,
980 native_binaries: ["linker"],
981 }
982
983 cc_binary {
984 name: "linker",
985 host_supported: true,
986 static_executable: true,
987 nocrt: true,
988 stl: "none",
989 srcs: [
990 "Test.cpp",
991 ],
992 compile_multilib: "both",
993 }
994 `)
995
996 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000997 checkUnversionedAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100998// This is auto-generated. DO NOT EDIT.
999
1000cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001001 name: "linker",
1002 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001003 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001004 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001005 device_supported: false,
1006 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001007 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001008 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001009 static_executable: true,
1010 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001011 target: {
1012 host: {
1013 enabled: false,
1014 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001015 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001016 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001017 srcs: ["x86_64/bin/linker"],
1018 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001019 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001020 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001021 srcs: ["x86/bin/linker"],
1022 },
1023 },
1024}
Paul Duffin75b902a2021-02-22 12:13:13 +00001025`),
1026 checkVersionedAndroidBpContents(`
1027// This is auto-generated. DO NOT EDIT.
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001028
1029cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001030 name: "mymodule_exports_linker@current",
1031 sdk_member_name: "linker",
Paul Duffind99d9972020-09-29 16:00:55 +01001032 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001033 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001034 device_supported: false,
1035 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001036 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001037 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001038 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001039 static_executable: true,
1040 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001041 target: {
1042 host: {
1043 enabled: false,
1044 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001045 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001046 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001047 srcs: ["x86_64/bin/linker"],
1048 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001049 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001050 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001051 srcs: ["x86/bin/linker"],
1052 },
1053 },
1054}
1055
1056module_exports_snapshot {
1057 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001058 visibility: ["//visibility:public"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001059 device_supported: false,
1060 host_supported: true,
1061 native_binaries: ["mymodule_exports_linker@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001062 target: {
1063 host: {
1064 enabled: false,
1065 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001066 linux_glibc_x86_64: {
1067 enabled: true,
1068 },
1069 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001070 enabled: true,
1071 },
1072 },
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001073}
1074`),
1075 checkAllCopyRules(`
1076.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
1077.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
1078`),
1079 )
1080}
1081
Paul Duffin9ab556f2019-12-11 18:42:17 +00001082func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001083 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001084 sdk {
1085 name: "mysdk",
1086 native_shared_libs: ["mynativelib"],
1087 }
1088
1089 cc_library_shared {
1090 name: "mynativelib",
1091 srcs: [
1092 "Test.cpp",
1093 "aidl/foo/bar/Test.aidl",
1094 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001095 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +00001096 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001097 aidl: {
1098 export_aidl_headers: true,
1099 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001100 stl: "none",
1101 }
1102 `)
1103
Paul Duffin1356d8c2020-02-25 19:26:33 +00001104 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001105 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001106// This is auto-generated. DO NOT EDIT.
1107
1108cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +00001109 name: "mynativelib",
1110 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001111 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001112 apex_available: [
1113 "apex1",
1114 "apex2",
1115 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001116 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001117 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001118 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001119 arch: {
1120 arm64: {
1121 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001122 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001123 },
1124 arm: {
1125 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001126 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001127 },
1128 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001129}
Paul Duffina80fdec2019-12-03 15:25:00 +00001130`),
1131 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001132myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001133.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001134.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h
1135.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h
1136.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h
Colin Cross7113d202019-11-20 16:39:12 -08001137.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001138.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h
1139.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h
1140.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001141`),
1142 )
1143}
1144
Paul Duffin13f02712020-03-06 12:30:43 +00001145func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
1146 result := testSdkWithCc(t, `
1147 sdk {
1148 name: "mysdk",
1149 native_shared_libs: [
1150 "mynativelib",
1151 "myothernativelib",
1152 "mysystemnativelib",
1153 ],
1154 }
1155
1156 cc_library {
1157 name: "mysystemnativelib",
1158 srcs: [
1159 "Test.cpp",
1160 ],
Paul Duffin13f02712020-03-06 12:30:43 +00001161 stl: "none",
1162 }
1163
1164 cc_library_shared {
1165 name: "myothernativelib",
1166 srcs: [
1167 "Test.cpp",
1168 ],
1169 system_shared_libs: [
1170 // A reference to a library that is not an sdk member. Uses libm as that
1171 // is in the default set of modules available to this test and so is available
1172 // both here and also when the generated Android.bp file is tested in
1173 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
1174 // handles references to modules that are not sdk members.
1175 "libm",
1176 ],
1177 stl: "none",
1178 }
1179
1180 cc_library {
1181 name: "mynativelib",
1182 srcs: [
1183 "Test.cpp",
1184 ],
1185 shared_libs: [
1186 // A reference to another sdk member.
1187 "myothernativelib",
1188 ],
1189 target: {
1190 android: {
1191 shared: {
1192 shared_libs: [
1193 // A reference to a library that is not an sdk member. The libc library
1194 // is used here to check that the shared_libs property is handled correctly
1195 // in a similar way to how libm is used to check system_shared_libs above.
1196 "libc",
1197 ],
1198 },
1199 },
1200 },
Paul Duffin13f02712020-03-06 12:30:43 +00001201 stl: "none",
1202 }
1203 `)
1204
1205 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001206 checkUnversionedAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +00001207// This is auto-generated. DO NOT EDIT.
1208
1209cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001210 name: "mynativelib",
1211 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001212 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001213 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001214 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001215 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001216 shared_libs: [
1217 "myothernativelib",
1218 "libc",
1219 ],
1220 arch: {
1221 arm64: {
1222 srcs: ["arm64/lib/mynativelib.so"],
1223 },
1224 arm: {
1225 srcs: ["arm/lib/mynativelib.so"],
1226 },
1227 },
Paul Duffin13f02712020-03-06 12:30:43 +00001228}
1229
1230cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001231 name: "myothernativelib",
1232 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001233 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001234 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001235 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001236 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001237 system_shared_libs: ["libm"],
1238 arch: {
1239 arm64: {
1240 srcs: ["arm64/lib/myothernativelib.so"],
1241 },
1242 arm: {
1243 srcs: ["arm/lib/myothernativelib.so"],
1244 },
1245 },
Paul Duffin13f02712020-03-06 12:30:43 +00001246}
1247
1248cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001249 name: "mysystemnativelib",
1250 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001251 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001252 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001253 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001254 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001255 arch: {
1256 arm64: {
1257 srcs: ["arm64/lib/mysystemnativelib.so"],
1258 },
1259 arm: {
1260 srcs: ["arm/lib/mysystemnativelib.so"],
1261 },
1262 },
Paul Duffin13f02712020-03-06 12:30:43 +00001263}
Paul Duffin13f02712020-03-06 12:30:43 +00001264`),
1265 checkAllCopyRules(`
1266.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1267.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1268.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1269.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1270.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1271.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1272`),
1273 )
1274}
1275
Paul Duffin9ab556f2019-12-11 18:42:17 +00001276func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001277 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001278 sdk {
1279 name: "mysdk",
1280 device_supported: false,
1281 host_supported: true,
1282 native_shared_libs: ["mynativelib"],
1283 }
1284
1285 cc_library_shared {
1286 name: "mynativelib",
1287 device_supported: false,
1288 host_supported: true,
1289 srcs: [
1290 "Test.cpp",
1291 "aidl/foo/bar/Test.aidl",
1292 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001293 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001294 aidl: {
1295 export_aidl_headers: true,
1296 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001297 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001298 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001299 }
1300 `)
1301
Paul Duffin1356d8c2020-02-25 19:26:33 +00001302 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001303 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001304// This is auto-generated. DO NOT EDIT.
1305
1306cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001307 name: "mynativelib",
1308 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001309 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001310 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001311 device_supported: false,
1312 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001313 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001314 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001315 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001316 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001317 target: {
1318 host: {
1319 enabled: false,
1320 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001321 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001322 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001323 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001324 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001325 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001326 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001327 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001328 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001329 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001330 },
1331 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001332}
Paul Duffin75b902a2021-02-22 12:13:13 +00001333`),
1334 checkVersionedAndroidBpContents(`
1335// This is auto-generated. DO NOT EDIT.
Paul Duffina80fdec2019-12-03 15:25:00 +00001336
1337cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001338 name: "mysdk_mynativelib@current",
1339 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001340 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001341 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001342 device_supported: false,
1343 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001344 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001345 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001346 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001347 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001348 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001349 target: {
1350 host: {
1351 enabled: false,
1352 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001353 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001354 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001355 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001356 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001357 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001358 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001359 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001360 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001361 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001362 },
1363 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001364}
1365
1366sdk_snapshot {
1367 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001368 visibility: ["//visibility:public"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001369 device_supported: false,
1370 host_supported: true,
1371 native_shared_libs: ["mysdk_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001372 target: {
1373 host: {
1374 enabled: false,
1375 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001376 linux_glibc_x86_64: {
1377 enabled: true,
1378 },
1379 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001380 enabled: true,
1381 },
1382 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001383}
1384`),
1385 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001386myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001387.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001388.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h
1389.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h
1390.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001391.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001392.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h
1393.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h
1394.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001395`),
1396 )
1397}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001398
Paul Duffina04c1072020-03-02 10:16:35 +00001399func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001400 result := testSdkWithCc(t, `
1401 sdk {
1402 name: "mysdk",
1403 device_supported: false,
1404 host_supported: true,
1405 native_shared_libs: ["mynativelib"],
1406 target: {
1407 windows: {
1408 enabled: true,
1409 },
1410 },
1411 }
1412
1413 cc_library_shared {
1414 name: "mynativelib",
1415 device_supported: false,
1416 host_supported: true,
1417 srcs: [
1418 "Test.cpp",
1419 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001420 stl: "none",
1421 target: {
1422 windows: {
1423 enabled: true,
1424 },
1425 },
1426 }
1427 `)
1428
1429 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001430 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001431// This is auto-generated. DO NOT EDIT.
1432
1433cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001434 name: "mynativelib",
1435 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001436 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001437 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001438 device_supported: false,
1439 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001440 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001441 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001442 host: {
1443 enabled: false,
1444 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001445 linux_glibc: {
1446 compile_multilib: "both",
1447 },
Paul Duffina04c1072020-03-02 10:16:35 +00001448 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001449 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001450 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1451 },
1452 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001453 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001454 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1455 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001456 windows: {
1457 compile_multilib: "64",
1458 },
Paul Duffina04c1072020-03-02 10:16:35 +00001459 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001460 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001461 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1462 },
1463 },
Paul Duffina04c1072020-03-02 10:16:35 +00001464}
Paul Duffin75b902a2021-02-22 12:13:13 +00001465`),
1466 checkVersionedAndroidBpContents(`
1467// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00001468
1469cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001470 name: "mysdk_mynativelib@current",
1471 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001472 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001473 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001474 device_supported: false,
1475 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001476 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001477 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001478 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001479 host: {
1480 enabled: false,
1481 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001482 linux_glibc: {
1483 compile_multilib: "both",
1484 },
Paul Duffina04c1072020-03-02 10:16:35 +00001485 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001486 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001487 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1488 },
1489 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001490 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001491 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1492 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001493 windows: {
1494 compile_multilib: "64",
1495 },
Paul Duffina04c1072020-03-02 10:16:35 +00001496 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001497 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001498 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1499 },
1500 },
Paul Duffina04c1072020-03-02 10:16:35 +00001501}
1502
1503sdk_snapshot {
1504 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001505 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00001506 device_supported: false,
1507 host_supported: true,
1508 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001509 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001510 windows: {
1511 compile_multilib: "64",
1512 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001513 host: {
1514 enabled: false,
1515 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001516 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001517 enabled: true,
1518 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001519 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001520 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +09001521 },
1522 windows_x86_64: {
1523 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +00001524 },
1525 },
Paul Duffina04c1072020-03-02 10:16:35 +00001526}
1527`),
1528 checkAllCopyRules(`
1529.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1530.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1531.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1532`),
1533 )
1534}
1535
Paul Duffin9ab556f2019-12-11 18:42:17 +00001536func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1537 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001538 module_exports {
1539 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001540 native_static_libs: ["mynativelib"],
1541 }
1542
1543 cc_library_static {
1544 name: "mynativelib",
1545 srcs: [
1546 "Test.cpp",
1547 "aidl/foo/bar/Test.aidl",
1548 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001549 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001550 aidl: {
1551 export_aidl_headers: true,
1552 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001553 stl: "none",
1554 }
1555 `)
1556
Paul Duffin1356d8c2020-02-25 19:26:33 +00001557 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001558 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001559// This is auto-generated. DO NOT EDIT.
1560
1561cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001562 name: "mynativelib",
1563 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001564 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001565 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001566 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001567 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001568 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001569 arch: {
1570 arm64: {
1571 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001572 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001573 },
1574 arm: {
1575 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001576 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001577 },
1578 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001579}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001580`),
1581 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001582myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001583.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001584.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h
1585.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h
1586.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h
Colin Cross7113d202019-11-20 16:39:12 -08001587.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001588.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h
1589.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h
1590.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001591`),
1592 )
1593}
1594
1595func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001596 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001597 module_exports {
1598 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001599 device_supported: false,
1600 host_supported: true,
1601 native_static_libs: ["mynativelib"],
1602 }
1603
1604 cc_library_static {
1605 name: "mynativelib",
1606 device_supported: false,
1607 host_supported: true,
1608 srcs: [
1609 "Test.cpp",
1610 "aidl/foo/bar/Test.aidl",
1611 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001612 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001613 aidl: {
1614 export_aidl_headers: true,
1615 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001616 stl: "none",
1617 }
1618 `)
1619
Paul Duffin1356d8c2020-02-25 19:26:33 +00001620 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001621 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001622// This is auto-generated. DO NOT EDIT.
1623
1624cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001625 name: "mynativelib",
1626 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001627 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001628 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001629 device_supported: false,
1630 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001631 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001632 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001633 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001634 target: {
1635 host: {
1636 enabled: false,
1637 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001638 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001639 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001640 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001641 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001642 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001643 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001644 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001645 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001646 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001647 },
1648 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001649}
Paul Duffin75b902a2021-02-22 12:13:13 +00001650`),
1651 checkVersionedAndroidBpContents(`
1652// This is auto-generated. DO NOT EDIT.
Paul Duffin9ab556f2019-12-11 18:42:17 +00001653
1654cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001655 name: "myexports_mynativelib@current",
1656 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001657 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001658 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001659 device_supported: false,
1660 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001661 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001662 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001663 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001664 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001665 target: {
1666 host: {
1667 enabled: false,
1668 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001669 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001670 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001671 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001672 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001673 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001674 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001675 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001676 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001677 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001678 },
1679 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001680}
1681
Paul Duffine6029182019-12-16 17:43:48 +00001682module_exports_snapshot {
1683 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001684 visibility: ["//visibility:public"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001685 device_supported: false,
1686 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001687 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001688 target: {
1689 host: {
1690 enabled: false,
1691 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001692 linux_glibc_x86_64: {
1693 enabled: true,
1694 },
1695 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001696 enabled: true,
1697 },
1698 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001699}
1700`),
1701 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001702myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001703.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001704.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h
1705.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h
1706.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001707.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001708.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h
1709.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h
1710.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001711`),
1712 )
1713}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001714
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001715func TestSnapshotWithCcLibrary(t *testing.T) {
1716 result := testSdkWithCc(t, `
1717 module_exports {
1718 name: "myexports",
1719 native_libs: ["mynativelib"],
1720 }
1721
1722 cc_library {
1723 name: "mynativelib",
1724 srcs: [
1725 "Test.cpp",
1726 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001727 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001728 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001729 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001730 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001731 }
1732 `)
1733
1734 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001735 checkUnversionedAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001736// This is auto-generated. DO NOT EDIT.
1737
1738cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001739 name: "mynativelib",
1740 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001741 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001742 apex_available: ["//apex_available:platform"],
Paul Duffind6abaa72020-09-07 16:39:22 +01001743 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001744 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001745 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001746 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001747 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001748 arch: {
1749 arm64: {
1750 static: {
1751 srcs: ["arm64/lib/mynativelib.a"],
1752 },
1753 shared: {
1754 srcs: ["arm64/lib/mynativelib.so"],
1755 },
1756 },
1757 arm: {
1758 static: {
1759 srcs: ["arm/lib/mynativelib.a"],
1760 },
1761 shared: {
1762 srcs: ["arm/lib/mynativelib.so"],
1763 },
1764 },
1765 },
1766}
Paul Duffin75b902a2021-02-22 12:13:13 +00001767`),
1768 // Make sure that the generated sdk_snapshot uses the native_libs property.
1769 checkVersionedAndroidBpContents(`
1770// This is auto-generated. DO NOT EDIT.
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001771
1772cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001773 name: "myexports_mynativelib@current",
1774 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001775 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001776 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +00001777 installable: false,
Paul Duffind6abaa72020-09-07 16:39:22 +01001778 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001779 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001780 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001781 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001782 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001783 arch: {
1784 arm64: {
1785 static: {
1786 srcs: ["arm64/lib/mynativelib.a"],
1787 },
1788 shared: {
1789 srcs: ["arm64/lib/mynativelib.so"],
1790 },
1791 },
1792 arm: {
1793 static: {
1794 srcs: ["arm/lib/mynativelib.a"],
1795 },
1796 shared: {
1797 srcs: ["arm/lib/mynativelib.so"],
1798 },
1799 },
1800 },
1801}
1802
1803module_exports_snapshot {
1804 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001805 visibility: ["//visibility:public"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001806 native_libs: ["myexports_mynativelib@current"],
1807}
1808`),
1809 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001810myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001811.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1812.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1813.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
1814.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
1815 )
1816}
1817
Paul Duffin13ad94f2020-02-19 16:19:27 +00001818func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001819 result := testSdkWithCc(t, `
1820 module_exports {
1821 name: "myexports",
1822 device_supported: false,
1823 host_supported: true,
1824 target: {
1825 host: {
1826 compile_multilib: "64",
1827 },
1828 },
1829 native_static_libs: ["mynativelib"],
1830 }
1831
1832 cc_library_static {
1833 name: "mynativelib",
1834 device_supported: false,
1835 host_supported: true,
1836 srcs: [
1837 "Test.cpp",
1838 "aidl/foo/bar/Test.aidl",
1839 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001840 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001841 aidl: {
1842 export_aidl_headers: true,
1843 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001844 stl: "none",
1845 }
1846 `)
1847
Paul Duffin1356d8c2020-02-25 19:26:33 +00001848 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001849 checkUnversionedAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001850// This is auto-generated. DO NOT EDIT.
1851
1852cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001853 name: "mynativelib",
1854 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001855 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001856 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001857 device_supported: false,
1858 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001859 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001860 compile_multilib: "64",
Paul Duffin86b02a72021-02-22 11:50:04 +00001861 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001862 target: {
1863 host: {
1864 enabled: false,
1865 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001866 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001867 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001868 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001869 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001870 },
1871 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001872}
Paul Duffin75b902a2021-02-22 12:13:13 +00001873`),
1874 checkVersionedAndroidBpContents(`
1875// This is auto-generated. DO NOT EDIT.
Paul Duffin13ad94f2020-02-19 16:19:27 +00001876
1877cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001878 name: "myexports_mynativelib@current",
1879 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001880 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001881 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001882 device_supported: false,
1883 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001884 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001885 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001886 compile_multilib: "64",
Paul Duffin86b02a72021-02-22 11:50:04 +00001887 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001888 target: {
1889 host: {
1890 enabled: false,
1891 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001892 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001893 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001894 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001895 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001896 },
1897 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001898}
1899
1900module_exports_snapshot {
1901 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001902 visibility: ["//visibility:public"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001903 device_supported: false,
1904 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +00001905 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01001906 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001907 target: {
1908 host: {
1909 enabled: false,
1910 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001911 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001912 enabled: true,
1913 },
1914 },
Paul Duffin75b902a2021-02-22 12:13:13 +00001915}
1916`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001917 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001918myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin13ad94f2020-02-19 16:19:27 +00001919.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001920.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h
1921.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h
1922.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin13ad94f2020-02-19 16:19:27 +00001923`),
1924 )
1925}
Paul Duffin91756d22020-02-21 16:29:57 +00001926
1927func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1928 result := testSdkWithCc(t, `
1929 sdk {
1930 name: "mysdk",
1931 native_header_libs: ["mynativeheaders"],
1932 }
1933
1934 cc_library_headers {
1935 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001936 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001937 stl: "none",
1938 }
1939 `)
1940
Paul Duffin1356d8c2020-02-25 19:26:33 +00001941 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001942 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001943// This is auto-generated. DO NOT EDIT.
1944
1945cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001946 name: "mynativeheaders",
1947 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001948 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001949 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001950 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001951 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001952 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001953}
Paul Duffin91756d22020-02-21 16:29:57 +00001954`),
1955 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001956myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001957`),
1958 )
1959}
1960
1961func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00001962 result := testSdkWithCc(t, `
1963 sdk {
1964 name: "mysdk",
1965 device_supported: false,
1966 host_supported: true,
1967 native_header_libs: ["mynativeheaders"],
1968 }
1969
1970 cc_library_headers {
1971 name: "mynativeheaders",
1972 device_supported: false,
1973 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00001974 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001975 stl: "none",
1976 }
1977 `)
1978
Paul Duffin1356d8c2020-02-25 19:26:33 +00001979 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001980 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001981// This is auto-generated. DO NOT EDIT.
1982
1983cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00001984 name: "mynativeheaders",
1985 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001986 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001987 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001988 device_supported: false,
1989 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001990 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001991 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001992 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001993 target: {
1994 host: {
1995 enabled: false,
1996 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001997 linux_glibc_x86_64: {
1998 enabled: true,
1999 },
2000 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002001 enabled: true,
2002 },
2003 },
Paul Duffin91756d22020-02-21 16:29:57 +00002004}
Paul Duffin75b902a2021-02-22 12:13:13 +00002005`),
2006 checkVersionedAndroidBpContents(`
2007// This is auto-generated. DO NOT EDIT.
Paul Duffin91756d22020-02-21 16:29:57 +00002008
2009cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002010 name: "mysdk_mynativeheaders@current",
2011 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002012 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002013 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002014 device_supported: false,
2015 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002016 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002017 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002018 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002019 target: {
2020 host: {
2021 enabled: false,
2022 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002023 linux_glibc_x86_64: {
2024 enabled: true,
2025 },
2026 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002027 enabled: true,
2028 },
2029 },
Paul Duffin91756d22020-02-21 16:29:57 +00002030}
2031
2032sdk_snapshot {
2033 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002034 visibility: ["//visibility:public"],
Paul Duffin91756d22020-02-21 16:29:57 +00002035 device_supported: false,
2036 host_supported: true,
2037 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002038 target: {
2039 host: {
2040 enabled: false,
2041 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002042 linux_glibc_x86_64: {
2043 enabled: true,
2044 },
2045 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002046 enabled: true,
2047 },
2048 },
Paul Duffin91756d22020-02-21 16:29:57 +00002049}
2050`),
2051 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002052myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002053`),
2054 )
2055}
Paul Duffina04c1072020-03-02 10:16:35 +00002056
2057func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00002058 result := testSdkWithCc(t, `
2059 sdk {
2060 name: "mysdk",
2061 host_supported: true,
2062 native_header_libs: ["mynativeheaders"],
2063 }
2064
2065 cc_library_headers {
2066 name: "mynativeheaders",
2067 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00002068 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00002069 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002070 target: {
2071 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002072 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002073 },
2074 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002075 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002076 },
2077 },
2078 }
2079 `)
2080
2081 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002082 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002083// This is auto-generated. DO NOT EDIT.
2084
2085cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002086 name: "mynativeheaders",
2087 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002088 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002089 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002090 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002091 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002092 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002093 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002094 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002095 host: {
2096 enabled: false,
2097 },
Paul Duffina04c1072020-03-02 10:16:35 +00002098 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002099 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002100 },
2101 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002102 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002103 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002104 linux_glibc_x86_64: {
2105 enabled: true,
2106 },
2107 linux_glibc_x86: {
2108 enabled: true,
2109 },
Paul Duffina04c1072020-03-02 10:16:35 +00002110 },
Paul Duffina04c1072020-03-02 10:16:35 +00002111}
Paul Duffin75b902a2021-02-22 12:13:13 +00002112`),
2113 // Verifi
2114 checkVersionedAndroidBpContents(`
2115// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00002116
2117cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002118 name: "mysdk_mynativeheaders@current",
2119 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002120 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002121 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002122 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002123 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002124 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002125 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002126 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002127 host: {
2128 enabled: false,
2129 },
Paul Duffina04c1072020-03-02 10:16:35 +00002130 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002131 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002132 },
2133 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002134 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002135 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002136 linux_glibc_x86_64: {
2137 enabled: true,
2138 },
2139 linux_glibc_x86: {
2140 enabled: true,
2141 },
Paul Duffina04c1072020-03-02 10:16:35 +00002142 },
Paul Duffina04c1072020-03-02 10:16:35 +00002143}
2144
2145sdk_snapshot {
2146 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002147 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00002148 host_supported: true,
2149 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002150 target: {
2151 host: {
2152 enabled: false,
2153 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002154 linux_glibc_x86_64: {
2155 enabled: true,
2156 },
2157 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002158 enabled: true,
2159 },
2160 },
Paul Duffina04c1072020-03-02 10:16:35 +00002161}
2162`),
2163 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002164myinclude/Test.h -> common_os/include/myinclude/Test.h
2165myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2166myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002167`),
2168 )
2169}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002170
2171func TestSystemSharedLibPropagation(t *testing.T) {
2172 result := testSdkWithCc(t, `
2173 sdk {
2174 name: "mysdk",
2175 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
2176 }
2177
2178 cc_library {
2179 name: "sslnil",
2180 host_supported: true,
2181 }
2182
2183 cc_library {
2184 name: "sslempty",
2185 system_shared_libs: [],
2186 }
2187
2188 cc_library {
2189 name: "sslnonempty",
2190 system_shared_libs: ["sslnil"],
2191 }
2192 `)
2193
2194 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002195 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002196// This is auto-generated. DO NOT EDIT.
2197
2198cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002199 name: "sslnil",
2200 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002201 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002202 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002203 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002204 arch: {
2205 arm64: {
2206 srcs: ["arm64/lib/sslnil.so"],
2207 },
2208 arm: {
2209 srcs: ["arm/lib/sslnil.so"],
2210 },
2211 },
2212}
2213
2214cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002215 name: "sslempty",
2216 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002217 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002218 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002219 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002220 system_shared_libs: [],
2221 arch: {
2222 arm64: {
2223 srcs: ["arm64/lib/sslempty.so"],
2224 },
2225 arm: {
2226 srcs: ["arm/lib/sslempty.so"],
2227 },
2228 },
2229}
2230
2231cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002232 name: "sslnonempty",
2233 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002234 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002235 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002236 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002237 system_shared_libs: ["sslnil"],
2238 arch: {
2239 arm64: {
2240 srcs: ["arm64/lib/sslnonempty.so"],
2241 },
2242 arm: {
2243 srcs: ["arm/lib/sslnonempty.so"],
2244 },
2245 },
2246}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002247`))
2248
2249 result = testSdkWithCc(t, `
2250 sdk {
2251 name: "mysdk",
2252 host_supported: true,
2253 native_shared_libs: ["sslvariants"],
2254 }
2255
2256 cc_library {
2257 name: "sslvariants",
2258 host_supported: true,
2259 target: {
2260 android: {
2261 system_shared_libs: [],
2262 },
2263 },
2264 }
2265 `)
2266
2267 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002268 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002269// This is auto-generated. DO NOT EDIT.
2270
2271cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002272 name: "sslvariants",
2273 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002274 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002275 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002276 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002277 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002278 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002279 host: {
2280 enabled: false,
2281 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002282 android: {
2283 system_shared_libs: [],
2284 },
2285 android_arm64: {
2286 srcs: ["android/arm64/lib/sslvariants.so"],
2287 },
2288 android_arm: {
2289 srcs: ["android/arm/lib/sslvariants.so"],
2290 },
2291 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002292 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002293 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2294 },
2295 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002296 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002297 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2298 },
2299 },
2300}
Paul Duffin75b902a2021-02-22 12:13:13 +00002301`),
2302 checkVersionedAndroidBpContents(`
2303// This is auto-generated. DO NOT EDIT.
Martin Stjernholm10566a02020-03-24 01:19:52 +00002304
2305cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002306 name: "mysdk_sslvariants@current",
2307 sdk_member_name: "sslvariants",
Paul Duffind99d9972020-09-29 16:00:55 +01002308 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002309 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002310 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002311 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002312 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002313 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002314 host: {
2315 enabled: false,
2316 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002317 android: {
2318 system_shared_libs: [],
2319 },
2320 android_arm64: {
2321 srcs: ["android/arm64/lib/sslvariants.so"],
2322 },
2323 android_arm: {
2324 srcs: ["android/arm/lib/sslvariants.so"],
2325 },
2326 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002327 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002328 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2329 },
2330 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002331 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002332 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2333 },
2334 },
2335}
2336
2337sdk_snapshot {
2338 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002339 visibility: ["//visibility:public"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002340 host_supported: true,
2341 native_shared_libs: ["mysdk_sslvariants@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002342 target: {
2343 host: {
2344 enabled: false,
2345 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002346 linux_glibc_x86_64: {
2347 enabled: true,
2348 },
2349 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002350 enabled: true,
2351 },
2352 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002353}
2354`))
2355}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002356
2357func TestStubsLibrary(t *testing.T) {
2358 result := testSdkWithCc(t, `
2359 sdk {
2360 name: "mysdk",
2361 native_shared_libs: ["stubslib"],
2362 }
2363
2364 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002365 name: "internaldep",
2366 }
2367
2368 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002369 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002370 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002371 stubs: {
2372 symbol_file: "some/where/stubslib.map.txt",
2373 versions: ["1", "2", "3"],
2374 },
2375 }
2376 `)
2377
2378 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002379 checkUnversionedAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002380// This is auto-generated. DO NOT EDIT.
2381
2382cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002383 name: "stubslib",
2384 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002385 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002386 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002387 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002388 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002389 versions: [
2390 "1",
2391 "2",
2392 "3",
2393 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002394 },
2395 arch: {
2396 arm64: {
2397 srcs: ["arm64/lib/stubslib.so"],
2398 },
2399 arm: {
2400 srcs: ["arm/lib/stubslib.so"],
2401 },
2402 },
2403}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002404`))
2405}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002406
2407func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002408 result := testSdkWithCc(t, `
2409 sdk {
2410 name: "mysdk",
2411 host_supported: true,
2412 native_shared_libs: ["stubslib"],
2413 }
2414
2415 cc_library {
2416 name: "internaldep",
2417 host_supported: true,
2418 }
2419
2420 cc_library {
2421 name: "stubslib",
2422 host_supported: true,
2423 shared_libs: ["internaldep"],
2424 stubs: {
2425 symbol_file: "some/where/stubslib.map.txt",
2426 versions: ["1", "2", "3"],
2427 },
2428 }
2429 `)
2430
2431 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002432 checkUnversionedAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002433// This is auto-generated. DO NOT EDIT.
2434
2435cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002436 name: "stubslib",
2437 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002438 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002439 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002440 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002441 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002442 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002443 versions: [
2444 "1",
2445 "2",
2446 "3",
2447 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002448 },
2449 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002450 host: {
2451 enabled: false,
2452 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002453 android_arm64: {
2454 srcs: ["android/arm64/lib/stubslib.so"],
2455 },
2456 android_arm: {
2457 srcs: ["android/arm/lib/stubslib.so"],
2458 },
2459 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002460 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002461 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2462 },
2463 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002464 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002465 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2466 },
2467 },
2468}
Paul Duffin75b902a2021-02-22 12:13:13 +00002469`),
2470 checkVersionedAndroidBpContents(`
2471// This is auto-generated. DO NOT EDIT.
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002472
2473cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002474 name: "mysdk_stubslib@current",
2475 sdk_member_name: "stubslib",
Paul Duffind99d9972020-09-29 16:00:55 +01002476 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002477 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002478 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002479 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002480 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002481 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002482 versions: [
2483 "1",
2484 "2",
2485 "3",
2486 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002487 },
2488 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002489 host: {
2490 enabled: false,
2491 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002492 android_arm64: {
2493 srcs: ["android/arm64/lib/stubslib.so"],
2494 },
2495 android_arm: {
2496 srcs: ["android/arm/lib/stubslib.so"],
2497 },
2498 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002499 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002500 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2501 },
2502 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002503 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002504 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2505 },
2506 },
2507}
2508
2509sdk_snapshot {
2510 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002511 visibility: ["//visibility:public"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002512 host_supported: true,
2513 native_shared_libs: ["mysdk_stubslib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002514 target: {
2515 host: {
2516 enabled: false,
2517 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002518 linux_glibc_x86_64: {
2519 enabled: true,
2520 },
2521 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002522 enabled: true,
2523 },
2524 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002525}
2526`))
2527}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002528
2529func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002530 result := testSdkWithCc(t, `
2531 sdk {
2532 name: "mysdk",
2533 host_supported: true,
2534 native_shared_libs: ["mylib"],
2535 }
2536
2537 cc_library {
2538 name: "mylib",
2539 host_supported: true,
2540 unique_host_soname: true,
2541 }
2542 `)
2543
2544 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002545 checkUnversionedAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002546// This is auto-generated. DO NOT EDIT.
2547
2548cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002549 name: "mylib",
2550 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002551 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002552 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002553 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002554 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002555 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002556 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002557 host: {
2558 enabled: false,
2559 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002560 android_arm64: {
2561 srcs: ["android/arm64/lib/mylib.so"],
2562 },
2563 android_arm: {
2564 srcs: ["android/arm/lib/mylib.so"],
2565 },
2566 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002567 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002568 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2569 },
2570 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002571 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002572 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2573 },
2574 },
2575}
Paul Duffin75b902a2021-02-22 12:13:13 +00002576`),
2577 checkVersionedAndroidBpContents(`
2578// This is auto-generated. DO NOT EDIT.
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002579
2580cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002581 name: "mysdk_mylib@current",
2582 sdk_member_name: "mylib",
Paul Duffind99d9972020-09-29 16:00:55 +01002583 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002584 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002585 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002586 installable: false,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002587 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002588 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002589 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002590 host: {
2591 enabled: false,
2592 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002593 android_arm64: {
2594 srcs: ["android/arm64/lib/mylib.so"],
2595 },
2596 android_arm: {
2597 srcs: ["android/arm/lib/mylib.so"],
2598 },
2599 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002600 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002601 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2602 },
2603 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002604 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002605 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2606 },
2607 },
2608}
2609
2610sdk_snapshot {
2611 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002612 visibility: ["//visibility:public"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002613 host_supported: true,
2614 native_shared_libs: ["mysdk_mylib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002615 target: {
2616 host: {
2617 enabled: false,
2618 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002619 linux_glibc_x86_64: {
2620 enabled: true,
2621 },
2622 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002623 enabled: true,
2624 },
2625 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002626}
2627`),
2628 checkAllCopyRules(`
2629.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2630.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2631.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2632.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2633`),
2634 )
2635}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002636
2637func TestNoSanitizerMembers(t *testing.T) {
2638 result := testSdkWithCc(t, `
2639 sdk {
2640 name: "mysdk",
2641 native_shared_libs: ["mynativelib"],
2642 }
2643
2644 cc_library_shared {
2645 name: "mynativelib",
2646 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002647 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002648 arch: {
2649 arm64: {
2650 export_system_include_dirs: ["arm64/include"],
2651 sanitize: {
2652 hwaddress: true,
2653 },
2654 },
2655 },
2656 }
2657 `)
2658
2659 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002660 checkUnversionedAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002661// This is auto-generated. DO NOT EDIT.
2662
2663cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002664 name: "mynativelib",
2665 prefer: false,
2666 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002667 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002668 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002669 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002670 arch: {
2671 arm64: {
2672 export_system_include_dirs: ["arm64/include/arm64/include"],
2673 },
2674 arm: {
2675 srcs: ["arm/lib/mynativelib.so"],
2676 },
2677 },
2678}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002679`),
2680 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002681myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002682arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
2683.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
2684 )
2685}