blob: 997d2f66bcd33656c1b19fe97b24198633420814 [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 Duffin7a7d0672021-02-17 12:17:40 +0000497 export_include_dirs: [
498 "include/myinclude",
499 "include_gen/generated_foo/gen",
500 "include_gen/generated_foo/gen/protos",
501 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000502 arch: {
503 arm64: {
504 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000505 },
506 arm: {
507 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000508 },
509 },
510}
511`),
512 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000513myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000514.intermediates/generated_foo/gen/generated_foo/protos/foo/bar.h -> include_gen/generated_foo/gen/generated_foo/protos/foo/bar.h
Paul Duffina43f9272021-02-17 10:55:25 +0000515.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000516.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000517`),
518 )
519}
520
Martin Stjernholmb0249572020-09-15 02:32:35 +0100521// Verify that when the shared library has some common and some arch specific
522// properties that the generated snapshot is optimized properly. Substruct
523// handling is tested with the sanitize clauses (but note there's a lot of
524// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000525func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
526 result := testSdkWithCc(t, `
527 sdk {
528 name: "mysdk",
529 native_shared_libs: ["mynativelib"],
530 }
531
532 cc_library_shared {
533 name: "mynativelib",
534 srcs: [
535 "Test.cpp",
536 "aidl/foo/bar/Test.aidl",
537 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000538 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100539 sanitize: {
540 fuzzer: false,
541 integer_overflow: true,
542 diag: { undefined: false },
543 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000544 arch: {
545 arm64: {
546 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100547 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100548 integer_overflow: false,
549 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000550 },
551 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000552 stl: "none",
553 }
554 `)
555
Paul Duffin1356d8c2020-02-25 19:26:33 +0000556 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000557 checkUnversionedAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000558// This is auto-generated. DO NOT EDIT.
559
560cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000561 name: "mynativelib",
562 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100563 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000564 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000565 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100566 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000567 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100568 sanitize: {
569 fuzzer: false,
570 diag: {
571 undefined: false,
572 },
573 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000574 arch: {
575 arm64: {
576 srcs: ["arm64/lib/mynativelib.so"],
577 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100578 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100579 integer_overflow: false,
580 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000581 },
582 arm: {
583 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100584 sanitize: {
585 integer_overflow: true,
586 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000587 },
588 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000589}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000590`),
591 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000592myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000593.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000594arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800595.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000596 )
597}
598
Paul Duffin25ce04b2020-01-16 11:47:25 +0000599func TestSnapshotWithCcBinary(t *testing.T) {
600 result := testSdkWithCc(t, `
601 module_exports {
602 name: "mymodule_exports",
603 native_binaries: ["mynativebinary"],
604 }
605
606 cc_binary {
607 name: "mynativebinary",
608 srcs: [
609 "Test.cpp",
610 ],
611 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000612 }
613 `)
614
Paul Duffin1356d8c2020-02-25 19:26:33 +0000615 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000616 checkUnversionedAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000617// This is auto-generated. DO NOT EDIT.
618
619cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000620 name: "mynativebinary",
621 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100622 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000623 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000624 compile_multilib: "both",
625 arch: {
626 arm64: {
627 srcs: ["arm64/bin/mynativebinary"],
628 },
629 arm: {
630 srcs: ["arm/bin/mynativebinary"],
631 },
632 },
633}
Paul Duffin75b902a2021-02-22 12:13:13 +0000634`),
635 // Make sure that the generated sdk_snapshot uses the native_binaries property.
636 checkVersionedAndroidBpContents(`
637// This is auto-generated. DO NOT EDIT.
Paul Duffin25ce04b2020-01-16 11:47:25 +0000638
639cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000640 name: "mymodule_exports_mynativebinary@current",
641 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100642 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000643 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +0000644 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000645 compile_multilib: "both",
646 arch: {
647 arm64: {
648 srcs: ["arm64/bin/mynativebinary"],
649 },
650 arm: {
651 srcs: ["arm/bin/mynativebinary"],
652 },
653 },
654}
655
656module_exports_snapshot {
657 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100658 visibility: ["//visibility:public"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000659 native_binaries: ["mymodule_exports_mynativebinary@current"],
660}
661`),
662 checkAllCopyRules(`
663.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
664.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
665`),
666 )
667}
668
Paul Duffina04c1072020-03-02 10:16:35 +0000669func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000670 result := testSdkWithCc(t, `
671 module_exports {
672 name: "myexports",
673 device_supported: false,
674 host_supported: true,
675 native_binaries: ["mynativebinary"],
676 target: {
677 windows: {
678 enabled: true,
679 },
680 },
681 }
682
683 cc_binary {
684 name: "mynativebinary",
685 device_supported: false,
686 host_supported: true,
687 srcs: [
688 "Test.cpp",
689 ],
690 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000691 stl: "none",
692 target: {
693 windows: {
694 enabled: true,
695 },
696 },
697 }
698 `)
699
700 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000701 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000702// This is auto-generated. DO NOT EDIT.
703
704cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000705 name: "mynativebinary",
706 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100707 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000708 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000709 device_supported: false,
710 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100711 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000712 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100713 host: {
714 enabled: false,
715 },
Paul Duffina04c1072020-03-02 10:16:35 +0000716 linux_glibc: {
717 compile_multilib: "both",
718 },
719 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900720 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000721 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
722 },
723 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900724 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000725 srcs: ["linux_glibc/x86/bin/mynativebinary"],
726 },
727 windows: {
728 compile_multilib: "64",
729 },
730 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900731 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000732 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
733 },
734 },
735}
Paul Duffin75b902a2021-02-22 12:13:13 +0000736`),
737 checkVersionedAndroidBpContents(`
738// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +0000739
740cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000741 name: "myexports_mynativebinary@current",
742 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100743 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000744 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000745 device_supported: false,
746 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000747 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100748 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000749 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100750 host: {
751 enabled: false,
752 },
Paul Duffina04c1072020-03-02 10:16:35 +0000753 linux_glibc: {
754 compile_multilib: "both",
755 },
756 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900757 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000758 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
759 },
760 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900761 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000762 srcs: ["linux_glibc/x86/bin/mynativebinary"],
763 },
764 windows: {
765 compile_multilib: "64",
766 },
767 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900768 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000769 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
770 },
771 },
772}
773
774module_exports_snapshot {
775 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100776 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +0000777 device_supported: false,
778 host_supported: true,
779 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000780 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900781 windows: {
782 compile_multilib: "64",
783 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100784 host: {
785 enabled: false,
786 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900787 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100788 enabled: true,
789 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900790 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100791 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +0900792 },
793 windows_x86_64: {
794 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +0000795 },
796 },
Paul Duffina04c1072020-03-02 10:16:35 +0000797}
798`),
799 checkAllCopyRules(`
800.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
801.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
802.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
803`),
804 )
805}
806
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100807func TestSnapshotWithSingleHostOsType(t *testing.T) {
808 ctx, config := testSdkContext(`
809 cc_defaults {
810 name: "mydefaults",
811 device_supported: false,
812 host_supported: true,
813 compile_multilib: "64",
814 target: {
815 host: {
816 enabled: false,
817 },
818 linux_bionic: {
819 enabled: true,
820 },
821 },
822 }
823
824 module_exports {
825 name: "myexports",
826 defaults: ["mydefaults"],
827 native_shared_libs: ["mynativelib"],
828 native_binaries: ["mynativebinary"],
829 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
830 }
831
832 cc_library {
833 name: "mynativelib",
834 defaults: ["mydefaults"],
835 srcs: [
836 "Test.cpp",
837 ],
838 stl: "none",
839 }
840
841 cc_binary {
842 name: "mynativebinary",
843 defaults: ["mydefaults"],
844 srcs: [
845 "Test.cpp",
846 ],
847 stl: "none",
848 }
849 `, ccTestFs, []android.OsType{android.LinuxBionic})
850
851 result := runTests(t, ctx, config)
852
853 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000854 checkUnversionedAndroidBpContents(`
855// This is auto-generated. DO NOT EDIT.
856
857cc_prebuilt_binary {
858 name: "mynativebinary",
859 prefer: false,
860 visibility: ["//visibility:public"],
861 apex_available: ["//apex_available:platform"],
862 device_supported: false,
863 host_supported: true,
864 stl: "none",
865 compile_multilib: "64",
866 target: {
867 host: {
868 enabled: false,
869 },
870 linux_bionic_x86_64: {
871 enabled: true,
872 srcs: ["x86_64/bin/mynativebinary"],
873 },
874 },
875}
876
877cc_prebuilt_library_shared {
878 name: "mynativelib",
879 prefer: false,
880 visibility: ["//visibility:public"],
881 apex_available: ["//apex_available:platform"],
882 device_supported: false,
883 host_supported: true,
884 stl: "none",
885 compile_multilib: "64",
886 target: {
887 host: {
888 enabled: false,
889 },
890 linux_bionic_x86_64: {
891 enabled: true,
892 srcs: ["x86_64/lib/mynativelib.so"],
893 },
894 },
895}
896`),
897 checkVersionedAndroidBpContents(`
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100898// This is auto-generated. DO NOT EDIT.
899
900cc_prebuilt_binary {
901 name: "myexports_mynativebinary@current",
902 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100903 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000904 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100905 device_supported: false,
906 host_supported: true,
907 installable: false,
908 stl: "none",
909 compile_multilib: "64",
910 target: {
911 host: {
912 enabled: false,
913 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100914 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900915 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100916 srcs: ["x86_64/bin/mynativebinary"],
917 },
918 },
919}
920
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100921cc_prebuilt_library_shared {
922 name: "myexports_mynativelib@current",
923 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +0100924 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000925 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100926 device_supported: false,
927 host_supported: true,
928 installable: false,
929 stl: "none",
930 compile_multilib: "64",
931 target: {
932 host: {
933 enabled: false,
934 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100935 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900936 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100937 srcs: ["x86_64/lib/mynativelib.so"],
938 },
939 },
940}
941
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100942module_exports_snapshot {
943 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100944 visibility: ["//visibility:public"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100945 device_supported: false,
946 host_supported: true,
947 native_binaries: ["myexports_mynativebinary@current"],
948 native_shared_libs: ["myexports_mynativelib@current"],
949 compile_multilib: "64",
950 target: {
951 host: {
952 enabled: false,
953 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900954 linux_bionic_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100955 enabled: true,
956 },
957 },
958}
959`),
960 checkAllCopyRules(`
961.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
962.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
963`),
964 )
965}
966
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100967// Test that we support the necessary flags for the linker binary, which is
968// special in several ways.
969func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100970 result := testSdkWithCc(t, `
971 module_exports {
972 name: "mymodule_exports",
973 host_supported: true,
974 device_supported: false,
975 native_binaries: ["linker"],
976 }
977
978 cc_binary {
979 name: "linker",
980 host_supported: true,
981 static_executable: true,
982 nocrt: true,
983 stl: "none",
984 srcs: [
985 "Test.cpp",
986 ],
987 compile_multilib: "both",
988 }
989 `)
990
991 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000992 checkUnversionedAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100993// This is auto-generated. DO NOT EDIT.
994
995cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000996 name: "linker",
997 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100998 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000999 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001000 device_supported: false,
1001 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001002 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001003 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001004 static_executable: true,
1005 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001006 target: {
1007 host: {
1008 enabled: false,
1009 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001010 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001011 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001012 srcs: ["x86_64/bin/linker"],
1013 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001014 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001015 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001016 srcs: ["x86/bin/linker"],
1017 },
1018 },
1019}
Paul Duffin75b902a2021-02-22 12:13:13 +00001020`),
1021 checkVersionedAndroidBpContents(`
1022// This is auto-generated. DO NOT EDIT.
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001023
1024cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001025 name: "mymodule_exports_linker@current",
1026 sdk_member_name: "linker",
Paul Duffind99d9972020-09-29 16:00:55 +01001027 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001028 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001029 device_supported: false,
1030 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001031 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001032 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001033 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001034 static_executable: true,
1035 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001036 target: {
1037 host: {
1038 enabled: false,
1039 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001040 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001041 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001042 srcs: ["x86_64/bin/linker"],
1043 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001044 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001045 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001046 srcs: ["x86/bin/linker"],
1047 },
1048 },
1049}
1050
1051module_exports_snapshot {
1052 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001053 visibility: ["//visibility:public"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001054 device_supported: false,
1055 host_supported: true,
1056 native_binaries: ["mymodule_exports_linker@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001057 target: {
1058 host: {
1059 enabled: false,
1060 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001061 linux_glibc_x86_64: {
1062 enabled: true,
1063 },
1064 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001065 enabled: true,
1066 },
1067 },
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001068}
1069`),
1070 checkAllCopyRules(`
1071.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
1072.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
1073`),
1074 )
1075}
1076
Paul Duffin9ab556f2019-12-11 18:42:17 +00001077func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001078 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001079 sdk {
1080 name: "mysdk",
1081 native_shared_libs: ["mynativelib"],
1082 }
1083
1084 cc_library_shared {
1085 name: "mynativelib",
1086 srcs: [
1087 "Test.cpp",
1088 "aidl/foo/bar/Test.aidl",
1089 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001090 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +00001091 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001092 aidl: {
1093 export_aidl_headers: true,
1094 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001095 stl: "none",
1096 }
1097 `)
1098
Paul Duffin1356d8c2020-02-25 19:26:33 +00001099 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001100 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001101// This is auto-generated. DO NOT EDIT.
1102
1103cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +00001104 name: "mynativelib",
1105 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001106 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001107 apex_available: [
1108 "apex1",
1109 "apex2",
1110 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001111 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001112 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001113 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001114 arch: {
1115 arm64: {
1116 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001117 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001118 },
1119 arm: {
1120 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001121 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001122 },
1123 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001124}
Paul Duffina80fdec2019-12-03 15:25:00 +00001125`),
1126 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001127myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001128.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001129.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
1130.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
1131.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 -08001132.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001133.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
1134.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
1135.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 +00001136`),
1137 )
1138}
1139
Paul Duffin13f02712020-03-06 12:30:43 +00001140func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
1141 result := testSdkWithCc(t, `
1142 sdk {
1143 name: "mysdk",
1144 native_shared_libs: [
1145 "mynativelib",
1146 "myothernativelib",
1147 "mysystemnativelib",
1148 ],
1149 }
1150
1151 cc_library {
1152 name: "mysystemnativelib",
1153 srcs: [
1154 "Test.cpp",
1155 ],
Paul Duffin13f02712020-03-06 12:30:43 +00001156 stl: "none",
1157 }
1158
1159 cc_library_shared {
1160 name: "myothernativelib",
1161 srcs: [
1162 "Test.cpp",
1163 ],
1164 system_shared_libs: [
1165 // A reference to a library that is not an sdk member. Uses libm as that
1166 // is in the default set of modules available to this test and so is available
1167 // both here and also when the generated Android.bp file is tested in
1168 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
1169 // handles references to modules that are not sdk members.
1170 "libm",
1171 ],
1172 stl: "none",
1173 }
1174
1175 cc_library {
1176 name: "mynativelib",
1177 srcs: [
1178 "Test.cpp",
1179 ],
1180 shared_libs: [
1181 // A reference to another sdk member.
1182 "myothernativelib",
1183 ],
1184 target: {
1185 android: {
1186 shared: {
1187 shared_libs: [
1188 // A reference to a library that is not an sdk member. The libc library
1189 // is used here to check that the shared_libs property is handled correctly
1190 // in a similar way to how libm is used to check system_shared_libs above.
1191 "libc",
1192 ],
1193 },
1194 },
1195 },
Paul Duffin13f02712020-03-06 12:30:43 +00001196 stl: "none",
1197 }
1198 `)
1199
1200 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001201 checkUnversionedAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +00001202// This is auto-generated. DO NOT EDIT.
1203
1204cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001205 name: "mynativelib",
1206 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001207 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001208 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001209 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001210 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001211 shared_libs: [
1212 "myothernativelib",
1213 "libc",
1214 ],
1215 arch: {
1216 arm64: {
1217 srcs: ["arm64/lib/mynativelib.so"],
1218 },
1219 arm: {
1220 srcs: ["arm/lib/mynativelib.so"],
1221 },
1222 },
Paul Duffin13f02712020-03-06 12:30:43 +00001223}
1224
1225cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001226 name: "myothernativelib",
1227 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001228 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001229 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001230 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001231 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001232 system_shared_libs: ["libm"],
1233 arch: {
1234 arm64: {
1235 srcs: ["arm64/lib/myothernativelib.so"],
1236 },
1237 arm: {
1238 srcs: ["arm/lib/myothernativelib.so"],
1239 },
1240 },
Paul Duffin13f02712020-03-06 12:30:43 +00001241}
1242
1243cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001244 name: "mysystemnativelib",
1245 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001246 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001247 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001248 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001249 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001250 arch: {
1251 arm64: {
1252 srcs: ["arm64/lib/mysystemnativelib.so"],
1253 },
1254 arm: {
1255 srcs: ["arm/lib/mysystemnativelib.so"],
1256 },
1257 },
Paul Duffin13f02712020-03-06 12:30:43 +00001258}
Paul Duffin13f02712020-03-06 12:30:43 +00001259`),
1260 checkAllCopyRules(`
1261.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1262.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1263.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1264.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1265.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1266.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1267`),
1268 )
1269}
1270
Paul Duffin9ab556f2019-12-11 18:42:17 +00001271func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001272 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001273 sdk {
1274 name: "mysdk",
1275 device_supported: false,
1276 host_supported: true,
1277 native_shared_libs: ["mynativelib"],
1278 }
1279
1280 cc_library_shared {
1281 name: "mynativelib",
1282 device_supported: false,
1283 host_supported: true,
1284 srcs: [
1285 "Test.cpp",
1286 "aidl/foo/bar/Test.aidl",
1287 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001288 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001289 aidl: {
1290 export_aidl_headers: true,
1291 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001292 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001293 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001294 }
1295 `)
1296
Paul Duffin1356d8c2020-02-25 19:26:33 +00001297 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001298 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001299// This is auto-generated. DO NOT EDIT.
1300
1301cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001302 name: "mynativelib",
1303 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001304 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001305 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001306 device_supported: false,
1307 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001308 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001309 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001310 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001311 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001312 target: {
1313 host: {
1314 enabled: false,
1315 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001316 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001317 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001318 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001319 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001320 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001321 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001322 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001323 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001324 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001325 },
1326 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001327}
Paul Duffin75b902a2021-02-22 12:13:13 +00001328`),
1329 checkVersionedAndroidBpContents(`
1330// This is auto-generated. DO NOT EDIT.
Paul Duffina80fdec2019-12-03 15:25:00 +00001331
1332cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001333 name: "mysdk_mynativelib@current",
1334 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001335 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001336 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001337 device_supported: false,
1338 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001339 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001340 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001341 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001342 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001343 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001344 target: {
1345 host: {
1346 enabled: false,
1347 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001348 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001349 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001350 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001351 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001352 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001353 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001354 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001355 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001356 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001357 },
1358 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001359}
1360
1361sdk_snapshot {
1362 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001363 visibility: ["//visibility:public"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001364 device_supported: false,
1365 host_supported: true,
1366 native_shared_libs: ["mysdk_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001367 target: {
1368 host: {
1369 enabled: false,
1370 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001371 linux_glibc_x86_64: {
1372 enabled: true,
1373 },
1374 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001375 enabled: true,
1376 },
1377 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001378}
1379`),
1380 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001381myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001382.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001383.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
1384.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
1385.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 +00001386.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001387.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
1388.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
1389.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 +00001390`),
1391 )
1392}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001393
Paul Duffina04c1072020-03-02 10:16:35 +00001394func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001395 result := testSdkWithCc(t, `
1396 sdk {
1397 name: "mysdk",
1398 device_supported: false,
1399 host_supported: true,
1400 native_shared_libs: ["mynativelib"],
1401 target: {
1402 windows: {
1403 enabled: true,
1404 },
1405 },
1406 }
1407
1408 cc_library_shared {
1409 name: "mynativelib",
1410 device_supported: false,
1411 host_supported: true,
1412 srcs: [
1413 "Test.cpp",
1414 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001415 stl: "none",
1416 target: {
1417 windows: {
1418 enabled: true,
1419 },
1420 },
1421 }
1422 `)
1423
1424 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001425 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001426// This is auto-generated. DO NOT EDIT.
1427
1428cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001429 name: "mynativelib",
1430 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001431 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001432 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001433 device_supported: false,
1434 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001435 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001436 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001437 host: {
1438 enabled: false,
1439 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001440 linux_glibc: {
1441 compile_multilib: "both",
1442 },
Paul Duffina04c1072020-03-02 10:16:35 +00001443 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001444 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001445 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1446 },
1447 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001448 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001449 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1450 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001451 windows: {
1452 compile_multilib: "64",
1453 },
Paul Duffina04c1072020-03-02 10:16:35 +00001454 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001455 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001456 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1457 },
1458 },
Paul Duffina04c1072020-03-02 10:16:35 +00001459}
Paul Duffin75b902a2021-02-22 12:13:13 +00001460`),
1461 checkVersionedAndroidBpContents(`
1462// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00001463
1464cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001465 name: "mysdk_mynativelib@current",
1466 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001467 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001468 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001469 device_supported: false,
1470 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001471 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001472 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001473 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001474 host: {
1475 enabled: false,
1476 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001477 linux_glibc: {
1478 compile_multilib: "both",
1479 },
Paul Duffina04c1072020-03-02 10:16:35 +00001480 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001481 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001482 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1483 },
1484 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001485 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001486 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1487 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001488 windows: {
1489 compile_multilib: "64",
1490 },
Paul Duffina04c1072020-03-02 10:16:35 +00001491 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001492 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001493 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1494 },
1495 },
Paul Duffina04c1072020-03-02 10:16:35 +00001496}
1497
1498sdk_snapshot {
1499 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001500 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00001501 device_supported: false,
1502 host_supported: true,
1503 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001504 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001505 windows: {
1506 compile_multilib: "64",
1507 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001508 host: {
1509 enabled: false,
1510 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001511 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001512 enabled: true,
1513 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001514 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001515 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +09001516 },
1517 windows_x86_64: {
1518 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +00001519 },
1520 },
Paul Duffina04c1072020-03-02 10:16:35 +00001521}
1522`),
1523 checkAllCopyRules(`
1524.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1525.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1526.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1527`),
1528 )
1529}
1530
Paul Duffin9ab556f2019-12-11 18:42:17 +00001531func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1532 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001533 module_exports {
1534 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001535 native_static_libs: ["mynativelib"],
1536 }
1537
1538 cc_library_static {
1539 name: "mynativelib",
1540 srcs: [
1541 "Test.cpp",
1542 "aidl/foo/bar/Test.aidl",
1543 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001544 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001545 aidl: {
1546 export_aidl_headers: true,
1547 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001548 stl: "none",
1549 }
1550 `)
1551
Paul Duffin1356d8c2020-02-25 19:26:33 +00001552 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001553 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001554// This is auto-generated. DO NOT EDIT.
1555
1556cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001557 name: "mynativelib",
1558 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001559 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001560 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001561 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001562 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001563 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001564 arch: {
1565 arm64: {
1566 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001567 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001568 },
1569 arm: {
1570 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001571 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001572 },
1573 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001574}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001575`),
1576 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001577myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001578.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001579.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
1580.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
1581.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 -08001582.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001583.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
1584.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
1585.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 +00001586`),
1587 )
1588}
1589
1590func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001591 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001592 module_exports {
1593 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001594 device_supported: false,
1595 host_supported: true,
1596 native_static_libs: ["mynativelib"],
1597 }
1598
1599 cc_library_static {
1600 name: "mynativelib",
1601 device_supported: false,
1602 host_supported: true,
1603 srcs: [
1604 "Test.cpp",
1605 "aidl/foo/bar/Test.aidl",
1606 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001607 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001608 aidl: {
1609 export_aidl_headers: true,
1610 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001611 stl: "none",
1612 }
1613 `)
1614
Paul Duffin1356d8c2020-02-25 19:26:33 +00001615 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001616 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001617// This is auto-generated. DO NOT EDIT.
1618
1619cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001620 name: "mynativelib",
1621 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001622 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001623 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001624 device_supported: false,
1625 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001626 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001627 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001628 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001629 target: {
1630 host: {
1631 enabled: false,
1632 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001633 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001634 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001635 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001636 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001637 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001638 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001639 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001640 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001641 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001642 },
1643 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001644}
Paul Duffin75b902a2021-02-22 12:13:13 +00001645`),
1646 checkVersionedAndroidBpContents(`
1647// This is auto-generated. DO NOT EDIT.
Paul Duffin9ab556f2019-12-11 18:42:17 +00001648
1649cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001650 name: "myexports_mynativelib@current",
1651 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001652 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001653 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001654 device_supported: false,
1655 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001656 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001657 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001658 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001659 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001660 target: {
1661 host: {
1662 enabled: false,
1663 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001664 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001665 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001666 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001667 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001668 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001669 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001670 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001671 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001672 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001673 },
1674 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001675}
1676
Paul Duffine6029182019-12-16 17:43:48 +00001677module_exports_snapshot {
1678 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001679 visibility: ["//visibility:public"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001680 device_supported: false,
1681 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001682 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001683 target: {
1684 host: {
1685 enabled: false,
1686 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001687 linux_glibc_x86_64: {
1688 enabled: true,
1689 },
1690 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001691 enabled: true,
1692 },
1693 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001694}
1695`),
1696 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001697myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001698.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001699.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
1700.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
1701.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 +00001702.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001703.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
1704.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
1705.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 +00001706`),
1707 )
1708}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001709
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001710func TestSnapshotWithCcLibrary(t *testing.T) {
1711 result := testSdkWithCc(t, `
1712 module_exports {
1713 name: "myexports",
1714 native_libs: ["mynativelib"],
1715 }
1716
1717 cc_library {
1718 name: "mynativelib",
1719 srcs: [
1720 "Test.cpp",
1721 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001722 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001723 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001724 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001725 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001726 }
1727 `)
1728
1729 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001730 checkUnversionedAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001731// This is auto-generated. DO NOT EDIT.
1732
1733cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001734 name: "mynativelib",
1735 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001736 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001737 apex_available: ["//apex_available:platform"],
Paul Duffind6abaa72020-09-07 16:39:22 +01001738 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001739 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001740 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001741 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001742 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001743 arch: {
1744 arm64: {
1745 static: {
1746 srcs: ["arm64/lib/mynativelib.a"],
1747 },
1748 shared: {
1749 srcs: ["arm64/lib/mynativelib.so"],
1750 },
1751 },
1752 arm: {
1753 static: {
1754 srcs: ["arm/lib/mynativelib.a"],
1755 },
1756 shared: {
1757 srcs: ["arm/lib/mynativelib.so"],
1758 },
1759 },
1760 },
1761}
Paul Duffin75b902a2021-02-22 12:13:13 +00001762`),
1763 // Make sure that the generated sdk_snapshot uses the native_libs property.
1764 checkVersionedAndroidBpContents(`
1765// This is auto-generated. DO NOT EDIT.
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001766
1767cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001768 name: "myexports_mynativelib@current",
1769 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001770 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001771 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +00001772 installable: false,
Paul Duffind6abaa72020-09-07 16:39:22 +01001773 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001774 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001775 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001776 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001777 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001778 arch: {
1779 arm64: {
1780 static: {
1781 srcs: ["arm64/lib/mynativelib.a"],
1782 },
1783 shared: {
1784 srcs: ["arm64/lib/mynativelib.so"],
1785 },
1786 },
1787 arm: {
1788 static: {
1789 srcs: ["arm/lib/mynativelib.a"],
1790 },
1791 shared: {
1792 srcs: ["arm/lib/mynativelib.so"],
1793 },
1794 },
1795 },
1796}
1797
1798module_exports_snapshot {
1799 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001800 visibility: ["//visibility:public"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001801 native_libs: ["myexports_mynativelib@current"],
1802}
1803`),
1804 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001805myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001806.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1807.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1808.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
1809.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
1810 )
1811}
1812
Paul Duffin13ad94f2020-02-19 16:19:27 +00001813func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001814 result := testSdkWithCc(t, `
1815 module_exports {
1816 name: "myexports",
1817 device_supported: false,
1818 host_supported: true,
1819 target: {
1820 host: {
1821 compile_multilib: "64",
1822 },
1823 },
1824 native_static_libs: ["mynativelib"],
1825 }
1826
1827 cc_library_static {
1828 name: "mynativelib",
1829 device_supported: false,
1830 host_supported: true,
1831 srcs: [
1832 "Test.cpp",
1833 "aidl/foo/bar/Test.aidl",
1834 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001835 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001836 aidl: {
1837 export_aidl_headers: true,
1838 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001839 stl: "none",
1840 }
1841 `)
1842
Paul Duffin1356d8c2020-02-25 19:26:33 +00001843 result.CheckSnapshot("myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001844 checkUnversionedAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001845// This is auto-generated. DO NOT EDIT.
1846
1847cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001848 name: "mynativelib",
1849 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001850 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001851 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001852 device_supported: false,
1853 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001854 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001855 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001856 export_include_dirs: [
1857 "include/myinclude",
1858 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1859 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001860 target: {
1861 host: {
1862 enabled: false,
1863 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001864 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001865 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001866 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001867 },
1868 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001869}
Paul Duffin75b902a2021-02-22 12:13:13 +00001870`),
1871 checkVersionedAndroidBpContents(`
1872// This is auto-generated. DO NOT EDIT.
Paul Duffin13ad94f2020-02-19 16:19:27 +00001873
1874cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001875 name: "myexports_mynativelib@current",
1876 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001877 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001878 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001879 device_supported: false,
1880 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001881 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001882 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001883 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001884 export_include_dirs: [
1885 "include/myinclude",
1886 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1887 ],
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 Duffin13ad94f2020-02-19 16:19:27 +00001895 },
1896 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001897}
1898
1899module_exports_snapshot {
1900 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001901 visibility: ["//visibility:public"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001902 device_supported: false,
1903 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +00001904 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01001905 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001906 target: {
1907 host: {
1908 enabled: false,
1909 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001910 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001911 enabled: true,
1912 },
1913 },
Paul Duffin75b902a2021-02-22 12:13:13 +00001914}
1915`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001916 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001917myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00001918.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h
1919.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h
1920.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin13ad94f2020-02-19 16:19:27 +00001921.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00001922`),
1923 )
1924}
Paul Duffin91756d22020-02-21 16:29:57 +00001925
1926func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1927 result := testSdkWithCc(t, `
1928 sdk {
1929 name: "mysdk",
1930 native_header_libs: ["mynativeheaders"],
1931 }
1932
1933 cc_library_headers {
1934 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001935 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001936 stl: "none",
1937 }
1938 `)
1939
Paul Duffin1356d8c2020-02-25 19:26:33 +00001940 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001941 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001942// This is auto-generated. DO NOT EDIT.
1943
1944cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001945 name: "mynativeheaders",
1946 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001947 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001948 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001949 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001950 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001951 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001952}
Paul Duffin91756d22020-02-21 16:29:57 +00001953`),
1954 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001955myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001956`),
1957 )
1958}
1959
1960func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00001961 result := testSdkWithCc(t, `
1962 sdk {
1963 name: "mysdk",
1964 device_supported: false,
1965 host_supported: true,
1966 native_header_libs: ["mynativeheaders"],
1967 }
1968
1969 cc_library_headers {
1970 name: "mynativeheaders",
1971 device_supported: false,
1972 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00001973 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001974 stl: "none",
1975 }
1976 `)
1977
Paul Duffin1356d8c2020-02-25 19:26:33 +00001978 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001979 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001980// This is auto-generated. DO NOT EDIT.
1981
1982cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00001983 name: "mynativeheaders",
1984 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001985 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001986 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001987 device_supported: false,
1988 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001989 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001990 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001991 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001992 target: {
1993 host: {
1994 enabled: false,
1995 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001996 linux_glibc_x86_64: {
1997 enabled: true,
1998 },
1999 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002000 enabled: true,
2001 },
2002 },
Paul Duffin91756d22020-02-21 16:29:57 +00002003}
Paul Duffin75b902a2021-02-22 12:13:13 +00002004`),
2005 checkVersionedAndroidBpContents(`
2006// This is auto-generated. DO NOT EDIT.
Paul Duffin91756d22020-02-21 16:29:57 +00002007
2008cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002009 name: "mysdk_mynativeheaders@current",
2010 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002011 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002012 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002013 device_supported: false,
2014 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002015 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002016 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002017 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002018 target: {
2019 host: {
2020 enabled: false,
2021 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002022 linux_glibc_x86_64: {
2023 enabled: true,
2024 },
2025 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002026 enabled: true,
2027 },
2028 },
Paul Duffin91756d22020-02-21 16:29:57 +00002029}
2030
2031sdk_snapshot {
2032 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002033 visibility: ["//visibility:public"],
Paul Duffin91756d22020-02-21 16:29:57 +00002034 device_supported: false,
2035 host_supported: true,
2036 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002037 target: {
2038 host: {
2039 enabled: false,
2040 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002041 linux_glibc_x86_64: {
2042 enabled: true,
2043 },
2044 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002045 enabled: true,
2046 },
2047 },
Paul Duffin91756d22020-02-21 16:29:57 +00002048}
2049`),
2050 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002051myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002052`),
2053 )
2054}
Paul Duffina04c1072020-03-02 10:16:35 +00002055
2056func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00002057 result := testSdkWithCc(t, `
2058 sdk {
2059 name: "mysdk",
2060 host_supported: true,
2061 native_header_libs: ["mynativeheaders"],
2062 }
2063
2064 cc_library_headers {
2065 name: "mynativeheaders",
2066 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00002067 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00002068 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002069 target: {
2070 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002071 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002072 },
2073 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002074 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002075 },
2076 },
2077 }
2078 `)
2079
2080 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002081 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002082// This is auto-generated. DO NOT EDIT.
2083
2084cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002085 name: "mynativeheaders",
2086 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002087 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002088 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002089 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002090 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002091 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002092 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002093 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002094 host: {
2095 enabled: false,
2096 },
Paul Duffina04c1072020-03-02 10:16:35 +00002097 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002098 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002099 },
2100 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002101 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002102 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002103 linux_glibc_x86_64: {
2104 enabled: true,
2105 },
2106 linux_glibc_x86: {
2107 enabled: true,
2108 },
Paul Duffina04c1072020-03-02 10:16:35 +00002109 },
Paul Duffina04c1072020-03-02 10:16:35 +00002110}
Paul Duffin75b902a2021-02-22 12:13:13 +00002111`),
2112 // Verifi
2113 checkVersionedAndroidBpContents(`
2114// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00002115
2116cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002117 name: "mysdk_mynativeheaders@current",
2118 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002119 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002120 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002121 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002122 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002123 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002124 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002125 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002126 host: {
2127 enabled: false,
2128 },
Paul Duffina04c1072020-03-02 10:16:35 +00002129 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002130 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002131 },
2132 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002133 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002134 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002135 linux_glibc_x86_64: {
2136 enabled: true,
2137 },
2138 linux_glibc_x86: {
2139 enabled: true,
2140 },
Paul Duffina04c1072020-03-02 10:16:35 +00002141 },
Paul Duffina04c1072020-03-02 10:16:35 +00002142}
2143
2144sdk_snapshot {
2145 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002146 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00002147 host_supported: true,
2148 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002149 target: {
2150 host: {
2151 enabled: false,
2152 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002153 linux_glibc_x86_64: {
2154 enabled: true,
2155 },
2156 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002157 enabled: true,
2158 },
2159 },
Paul Duffina04c1072020-03-02 10:16:35 +00002160}
2161`),
2162 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002163myinclude/Test.h -> common_os/include/myinclude/Test.h
2164myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2165myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002166`),
2167 )
2168}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002169
2170func TestSystemSharedLibPropagation(t *testing.T) {
2171 result := testSdkWithCc(t, `
2172 sdk {
2173 name: "mysdk",
2174 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
2175 }
2176
2177 cc_library {
2178 name: "sslnil",
2179 host_supported: true,
2180 }
2181
2182 cc_library {
2183 name: "sslempty",
2184 system_shared_libs: [],
2185 }
2186
2187 cc_library {
2188 name: "sslnonempty",
2189 system_shared_libs: ["sslnil"],
2190 }
2191 `)
2192
2193 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002194 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002195// This is auto-generated. DO NOT EDIT.
2196
2197cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002198 name: "sslnil",
2199 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002200 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002201 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002202 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002203 arch: {
2204 arm64: {
2205 srcs: ["arm64/lib/sslnil.so"],
2206 },
2207 arm: {
2208 srcs: ["arm/lib/sslnil.so"],
2209 },
2210 },
2211}
2212
2213cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002214 name: "sslempty",
2215 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002216 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002217 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002218 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002219 system_shared_libs: [],
2220 arch: {
2221 arm64: {
2222 srcs: ["arm64/lib/sslempty.so"],
2223 },
2224 arm: {
2225 srcs: ["arm/lib/sslempty.so"],
2226 },
2227 },
2228}
2229
2230cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002231 name: "sslnonempty",
2232 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002233 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002234 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002235 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002236 system_shared_libs: ["sslnil"],
2237 arch: {
2238 arm64: {
2239 srcs: ["arm64/lib/sslnonempty.so"],
2240 },
2241 arm: {
2242 srcs: ["arm/lib/sslnonempty.so"],
2243 },
2244 },
2245}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002246`))
2247
2248 result = testSdkWithCc(t, `
2249 sdk {
2250 name: "mysdk",
2251 host_supported: true,
2252 native_shared_libs: ["sslvariants"],
2253 }
2254
2255 cc_library {
2256 name: "sslvariants",
2257 host_supported: true,
2258 target: {
2259 android: {
2260 system_shared_libs: [],
2261 },
2262 },
2263 }
2264 `)
2265
2266 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002267 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002268// This is auto-generated. DO NOT EDIT.
2269
2270cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002271 name: "sslvariants",
2272 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002273 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002274 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002275 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002276 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002277 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002278 host: {
2279 enabled: false,
2280 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002281 android: {
2282 system_shared_libs: [],
2283 },
2284 android_arm64: {
2285 srcs: ["android/arm64/lib/sslvariants.so"],
2286 },
2287 android_arm: {
2288 srcs: ["android/arm/lib/sslvariants.so"],
2289 },
2290 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002291 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002292 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2293 },
2294 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002295 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002296 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2297 },
2298 },
2299}
Paul Duffin75b902a2021-02-22 12:13:13 +00002300`),
2301 checkVersionedAndroidBpContents(`
2302// This is auto-generated. DO NOT EDIT.
Martin Stjernholm10566a02020-03-24 01:19:52 +00002303
2304cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002305 name: "mysdk_sslvariants@current",
2306 sdk_member_name: "sslvariants",
Paul Duffind99d9972020-09-29 16:00:55 +01002307 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002308 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002309 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002310 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002311 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002312 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002313 host: {
2314 enabled: false,
2315 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002316 android: {
2317 system_shared_libs: [],
2318 },
2319 android_arm64: {
2320 srcs: ["android/arm64/lib/sslvariants.so"],
2321 },
2322 android_arm: {
2323 srcs: ["android/arm/lib/sslvariants.so"],
2324 },
2325 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002326 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002327 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2328 },
2329 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002330 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002331 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2332 },
2333 },
2334}
2335
2336sdk_snapshot {
2337 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002338 visibility: ["//visibility:public"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002339 host_supported: true,
2340 native_shared_libs: ["mysdk_sslvariants@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002341 target: {
2342 host: {
2343 enabled: false,
2344 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002345 linux_glibc_x86_64: {
2346 enabled: true,
2347 },
2348 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002349 enabled: true,
2350 },
2351 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002352}
2353`))
2354}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002355
2356func TestStubsLibrary(t *testing.T) {
2357 result := testSdkWithCc(t, `
2358 sdk {
2359 name: "mysdk",
2360 native_shared_libs: ["stubslib"],
2361 }
2362
2363 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002364 name: "internaldep",
2365 }
2366
2367 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002368 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002369 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002370 stubs: {
2371 symbol_file: "some/where/stubslib.map.txt",
2372 versions: ["1", "2", "3"],
2373 },
2374 }
2375 `)
2376
2377 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002378 checkUnversionedAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002379// This is auto-generated. DO NOT EDIT.
2380
2381cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002382 name: "stubslib",
2383 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002384 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002385 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002386 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002387 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002388 versions: [
2389 "1",
2390 "2",
2391 "3",
2392 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002393 },
2394 arch: {
2395 arm64: {
2396 srcs: ["arm64/lib/stubslib.so"],
2397 },
2398 arm: {
2399 srcs: ["arm/lib/stubslib.so"],
2400 },
2401 },
2402}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002403`))
2404}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002405
2406func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002407 result := testSdkWithCc(t, `
2408 sdk {
2409 name: "mysdk",
2410 host_supported: true,
2411 native_shared_libs: ["stubslib"],
2412 }
2413
2414 cc_library {
2415 name: "internaldep",
2416 host_supported: true,
2417 }
2418
2419 cc_library {
2420 name: "stubslib",
2421 host_supported: true,
2422 shared_libs: ["internaldep"],
2423 stubs: {
2424 symbol_file: "some/where/stubslib.map.txt",
2425 versions: ["1", "2", "3"],
2426 },
2427 }
2428 `)
2429
2430 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002431 checkUnversionedAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002432// This is auto-generated. DO NOT EDIT.
2433
2434cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002435 name: "stubslib",
2436 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002437 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002438 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002439 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002440 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002441 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002442 versions: [
2443 "1",
2444 "2",
2445 "3",
2446 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002447 },
2448 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002449 host: {
2450 enabled: false,
2451 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002452 android_arm64: {
2453 srcs: ["android/arm64/lib/stubslib.so"],
2454 },
2455 android_arm: {
2456 srcs: ["android/arm/lib/stubslib.so"],
2457 },
2458 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002459 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002460 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2461 },
2462 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002463 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002464 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2465 },
2466 },
2467}
Paul Duffin75b902a2021-02-22 12:13:13 +00002468`),
2469 checkVersionedAndroidBpContents(`
2470// This is auto-generated. DO NOT EDIT.
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002471
2472cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002473 name: "mysdk_stubslib@current",
2474 sdk_member_name: "stubslib",
Paul Duffind99d9972020-09-29 16:00:55 +01002475 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002476 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002477 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002478 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002479 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002480 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002481 versions: [
2482 "1",
2483 "2",
2484 "3",
2485 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002486 },
2487 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002488 host: {
2489 enabled: false,
2490 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002491 android_arm64: {
2492 srcs: ["android/arm64/lib/stubslib.so"],
2493 },
2494 android_arm: {
2495 srcs: ["android/arm/lib/stubslib.so"],
2496 },
2497 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002498 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002499 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2500 },
2501 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002502 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002503 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2504 },
2505 },
2506}
2507
2508sdk_snapshot {
2509 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002510 visibility: ["//visibility:public"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002511 host_supported: true,
2512 native_shared_libs: ["mysdk_stubslib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002513 target: {
2514 host: {
2515 enabled: false,
2516 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002517 linux_glibc_x86_64: {
2518 enabled: true,
2519 },
2520 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002521 enabled: true,
2522 },
2523 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002524}
2525`))
2526}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002527
2528func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002529 result := testSdkWithCc(t, `
2530 sdk {
2531 name: "mysdk",
2532 host_supported: true,
2533 native_shared_libs: ["mylib"],
2534 }
2535
2536 cc_library {
2537 name: "mylib",
2538 host_supported: true,
2539 unique_host_soname: true,
2540 }
2541 `)
2542
2543 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002544 checkUnversionedAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002545// This is auto-generated. DO NOT EDIT.
2546
2547cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002548 name: "mylib",
2549 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002550 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002551 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002552 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002553 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002554 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002555 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002556 host: {
2557 enabled: false,
2558 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002559 android_arm64: {
2560 srcs: ["android/arm64/lib/mylib.so"],
2561 },
2562 android_arm: {
2563 srcs: ["android/arm/lib/mylib.so"],
2564 },
2565 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002566 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002567 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2568 },
2569 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002570 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002571 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2572 },
2573 },
2574}
Paul Duffin75b902a2021-02-22 12:13:13 +00002575`),
2576 checkVersionedAndroidBpContents(`
2577// This is auto-generated. DO NOT EDIT.
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002578
2579cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002580 name: "mysdk_mylib@current",
2581 sdk_member_name: "mylib",
Paul Duffind99d9972020-09-29 16:00:55 +01002582 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002583 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002584 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002585 installable: false,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002586 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002587 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002588 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002589 host: {
2590 enabled: false,
2591 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002592 android_arm64: {
2593 srcs: ["android/arm64/lib/mylib.so"],
2594 },
2595 android_arm: {
2596 srcs: ["android/arm/lib/mylib.so"],
2597 },
2598 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002599 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002600 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2601 },
2602 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002603 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002604 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2605 },
2606 },
2607}
2608
2609sdk_snapshot {
2610 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002611 visibility: ["//visibility:public"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002612 host_supported: true,
2613 native_shared_libs: ["mysdk_mylib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002614 target: {
2615 host: {
2616 enabled: false,
2617 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002618 linux_glibc_x86_64: {
2619 enabled: true,
2620 },
2621 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002622 enabled: true,
2623 },
2624 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002625}
2626`),
2627 checkAllCopyRules(`
2628.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2629.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2630.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2631.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2632`),
2633 )
2634}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002635
2636func TestNoSanitizerMembers(t *testing.T) {
2637 result := testSdkWithCc(t, `
2638 sdk {
2639 name: "mysdk",
2640 native_shared_libs: ["mynativelib"],
2641 }
2642
2643 cc_library_shared {
2644 name: "mynativelib",
2645 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002646 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002647 arch: {
2648 arm64: {
2649 export_system_include_dirs: ["arm64/include"],
2650 sanitize: {
2651 hwaddress: true,
2652 },
2653 },
2654 },
2655 }
2656 `)
2657
2658 result.CheckSnapshot("mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002659 checkUnversionedAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002660// This is auto-generated. DO NOT EDIT.
2661
2662cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002663 name: "mynativelib",
2664 prefer: false,
2665 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002666 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002667 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002668 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002669 arch: {
2670 arm64: {
2671 export_system_include_dirs: ["arm64/include/arm64/include"],
2672 },
2673 arm: {
2674 srcs: ["arm/lib/mynativelib.so"],
2675 },
2676 },
2677}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002678`),
2679 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002680myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002681arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
2682.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
2683 )
2684}