blob: 17afdb8047f9785f3ea490d6bd84b053002b3d14 [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{
25 "Test.cpp": nil,
26 "include/Test.h": nil,
27 "include-android/AndroidTest.h": nil,
28 "include-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,
33}
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
42func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000043 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000044 sdk {
45 name: "mysdk",
46 native_shared_libs: ["sdkmember"],
47 }
48
49 cc_library_shared {
50 name: "sdkmember",
51 srcs: ["Test.cpp"],
Paul Duffina80fdec2019-12-03 15:25:00 +000052 stl: "none",
53 }
54 `)
55
Colin Cross7113d202019-11-20 16:39:12 -080056 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
57 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000058
59 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000060 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000061 for _, bp := range buildParams {
62 if bp.Input != nil {
63 inputs = append(inputs, bp.Input.String())
64 }
65 }
66
67 // ensure that both 32/64 outputs are inputs of the sdk snapshot
68 ensureListContains(t, inputs, armOutput.String())
69 ensureListContains(t, inputs, arm64Output.String())
70}
71
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010072func TestSdkCompileMultilibOverride(t *testing.T) {
73 result := testSdkWithCc(t, `
74 sdk {
75 name: "mysdk",
Martin Stjernholm89238f42020-07-10 00:14:03 +010076 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010077 native_shared_libs: ["sdkmember"],
78 compile_multilib: "64",
79 }
80
81 cc_library_shared {
82 name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +010083 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +010084 srcs: ["Test.cpp"],
85 stl: "none",
86 compile_multilib: "64",
87 }
88 `)
89
90 result.CheckSnapshot("mysdk", "",
Martin Stjernholm89238f42020-07-10 00:14:03 +010091 checkAndroidBpContents(`
92// This is auto-generated. DO NOT EDIT.
93
94cc_prebuilt_library_shared {
95 name: "mysdk_sdkmember@current",
96 sdk_member_name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +010097 host_supported: true,
98 installable: false,
99 stl: "none",
100 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100101 target: {
102 android_arm64: {
103 srcs: ["android/arm64/lib/sdkmember.so"],
104 },
105 linux_glibc_x86_64: {
106 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100107 },
108 },
109}
110
111cc_prebuilt_library_shared {
112 name: "sdkmember",
113 prefer: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100114 host_supported: true,
115 stl: "none",
116 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100117 target: {
118 android_arm64: {
119 srcs: ["android/arm64/lib/sdkmember.so"],
120 },
121 linux_glibc_x86_64: {
122 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100123 },
124 },
125}
126
127sdk_snapshot {
128 name: "mysdk@current",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100129 host_supported: true,
130 native_shared_libs: ["mysdk_sdkmember@current"],
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100131 compile_multilib: "64",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100132}
133`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100134 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100135.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
136.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100137`))
138}
139
Paul Duffina80fdec2019-12-03 15:25:00 +0000140func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000141 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000142 sdk {
143 name: "mysdk",
144 native_shared_libs: ["sdkmember"],
145 }
146
Paul Duffina0843f62019-12-13 19:50:38 +0000147 cc_library_shared {
148 name: "sdkmember",
Colin Crossf9aabd72020-02-15 11:29:50 -0800149 system_shared_libs: [],
Martin Stjernholmcc776012020-07-07 03:22:21 +0100150 stl: "none",
151 apex_available: ["mysdkapex"],
Paul Duffina0843f62019-12-13 19:50:38 +0000152 }
153
Paul Duffina80fdec2019-12-03 15:25:00 +0000154 sdk_snapshot {
155 name: "mysdk@1",
156 native_shared_libs: ["sdkmember_mysdk_1"],
157 }
158
159 sdk_snapshot {
160 name: "mysdk@2",
161 native_shared_libs: ["sdkmember_mysdk_2"],
162 }
163
164 cc_prebuilt_library_shared {
165 name: "sdkmember",
166 srcs: ["libfoo.so"],
167 prefer: false,
168 system_shared_libs: [],
169 stl: "none",
170 }
171
172 cc_prebuilt_library_shared {
173 name: "sdkmember_mysdk_1",
174 sdk_member_name: "sdkmember",
175 srcs: ["libfoo.so"],
176 system_shared_libs: [],
177 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000178 // TODO: remove //apex_available:platform
179 apex_available: [
180 "//apex_available:platform",
181 "myapex",
182 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000183 }
184
185 cc_prebuilt_library_shared {
186 name: "sdkmember_mysdk_2",
187 sdk_member_name: "sdkmember",
188 srcs: ["libfoo.so"],
189 system_shared_libs: [],
190 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000191 // TODO: remove //apex_available:platform
192 apex_available: [
193 "//apex_available:platform",
194 "myapex2",
195 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000196 }
197
198 cc_library_shared {
199 name: "mycpplib",
200 srcs: ["Test.cpp"],
201 shared_libs: ["sdkmember"],
202 system_shared_libs: [],
203 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000204 apex_available: [
205 "myapex",
206 "myapex2",
207 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000208 }
209
210 apex {
211 name: "myapex",
212 native_shared_libs: ["mycpplib"],
213 uses_sdks: ["mysdk@1"],
214 key: "myapex.key",
215 certificate: ":myapex.cert",
216 }
217
218 apex {
219 name: "myapex2",
220 native_shared_libs: ["mycpplib"],
221 uses_sdks: ["mysdk@2"],
222 key: "myapex.key",
223 certificate: ":myapex.cert",
224 }
Martin Stjernholmcc776012020-07-07 03:22:21 +0100225
226 apex {
227 name: "mysdkapex",
228 native_shared_libs: ["sdkmember"],
229 key: "myapex.key",
230 certificate: ":myapex.cert",
231 }
Paul Duffina80fdec2019-12-03 15:25:00 +0000232 `)
233
Colin Cross7113d202019-11-20 16:39:12 -0800234 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output
235 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_myapex2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000236
Colin Cross7113d202019-11-20 16:39:12 -0800237 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex")
238 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000239
240 // Depending on the uses_sdks value, different libs are linked
241 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
242 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
243}
244
Paul Duffina0843f62019-12-13 19:50:38 +0000245// Make sure the sdk can use host specific cc libraries static/shared and both.
246func TestHostSdkWithCc(t *testing.T) {
247 testSdkWithCc(t, `
248 sdk {
249 name: "mysdk",
250 device_supported: false,
251 host_supported: true,
252 native_shared_libs: ["sdkshared"],
253 native_static_libs: ["sdkstatic"],
254 }
255
256 cc_library_host_shared {
257 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000258 stl: "none",
259 }
260
261 cc_library_host_static {
262 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000263 stl: "none",
264 }
265 `)
266}
267
268// Make sure the sdk can use cc libraries static/shared and both.
269func TestSdkWithCc(t *testing.T) {
270 testSdkWithCc(t, `
271 sdk {
272 name: "mysdk",
273 native_shared_libs: ["sdkshared", "sdkboth1"],
274 native_static_libs: ["sdkstatic", "sdkboth2"],
275 }
276
277 cc_library_shared {
278 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000279 stl: "none",
280 }
281
282 cc_library_static {
283 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000284 stl: "none",
285 }
286
287 cc_library {
288 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000289 stl: "none",
290 }
291
292 cc_library {
293 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000294 stl: "none",
295 }
296 `)
297}
298
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000299func TestSnapshotWithObject(t *testing.T) {
300 result := testSdkWithCc(t, `
301 sdk {
302 name: "mysdk",
303 native_objects: ["crtobj"],
304 }
305
306 cc_object {
307 name: "crtobj",
308 stl: "none",
309 }
310 `)
311
312 result.CheckSnapshot("mysdk", "",
313 checkAndroidBpContents(`
314// This is auto-generated. DO NOT EDIT.
315
316cc_prebuilt_object {
317 name: "mysdk_crtobj@current",
318 sdk_member_name: "crtobj",
319 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100320 compile_multilib: "both",
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000321 arch: {
322 arm64: {
323 srcs: ["arm64/lib/crtobj.o"],
324 },
325 arm: {
326 srcs: ["arm/lib/crtobj.o"],
327 },
328 },
329}
330
331cc_prebuilt_object {
332 name: "crtobj",
333 prefer: false,
334 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100335 compile_multilib: "both",
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000336 arch: {
337 arm64: {
338 srcs: ["arm64/lib/crtobj.o"],
339 },
340 arm: {
341 srcs: ["arm/lib/crtobj.o"],
342 },
343 },
344}
345
346sdk_snapshot {
347 name: "mysdk@current",
348 native_objects: ["mysdk_crtobj@current"],
349}
350`),
351 checkAllCopyRules(`
352.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
353.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
354`),
355 )
356}
357
Paul Duffinc62a5102019-12-11 18:34:15 +0000358func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
359 result := testSdkWithCc(t, `
360 sdk {
361 name: "mysdk",
362 native_shared_libs: ["mynativelib1", "mynativelib2"],
363 }
364
365 cc_library_shared {
366 name: "mynativelib1",
367 srcs: [
368 "Test.cpp",
369 ],
370 export_include_dirs: ["include"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000371 stl: "none",
372 }
373
374 cc_library_shared {
375 name: "mynativelib2",
376 srcs: [
377 "Test.cpp",
378 ],
379 export_include_dirs: ["include"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000380 stl: "none",
381 }
382 `)
383
Paul Duffin1356d8c2020-02-25 19:26:33 +0000384 result.CheckSnapshot("mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000385 checkAllCopyRules(`
386include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800387.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
388.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
389.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
390.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000391`),
392 )
393}
394
Paul Duffina7cd8c82019-12-11 20:00:57 +0000395// Verify that when the shared library has some common and some arch specific properties that the generated
396// snapshot is optimized properly.
397func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
398 result := testSdkWithCc(t, `
399 sdk {
400 name: "mysdk",
401 native_shared_libs: ["mynativelib"],
402 }
403
404 cc_library_shared {
405 name: "mynativelib",
406 srcs: [
407 "Test.cpp",
408 "aidl/foo/bar/Test.aidl",
409 ],
410 export_include_dirs: ["include"],
411 arch: {
412 arm64: {
413 export_system_include_dirs: ["arm64/include"],
414 },
415 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000416 stl: "none",
417 }
418 `)
419
Paul Duffin1356d8c2020-02-25 19:26:33 +0000420 result.CheckSnapshot("mysdk", "",
Paul Duffina7cd8c82019-12-11 20:00:57 +0000421 checkAndroidBpContents(`
422// This is auto-generated. DO NOT EDIT.
423
424cc_prebuilt_library_shared {
425 name: "mysdk_mynativelib@current",
426 sdk_member_name: "mynativelib",
Paul Duffin0cb37b92020-03-04 14:52:46 +0000427 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000428 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100429 compile_multilib: "both",
Paul Duffina7cd8c82019-12-11 20:00:57 +0000430 export_include_dirs: ["include/include"],
431 arch: {
432 arm64: {
433 srcs: ["arm64/lib/mynativelib.so"],
434 export_system_include_dirs: ["arm64/include/arm64/include"],
435 },
436 arm: {
437 srcs: ["arm/lib/mynativelib.so"],
438 },
439 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000440}
441
442cc_prebuilt_library_shared {
443 name: "mynativelib",
444 prefer: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000445 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100446 compile_multilib: "both",
Paul Duffina7cd8c82019-12-11 20:00:57 +0000447 export_include_dirs: ["include/include"],
448 arch: {
449 arm64: {
450 srcs: ["arm64/lib/mynativelib.so"],
451 export_system_include_dirs: ["arm64/include/arm64/include"],
452 },
453 arm: {
454 srcs: ["arm/lib/mynativelib.so"],
455 },
456 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000457}
458
459sdk_snapshot {
460 name: "mysdk@current",
461 native_shared_libs: ["mysdk_mynativelib@current"],
462}
463`),
464 checkAllCopyRules(`
465include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800466.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000467arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800468.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000469 )
470}
471
Paul Duffin25ce04b2020-01-16 11:47:25 +0000472func TestSnapshotWithCcBinary(t *testing.T) {
473 result := testSdkWithCc(t, `
474 module_exports {
475 name: "mymodule_exports",
476 native_binaries: ["mynativebinary"],
477 }
478
479 cc_binary {
480 name: "mynativebinary",
481 srcs: [
482 "Test.cpp",
483 ],
484 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000485 }
486 `)
487
Paul Duffin1356d8c2020-02-25 19:26:33 +0000488 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000489 checkAndroidBpContents(`
490// This is auto-generated. DO NOT EDIT.
491
492cc_prebuilt_binary {
493 name: "mymodule_exports_mynativebinary@current",
494 sdk_member_name: "mynativebinary",
Paul Duffin0cb37b92020-03-04 14:52:46 +0000495 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000496 compile_multilib: "both",
497 arch: {
498 arm64: {
499 srcs: ["arm64/bin/mynativebinary"],
500 },
501 arm: {
502 srcs: ["arm/bin/mynativebinary"],
503 },
504 },
505}
506
507cc_prebuilt_binary {
508 name: "mynativebinary",
509 prefer: false,
510 compile_multilib: "both",
511 arch: {
512 arm64: {
513 srcs: ["arm64/bin/mynativebinary"],
514 },
515 arm: {
516 srcs: ["arm/bin/mynativebinary"],
517 },
518 },
519}
520
521module_exports_snapshot {
522 name: "mymodule_exports@current",
523 native_binaries: ["mymodule_exports_mynativebinary@current"],
524}
525`),
526 checkAllCopyRules(`
527.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
528.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
529`),
530 )
531}
532
Paul Duffina04c1072020-03-02 10:16:35 +0000533func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000534 result := testSdkWithCc(t, `
535 module_exports {
536 name: "myexports",
537 device_supported: false,
538 host_supported: true,
539 native_binaries: ["mynativebinary"],
540 target: {
541 windows: {
542 enabled: true,
543 },
544 },
545 }
546
547 cc_binary {
548 name: "mynativebinary",
549 device_supported: false,
550 host_supported: true,
551 srcs: [
552 "Test.cpp",
553 ],
554 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000555 stl: "none",
556 target: {
557 windows: {
558 enabled: true,
559 },
560 },
561 }
562 `)
563
564 result.CheckSnapshot("myexports", "",
565 checkAndroidBpContents(`
566// This is auto-generated. DO NOT EDIT.
567
568cc_prebuilt_binary {
569 name: "myexports_mynativebinary@current",
570 sdk_member_name: "mynativebinary",
571 device_supported: false,
572 host_supported: true,
Paul Duffin0cb37b92020-03-04 14:52:46 +0000573 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100574 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000575 target: {
576 linux_glibc: {
577 compile_multilib: "both",
578 },
579 linux_glibc_x86_64: {
580 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
581 },
582 linux_glibc_x86: {
583 srcs: ["linux_glibc/x86/bin/mynativebinary"],
584 },
585 windows: {
586 compile_multilib: "64",
587 },
588 windows_x86_64: {
589 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
590 },
591 },
592}
593
594cc_prebuilt_binary {
595 name: "mynativebinary",
596 prefer: false,
597 device_supported: false,
598 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100599 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000600 target: {
601 linux_glibc: {
602 compile_multilib: "both",
603 },
604 linux_glibc_x86_64: {
605 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
606 },
607 linux_glibc_x86: {
608 srcs: ["linux_glibc/x86/bin/mynativebinary"],
609 },
610 windows: {
611 compile_multilib: "64",
612 },
613 windows_x86_64: {
614 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
615 },
616 },
617}
618
619module_exports_snapshot {
620 name: "myexports@current",
621 device_supported: false,
622 host_supported: true,
623 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000624 target: {
625 windows: {
626 compile_multilib: "64",
627 },
628 },
Paul Duffina04c1072020-03-02 10:16:35 +0000629}
630`),
631 checkAllCopyRules(`
632.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
633.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
634.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
635`),
636 )
637}
638
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100639// Test that we support the necessary flags for the linker binary, which is
640// special in several ways.
641func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100642 result := testSdkWithCc(t, `
643 module_exports {
644 name: "mymodule_exports",
645 host_supported: true,
646 device_supported: false,
647 native_binaries: ["linker"],
648 }
649
650 cc_binary {
651 name: "linker",
652 host_supported: true,
653 static_executable: true,
654 nocrt: true,
655 stl: "none",
656 srcs: [
657 "Test.cpp",
658 ],
659 compile_multilib: "both",
660 }
661 `)
662
663 result.CheckSnapshot("mymodule_exports", "",
664 checkAndroidBpContents(`
665// This is auto-generated. DO NOT EDIT.
666
667cc_prebuilt_binary {
668 name: "mymodule_exports_linker@current",
669 sdk_member_name: "linker",
670 device_supported: false,
671 host_supported: true,
672 installable: false,
673 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100674 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100675 static_executable: true,
676 nocrt: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100677 arch: {
678 x86_64: {
679 srcs: ["x86_64/bin/linker"],
680 },
681 x86: {
682 srcs: ["x86/bin/linker"],
683 },
684 },
685}
686
687cc_prebuilt_binary {
688 name: "linker",
689 prefer: false,
690 device_supported: false,
691 host_supported: true,
692 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100693 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100694 static_executable: true,
695 nocrt: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100696 arch: {
697 x86_64: {
698 srcs: ["x86_64/bin/linker"],
699 },
700 x86: {
701 srcs: ["x86/bin/linker"],
702 },
703 },
704}
705
706module_exports_snapshot {
707 name: "mymodule_exports@current",
708 device_supported: false,
709 host_supported: true,
710 native_binaries: ["mymodule_exports_linker@current"],
711}
712`),
713 checkAllCopyRules(`
714.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
715.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
716`),
717 )
718}
719
Paul Duffin9ab556f2019-12-11 18:42:17 +0000720func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000721 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000722 sdk {
723 name: "mysdk",
724 native_shared_libs: ["mynativelib"],
725 }
726
727 cc_library_shared {
728 name: "mynativelib",
729 srcs: [
730 "Test.cpp",
731 "aidl/foo/bar/Test.aidl",
732 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +0000733 apex_available: ["apex1", "apex2"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000734 export_include_dirs: ["include"],
735 aidl: {
736 export_aidl_headers: true,
737 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000738 stl: "none",
739 }
740 `)
741
Paul Duffin1356d8c2020-02-25 19:26:33 +0000742 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000743 checkAndroidBpContents(`
744// This is auto-generated. DO NOT EDIT.
745
746cc_prebuilt_library_shared {
747 name: "mysdk_mynativelib@current",
748 sdk_member_name: "mynativelib",
Paul Duffinbefa4b92020-03-04 14:22:45 +0000749 apex_available: [
750 "apex1",
751 "apex2",
752 ],
Paul Duffin0cb37b92020-03-04 14:52:46 +0000753 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000754 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100755 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000756 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000757 arch: {
758 arm64: {
759 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000760 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000761 },
762 arm: {
763 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000764 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000765 },
766 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000767}
768
769cc_prebuilt_library_shared {
770 name: "mynativelib",
771 prefer: false,
Paul Duffinbefa4b92020-03-04 14:22:45 +0000772 apex_available: [
773 "apex1",
774 "apex2",
775 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000776 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100777 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000778 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000779 arch: {
780 arm64: {
781 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000782 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000783 },
784 arm: {
785 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000786 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000787 },
788 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000789}
790
791sdk_snapshot {
792 name: "mysdk@current",
793 native_shared_libs: ["mysdk_mynativelib@current"],
794}
795`),
796 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000797include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800798.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
799.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
800.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
801.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
802.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
803.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
804.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
805.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000806`),
807 )
808}
809
Paul Duffin13f02712020-03-06 12:30:43 +0000810func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
811 result := testSdkWithCc(t, `
812 sdk {
813 name: "mysdk",
814 native_shared_libs: [
815 "mynativelib",
816 "myothernativelib",
817 "mysystemnativelib",
818 ],
819 }
820
821 cc_library {
822 name: "mysystemnativelib",
823 srcs: [
824 "Test.cpp",
825 ],
Paul Duffin13f02712020-03-06 12:30:43 +0000826 stl: "none",
827 }
828
829 cc_library_shared {
830 name: "myothernativelib",
831 srcs: [
832 "Test.cpp",
833 ],
834 system_shared_libs: [
835 // A reference to a library that is not an sdk member. Uses libm as that
836 // is in the default set of modules available to this test and so is available
837 // both here and also when the generated Android.bp file is tested in
838 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
839 // handles references to modules that are not sdk members.
840 "libm",
841 ],
842 stl: "none",
843 }
844
845 cc_library {
846 name: "mynativelib",
847 srcs: [
848 "Test.cpp",
849 ],
850 shared_libs: [
851 // A reference to another sdk member.
852 "myothernativelib",
853 ],
854 target: {
855 android: {
856 shared: {
857 shared_libs: [
858 // A reference to a library that is not an sdk member. The libc library
859 // is used here to check that the shared_libs property is handled correctly
860 // in a similar way to how libm is used to check system_shared_libs above.
861 "libc",
862 ],
863 },
864 },
865 },
Paul Duffin13f02712020-03-06 12:30:43 +0000866 stl: "none",
867 }
868 `)
869
870 result.CheckSnapshot("mysdk", "",
871 checkAndroidBpContents(`
872// This is auto-generated. DO NOT EDIT.
873
874cc_prebuilt_library_shared {
875 name: "mysdk_mynativelib@current",
876 sdk_member_name: "mynativelib",
877 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000878 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100879 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000880 shared_libs: [
881 "mysdk_myothernativelib@current",
882 "libc",
883 ],
884 arch: {
885 arm64: {
886 srcs: ["arm64/lib/mynativelib.so"],
887 },
888 arm: {
889 srcs: ["arm/lib/mynativelib.so"],
890 },
891 },
Paul Duffin13f02712020-03-06 12:30:43 +0000892}
893
894cc_prebuilt_library_shared {
895 name: "mynativelib",
896 prefer: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000897 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100898 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000899 shared_libs: [
900 "myothernativelib",
901 "libc",
902 ],
903 arch: {
904 arm64: {
905 srcs: ["arm64/lib/mynativelib.so"],
906 },
907 arm: {
908 srcs: ["arm/lib/mynativelib.so"],
909 },
910 },
Paul Duffin13f02712020-03-06 12:30:43 +0000911}
912
913cc_prebuilt_library_shared {
914 name: "mysdk_myothernativelib@current",
915 sdk_member_name: "myothernativelib",
916 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000917 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100918 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000919 system_shared_libs: ["libm"],
920 arch: {
921 arm64: {
922 srcs: ["arm64/lib/myothernativelib.so"],
923 },
924 arm: {
925 srcs: ["arm/lib/myothernativelib.so"],
926 },
927 },
Paul Duffin13f02712020-03-06 12:30:43 +0000928}
929
930cc_prebuilt_library_shared {
931 name: "myothernativelib",
932 prefer: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000933 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100934 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000935 system_shared_libs: ["libm"],
936 arch: {
937 arm64: {
938 srcs: ["arm64/lib/myothernativelib.so"],
939 },
940 arm: {
941 srcs: ["arm/lib/myothernativelib.so"],
942 },
943 },
Paul Duffin13f02712020-03-06 12:30:43 +0000944}
945
946cc_prebuilt_library_shared {
947 name: "mysdk_mysystemnativelib@current",
948 sdk_member_name: "mysystemnativelib",
949 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000950 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100951 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000952 arch: {
953 arm64: {
954 srcs: ["arm64/lib/mysystemnativelib.so"],
955 },
956 arm: {
957 srcs: ["arm/lib/mysystemnativelib.so"],
958 },
959 },
Paul Duffin13f02712020-03-06 12:30:43 +0000960}
961
962cc_prebuilt_library_shared {
963 name: "mysystemnativelib",
964 prefer: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +0000965 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100966 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000967 arch: {
968 arm64: {
969 srcs: ["arm64/lib/mysystemnativelib.so"],
970 },
971 arm: {
972 srcs: ["arm/lib/mysystemnativelib.so"],
973 },
974 },
Paul Duffin13f02712020-03-06 12:30:43 +0000975}
976
977sdk_snapshot {
978 name: "mysdk@current",
979 native_shared_libs: [
980 "mysdk_mynativelib@current",
981 "mysdk_myothernativelib@current",
982 "mysdk_mysystemnativelib@current",
983 ],
984}
985`),
986 checkAllCopyRules(`
987.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
988.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
989.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
990.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
991.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
992.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
993`),
994 )
995}
996
Paul Duffin9ab556f2019-12-11 18:42:17 +0000997func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000998 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000999 sdk {
1000 name: "mysdk",
1001 device_supported: false,
1002 host_supported: true,
1003 native_shared_libs: ["mynativelib"],
1004 }
1005
1006 cc_library_shared {
1007 name: "mynativelib",
1008 device_supported: false,
1009 host_supported: true,
1010 srcs: [
1011 "Test.cpp",
1012 "aidl/foo/bar/Test.aidl",
1013 ],
1014 export_include_dirs: ["include"],
1015 aidl: {
1016 export_aidl_headers: true,
1017 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001018 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001019 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001020 }
1021 `)
1022
Paul Duffin1356d8c2020-02-25 19:26:33 +00001023 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +00001024 checkAndroidBpContents(`
1025// This is auto-generated. DO NOT EDIT.
1026
1027cc_prebuilt_library_shared {
1028 name: "mysdk_mynativelib@current",
1029 sdk_member_name: "mynativelib",
1030 device_supported: false,
1031 host_supported: true,
Paul Duffin0cb37b92020-03-04 14:52:46 +00001032 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001033 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001034 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001035 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001036 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001037 arch: {
1038 x86_64: {
1039 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001040 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001041 },
1042 x86: {
1043 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001044 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001045 },
1046 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001047}
1048
1049cc_prebuilt_library_shared {
1050 name: "mynativelib",
1051 prefer: false,
1052 device_supported: false,
1053 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001054 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001055 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001056 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001057 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001058 arch: {
1059 x86_64: {
1060 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001061 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001062 },
1063 x86: {
1064 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001065 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001066 },
1067 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001068}
1069
1070sdk_snapshot {
1071 name: "mysdk@current",
1072 device_supported: false,
1073 host_supported: true,
1074 native_shared_libs: ["mysdk_mynativelib@current"],
1075}
1076`),
1077 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001078include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001079.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +00001080.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
1081.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1082.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1083.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +00001084.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
1085.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1086.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1087`),
1088 )
1089}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001090
Paul Duffina04c1072020-03-02 10:16:35 +00001091func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001092 result := testSdkWithCc(t, `
1093 sdk {
1094 name: "mysdk",
1095 device_supported: false,
1096 host_supported: true,
1097 native_shared_libs: ["mynativelib"],
1098 target: {
1099 windows: {
1100 enabled: true,
1101 },
1102 },
1103 }
1104
1105 cc_library_shared {
1106 name: "mynativelib",
1107 device_supported: false,
1108 host_supported: true,
1109 srcs: [
1110 "Test.cpp",
1111 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001112 stl: "none",
1113 target: {
1114 windows: {
1115 enabled: true,
1116 },
1117 },
1118 }
1119 `)
1120
1121 result.CheckSnapshot("mysdk", "",
1122 checkAndroidBpContents(`
1123// This is auto-generated. DO NOT EDIT.
1124
1125cc_prebuilt_library_shared {
1126 name: "mysdk_mynativelib@current",
1127 sdk_member_name: "mynativelib",
1128 device_supported: false,
1129 host_supported: true,
Paul Duffin0cb37b92020-03-04 14:52:46 +00001130 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001131 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001132 target: {
Martin Stjernholm89238f42020-07-10 00:14:03 +01001133 linux_glibc: {
1134 compile_multilib: "both",
1135 },
Paul Duffina04c1072020-03-02 10:16:35 +00001136 linux_glibc_x86_64: {
1137 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1138 },
1139 linux_glibc_x86: {
1140 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1141 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001142 windows: {
1143 compile_multilib: "64",
1144 },
Paul Duffina04c1072020-03-02 10:16:35 +00001145 windows_x86_64: {
1146 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1147 },
1148 },
Paul Duffina04c1072020-03-02 10:16:35 +00001149}
1150
1151cc_prebuilt_library_shared {
1152 name: "mynativelib",
1153 prefer: false,
1154 device_supported: false,
1155 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001156 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001157 target: {
Martin Stjernholm89238f42020-07-10 00:14:03 +01001158 linux_glibc: {
1159 compile_multilib: "both",
1160 },
Paul Duffina04c1072020-03-02 10:16:35 +00001161 linux_glibc_x86_64: {
1162 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1163 },
1164 linux_glibc_x86: {
1165 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1166 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001167 windows: {
1168 compile_multilib: "64",
1169 },
Paul Duffina04c1072020-03-02 10:16:35 +00001170 windows_x86_64: {
1171 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1172 },
1173 },
Paul Duffina04c1072020-03-02 10:16:35 +00001174}
1175
1176sdk_snapshot {
1177 name: "mysdk@current",
1178 device_supported: false,
1179 host_supported: true,
1180 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001181 target: {
1182 windows: {
1183 compile_multilib: "64",
1184 },
1185 },
Paul Duffina04c1072020-03-02 10:16:35 +00001186}
1187`),
1188 checkAllCopyRules(`
1189.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1190.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1191.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1192`),
1193 )
1194}
1195
Paul Duffin9ab556f2019-12-11 18:42:17 +00001196func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1197 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001198 module_exports {
1199 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001200 native_static_libs: ["mynativelib"],
1201 }
1202
1203 cc_library_static {
1204 name: "mynativelib",
1205 srcs: [
1206 "Test.cpp",
1207 "aidl/foo/bar/Test.aidl",
1208 ],
1209 export_include_dirs: ["include"],
1210 aidl: {
1211 export_aidl_headers: true,
1212 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001213 stl: "none",
1214 }
1215 `)
1216
Paul Duffin1356d8c2020-02-25 19:26:33 +00001217 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001218 checkAndroidBpContents(`
1219// This is auto-generated. DO NOT EDIT.
1220
1221cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +00001222 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001223 sdk_member_name: "mynativelib",
Paul Duffin0cb37b92020-03-04 14:52:46 +00001224 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001225 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001226 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001227 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001228 arch: {
1229 arm64: {
1230 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001231 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001232 },
1233 arm: {
1234 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001235 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001236 },
1237 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001238}
1239
1240cc_prebuilt_library_static {
1241 name: "mynativelib",
1242 prefer: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001243 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001244 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001245 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001246 arch: {
1247 arm64: {
1248 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001249 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001250 },
1251 arm: {
1252 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001253 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001254 },
1255 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001256}
1257
Paul Duffine6029182019-12-16 17:43:48 +00001258module_exports_snapshot {
1259 name: "myexports@current",
1260 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001261}
1262`),
1263 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001264include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001265.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1266.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
1267.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1268.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1269.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
1270.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
1271.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1272.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001273`),
1274 )
1275}
1276
1277func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001278 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001279 module_exports {
1280 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001281 device_supported: false,
1282 host_supported: true,
1283 native_static_libs: ["mynativelib"],
1284 }
1285
1286 cc_library_static {
1287 name: "mynativelib",
1288 device_supported: false,
1289 host_supported: true,
1290 srcs: [
1291 "Test.cpp",
1292 "aidl/foo/bar/Test.aidl",
1293 ],
1294 export_include_dirs: ["include"],
1295 aidl: {
1296 export_aidl_headers: true,
1297 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001298 stl: "none",
1299 }
1300 `)
1301
Paul Duffin1356d8c2020-02-25 19:26:33 +00001302 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001303 checkAndroidBpContents(`
1304// This is auto-generated. DO NOT EDIT.
1305
1306cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +00001307 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001308 sdk_member_name: "mynativelib",
1309 device_supported: false,
1310 host_supported: true,
Paul Duffin0cb37b92020-03-04 14:52:46 +00001311 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001312 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001313 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001314 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001315 arch: {
1316 x86_64: {
1317 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001318 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001319 },
1320 x86: {
1321 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001322 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001323 },
1324 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001325}
1326
1327cc_prebuilt_library_static {
1328 name: "mynativelib",
1329 prefer: false,
1330 device_supported: false,
1331 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001332 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001333 compile_multilib: "both",
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001334 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001335 arch: {
1336 x86_64: {
1337 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001338 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001339 },
1340 x86: {
1341 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001342 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001343 },
1344 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001345}
1346
Paul Duffine6029182019-12-16 17:43:48 +00001347module_exports_snapshot {
1348 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001349 device_supported: false,
1350 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001351 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001352}
1353`),
1354 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +00001355include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001356.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +00001357.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
1358.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1359.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1360.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +00001361.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
1362.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1363.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1364`),
1365 )
1366}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001367
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001368func TestSnapshotWithCcLibrary(t *testing.T) {
1369 result := testSdkWithCc(t, `
1370 module_exports {
1371 name: "myexports",
1372 native_libs: ["mynativelib"],
1373 }
1374
1375 cc_library {
1376 name: "mynativelib",
1377 srcs: [
1378 "Test.cpp",
1379 ],
1380 export_include_dirs: ["include"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001381 stl: "none",
1382 }
1383 `)
1384
1385 result.CheckSnapshot("myexports", "",
1386 checkAndroidBpContents(`
1387// This is auto-generated. DO NOT EDIT.
1388
1389cc_prebuilt_library {
1390 name: "myexports_mynativelib@current",
1391 sdk_member_name: "mynativelib",
1392 installable: false,
1393 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001394 compile_multilib: "both",
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001395 export_include_dirs: ["include/include"],
1396 arch: {
1397 arm64: {
1398 static: {
1399 srcs: ["arm64/lib/mynativelib.a"],
1400 },
1401 shared: {
1402 srcs: ["arm64/lib/mynativelib.so"],
1403 },
1404 },
1405 arm: {
1406 static: {
1407 srcs: ["arm/lib/mynativelib.a"],
1408 },
1409 shared: {
1410 srcs: ["arm/lib/mynativelib.so"],
1411 },
1412 },
1413 },
1414}
1415
1416cc_prebuilt_library {
1417 name: "mynativelib",
1418 prefer: false,
1419 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001420 compile_multilib: "both",
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001421 export_include_dirs: ["include/include"],
1422 arch: {
1423 arm64: {
1424 static: {
1425 srcs: ["arm64/lib/mynativelib.a"],
1426 },
1427 shared: {
1428 srcs: ["arm64/lib/mynativelib.so"],
1429 },
1430 },
1431 arm: {
1432 static: {
1433 srcs: ["arm/lib/mynativelib.a"],
1434 },
1435 shared: {
1436 srcs: ["arm/lib/mynativelib.so"],
1437 },
1438 },
1439 },
1440}
1441
1442module_exports_snapshot {
1443 name: "myexports@current",
1444 native_libs: ["myexports_mynativelib@current"],
1445}
1446`),
1447 checkAllCopyRules(`
1448include/Test.h -> include/include/Test.h
1449.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1450.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1451.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
1452.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
1453 )
1454}
1455
Paul Duffin13ad94f2020-02-19 16:19:27 +00001456func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001457 result := testSdkWithCc(t, `
1458 module_exports {
1459 name: "myexports",
1460 device_supported: false,
1461 host_supported: true,
1462 target: {
1463 host: {
1464 compile_multilib: "64",
1465 },
1466 },
1467 native_static_libs: ["mynativelib"],
1468 }
1469
1470 cc_library_static {
1471 name: "mynativelib",
1472 device_supported: false,
1473 host_supported: true,
1474 srcs: [
1475 "Test.cpp",
1476 "aidl/foo/bar/Test.aidl",
1477 ],
1478 export_include_dirs: ["include"],
1479 aidl: {
1480 export_aidl_headers: true,
1481 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001482 stl: "none",
1483 }
1484 `)
1485
Paul Duffin1356d8c2020-02-25 19:26:33 +00001486 result.CheckSnapshot("myexports", "",
Paul Duffin13ad94f2020-02-19 16:19:27 +00001487 checkAndroidBpContents(`
1488// This is auto-generated. DO NOT EDIT.
1489
1490cc_prebuilt_library_static {
1491 name: "myexports_mynativelib@current",
1492 sdk_member_name: "mynativelib",
1493 device_supported: false,
1494 host_supported: true,
Paul Duffin0cb37b92020-03-04 14:52:46 +00001495 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001496 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001497 compile_multilib: "64",
Paul Duffin13ad94f2020-02-19 16:19:27 +00001498 export_include_dirs: ["include/include"],
1499 arch: {
1500 x86_64: {
1501 srcs: ["x86_64/lib/mynativelib.a"],
1502 export_include_dirs: ["x86_64/include_gen/mynativelib"],
1503 },
1504 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001505}
1506
1507cc_prebuilt_library_static {
1508 name: "mynativelib",
1509 prefer: false,
1510 device_supported: false,
1511 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001512 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001513 compile_multilib: "64",
Paul Duffin13ad94f2020-02-19 16:19:27 +00001514 export_include_dirs: ["include/include"],
1515 arch: {
1516 x86_64: {
1517 srcs: ["x86_64/lib/mynativelib.a"],
1518 export_include_dirs: ["x86_64/include_gen/mynativelib"],
1519 },
1520 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001521}
1522
1523module_exports_snapshot {
1524 name: "myexports@current",
1525 device_supported: false,
1526 host_supported: true,
Paul Duffin07ef3cb2020-03-11 18:17:42 +00001527 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01001528 compile_multilib: "64",
Paul Duffin13ad94f2020-02-19 16:19:27 +00001529}`),
1530 checkAllCopyRules(`
1531include/Test.h -> include/include/Test.h
1532.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
1533.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
1534.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
1535.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
1536`),
1537 )
1538}
Paul Duffin91756d22020-02-21 16:29:57 +00001539
1540func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1541 result := testSdkWithCc(t, `
1542 sdk {
1543 name: "mysdk",
1544 native_header_libs: ["mynativeheaders"],
1545 }
1546
1547 cc_library_headers {
1548 name: "mynativeheaders",
1549 export_include_dirs: ["include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001550 stl: "none",
1551 }
1552 `)
1553
Paul Duffin1356d8c2020-02-25 19:26:33 +00001554 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +00001555 checkAndroidBpContents(`
1556// This is auto-generated. DO NOT EDIT.
1557
1558cc_prebuilt_library_headers {
1559 name: "mysdk_mynativeheaders@current",
1560 sdk_member_name: "mynativeheaders",
Paul Duffin91756d22020-02-21 16:29:57 +00001561 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001562 compile_multilib: "both",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001563 export_include_dirs: ["include/include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001564}
1565
1566cc_prebuilt_library_headers {
1567 name: "mynativeheaders",
1568 prefer: false,
Paul Duffin91756d22020-02-21 16:29:57 +00001569 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001570 compile_multilib: "both",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001571 export_include_dirs: ["include/include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001572}
1573
1574sdk_snapshot {
1575 name: "mysdk@current",
1576 native_header_libs: ["mysdk_mynativeheaders@current"],
1577}
1578`),
1579 checkAllCopyRules(`
1580include/Test.h -> include/include/Test.h
1581`),
1582 )
1583}
1584
1585func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00001586 result := testSdkWithCc(t, `
1587 sdk {
1588 name: "mysdk",
1589 device_supported: false,
1590 host_supported: true,
1591 native_header_libs: ["mynativeheaders"],
1592 }
1593
1594 cc_library_headers {
1595 name: "mynativeheaders",
1596 device_supported: false,
1597 host_supported: true,
1598 export_include_dirs: ["include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001599 stl: "none",
1600 }
1601 `)
1602
Paul Duffin1356d8c2020-02-25 19:26:33 +00001603 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +00001604 checkAndroidBpContents(`
1605// This is auto-generated. DO NOT EDIT.
1606
1607cc_prebuilt_library_headers {
1608 name: "mysdk_mynativeheaders@current",
1609 sdk_member_name: "mynativeheaders",
1610 device_supported: false,
1611 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001612 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001613 compile_multilib: "both",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001614 export_include_dirs: ["include/include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001615}
1616
1617cc_prebuilt_library_headers {
1618 name: "mynativeheaders",
1619 prefer: false,
1620 device_supported: false,
1621 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001622 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001623 compile_multilib: "both",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001624 export_include_dirs: ["include/include"],
Paul Duffin91756d22020-02-21 16:29:57 +00001625}
1626
1627sdk_snapshot {
1628 name: "mysdk@current",
1629 device_supported: false,
1630 host_supported: true,
1631 native_header_libs: ["mysdk_mynativeheaders@current"],
1632}
1633`),
1634 checkAllCopyRules(`
1635include/Test.h -> include/include/Test.h
1636`),
1637 )
1638}
Paul Duffina04c1072020-03-02 10:16:35 +00001639
1640func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001641 result := testSdkWithCc(t, `
1642 sdk {
1643 name: "mysdk",
1644 host_supported: true,
1645 native_header_libs: ["mynativeheaders"],
1646 }
1647
1648 cc_library_headers {
1649 name: "mynativeheaders",
1650 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001651 stl: "none",
1652 export_system_include_dirs: ["include"],
1653 target: {
1654 android: {
1655 export_include_dirs: ["include-android"],
1656 },
1657 host: {
1658 export_include_dirs: ["include-host"],
1659 },
1660 },
1661 }
1662 `)
1663
1664 result.CheckSnapshot("mysdk", "",
1665 checkAndroidBpContents(`
1666// This is auto-generated. DO NOT EDIT.
1667
1668cc_prebuilt_library_headers {
1669 name: "mysdk_mynativeheaders@current",
1670 sdk_member_name: "mynativeheaders",
1671 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001672 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001673 compile_multilib: "both",
Paul Duffined62b9c2020-06-16 16:12:50 +01001674 export_system_include_dirs: ["common_os/include/include"],
Paul Duffina04c1072020-03-02 10:16:35 +00001675 target: {
1676 android: {
Paul Duffined62b9c2020-06-16 16:12:50 +01001677 export_include_dirs: ["android/include/include-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00001678 },
1679 linux_glibc: {
Paul Duffined62b9c2020-06-16 16:12:50 +01001680 export_include_dirs: ["linux_glibc/include/include-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00001681 },
1682 },
Paul Duffina04c1072020-03-02 10:16:35 +00001683}
1684
1685cc_prebuilt_library_headers {
1686 name: "mynativeheaders",
1687 prefer: false,
1688 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001689 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001690 compile_multilib: "both",
Paul Duffined62b9c2020-06-16 16:12:50 +01001691 export_system_include_dirs: ["common_os/include/include"],
Paul Duffina04c1072020-03-02 10:16:35 +00001692 target: {
1693 android: {
Paul Duffined62b9c2020-06-16 16:12:50 +01001694 export_include_dirs: ["android/include/include-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00001695 },
1696 linux_glibc: {
Paul Duffined62b9c2020-06-16 16:12:50 +01001697 export_include_dirs: ["linux_glibc/include/include-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00001698 },
1699 },
Paul Duffina04c1072020-03-02 10:16:35 +00001700}
1701
1702sdk_snapshot {
1703 name: "mysdk@current",
1704 host_supported: true,
1705 native_header_libs: ["mysdk_mynativeheaders@current"],
1706}
1707`),
1708 checkAllCopyRules(`
Paul Duffined62b9c2020-06-16 16:12:50 +01001709include/Test.h -> common_os/include/include/Test.h
1710include-android/AndroidTest.h -> android/include/include-android/AndroidTest.h
1711include-host/HostTest.h -> linux_glibc/include/include-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00001712`),
1713 )
1714}
Martin Stjernholm10566a02020-03-24 01:19:52 +00001715
1716func TestSystemSharedLibPropagation(t *testing.T) {
1717 result := testSdkWithCc(t, `
1718 sdk {
1719 name: "mysdk",
1720 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
1721 }
1722
1723 cc_library {
1724 name: "sslnil",
1725 host_supported: true,
1726 }
1727
1728 cc_library {
1729 name: "sslempty",
1730 system_shared_libs: [],
1731 }
1732
1733 cc_library {
1734 name: "sslnonempty",
1735 system_shared_libs: ["sslnil"],
1736 }
1737 `)
1738
1739 result.CheckSnapshot("mysdk", "",
1740 checkAndroidBpContents(`
1741// This is auto-generated. DO NOT EDIT.
1742
1743cc_prebuilt_library_shared {
1744 name: "mysdk_sslnil@current",
1745 sdk_member_name: "sslnil",
1746 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001747 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001748 arch: {
1749 arm64: {
1750 srcs: ["arm64/lib/sslnil.so"],
1751 },
1752 arm: {
1753 srcs: ["arm/lib/sslnil.so"],
1754 },
1755 },
1756}
1757
1758cc_prebuilt_library_shared {
1759 name: "sslnil",
1760 prefer: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001761 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001762 arch: {
1763 arm64: {
1764 srcs: ["arm64/lib/sslnil.so"],
1765 },
1766 arm: {
1767 srcs: ["arm/lib/sslnil.so"],
1768 },
1769 },
1770}
1771
1772cc_prebuilt_library_shared {
1773 name: "mysdk_sslempty@current",
1774 sdk_member_name: "sslempty",
1775 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001776 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001777 system_shared_libs: [],
1778 arch: {
1779 arm64: {
1780 srcs: ["arm64/lib/sslempty.so"],
1781 },
1782 arm: {
1783 srcs: ["arm/lib/sslempty.so"],
1784 },
1785 },
1786}
1787
1788cc_prebuilt_library_shared {
1789 name: "sslempty",
1790 prefer: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001791 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001792 system_shared_libs: [],
1793 arch: {
1794 arm64: {
1795 srcs: ["arm64/lib/sslempty.so"],
1796 },
1797 arm: {
1798 srcs: ["arm/lib/sslempty.so"],
1799 },
1800 },
1801}
1802
1803cc_prebuilt_library_shared {
1804 name: "mysdk_sslnonempty@current",
1805 sdk_member_name: "sslnonempty",
1806 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001807 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001808 system_shared_libs: ["mysdk_sslnil@current"],
1809 arch: {
1810 arm64: {
1811 srcs: ["arm64/lib/sslnonempty.so"],
1812 },
1813 arm: {
1814 srcs: ["arm/lib/sslnonempty.so"],
1815 },
1816 },
1817}
1818
1819cc_prebuilt_library_shared {
1820 name: "sslnonempty",
1821 prefer: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001822 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001823 system_shared_libs: ["sslnil"],
1824 arch: {
1825 arm64: {
1826 srcs: ["arm64/lib/sslnonempty.so"],
1827 },
1828 arm: {
1829 srcs: ["arm/lib/sslnonempty.so"],
1830 },
1831 },
1832}
1833
1834sdk_snapshot {
1835 name: "mysdk@current",
1836 native_shared_libs: [
1837 "mysdk_sslnil@current",
1838 "mysdk_sslempty@current",
1839 "mysdk_sslnonempty@current",
1840 ],
1841}
1842`))
1843
1844 result = testSdkWithCc(t, `
1845 sdk {
1846 name: "mysdk",
1847 host_supported: true,
1848 native_shared_libs: ["sslvariants"],
1849 }
1850
1851 cc_library {
1852 name: "sslvariants",
1853 host_supported: true,
1854 target: {
1855 android: {
1856 system_shared_libs: [],
1857 },
1858 },
1859 }
1860 `)
1861
1862 result.CheckSnapshot("mysdk", "",
1863 checkAndroidBpContents(`
1864// This is auto-generated. DO NOT EDIT.
1865
1866cc_prebuilt_library_shared {
1867 name: "mysdk_sslvariants@current",
1868 sdk_member_name: "sslvariants",
1869 host_supported: true,
1870 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001871 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001872 target: {
1873 android: {
1874 system_shared_libs: [],
1875 },
1876 android_arm64: {
1877 srcs: ["android/arm64/lib/sslvariants.so"],
1878 },
1879 android_arm: {
1880 srcs: ["android/arm/lib/sslvariants.so"],
1881 },
1882 linux_glibc_x86_64: {
1883 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
1884 },
1885 linux_glibc_x86: {
1886 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
1887 },
1888 },
1889}
1890
1891cc_prebuilt_library_shared {
1892 name: "sslvariants",
1893 prefer: false,
1894 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001895 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00001896 target: {
1897 android: {
1898 system_shared_libs: [],
1899 },
1900 android_arm64: {
1901 srcs: ["android/arm64/lib/sslvariants.so"],
1902 },
1903 android_arm: {
1904 srcs: ["android/arm/lib/sslvariants.so"],
1905 },
1906 linux_glibc_x86_64: {
1907 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
1908 },
1909 linux_glibc_x86: {
1910 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
1911 },
1912 },
1913}
1914
1915sdk_snapshot {
1916 name: "mysdk@current",
1917 host_supported: true,
1918 native_shared_libs: ["mysdk_sslvariants@current"],
1919}
1920`))
1921}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001922
1923func TestStubsLibrary(t *testing.T) {
1924 result := testSdkWithCc(t, `
1925 sdk {
1926 name: "mysdk",
1927 native_shared_libs: ["stubslib"],
1928 }
1929
1930 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01001931 name: "internaldep",
1932 }
1933
1934 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001935 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01001936 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001937 stubs: {
1938 symbol_file: "some/where/stubslib.map.txt",
1939 versions: ["1", "2", "3"],
1940 },
1941 }
1942 `)
1943
1944 result.CheckSnapshot("mysdk", "",
1945 checkAndroidBpContents(`
1946// This is auto-generated. DO NOT EDIT.
1947
1948cc_prebuilt_library_shared {
1949 name: "mysdk_stubslib@current",
1950 sdk_member_name: "stubslib",
1951 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001952 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001953 stubs: {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001954 versions: ["3"],
1955 },
1956 arch: {
1957 arm64: {
1958 srcs: ["arm64/lib/stubslib.so"],
1959 },
1960 arm: {
1961 srcs: ["arm/lib/stubslib.so"],
1962 },
1963 },
1964}
1965
1966cc_prebuilt_library_shared {
1967 name: "stubslib",
1968 prefer: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01001969 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001970 stubs: {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01001971 versions: ["3"],
1972 },
1973 arch: {
1974 arm64: {
1975 srcs: ["arm64/lib/stubslib.so"],
1976 },
1977 arm: {
1978 srcs: ["arm/lib/stubslib.so"],
1979 },
1980 },
1981}
1982
1983sdk_snapshot {
1984 name: "mysdk@current",
1985 native_shared_libs: ["mysdk_stubslib@current"],
1986}
1987`))
1988}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01001989
1990func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01001991 result := testSdkWithCc(t, `
1992 sdk {
1993 name: "mysdk",
1994 host_supported: true,
1995 native_shared_libs: ["stubslib"],
1996 }
1997
1998 cc_library {
1999 name: "internaldep",
2000 host_supported: true,
2001 }
2002
2003 cc_library {
2004 name: "stubslib",
2005 host_supported: true,
2006 shared_libs: ["internaldep"],
2007 stubs: {
2008 symbol_file: "some/where/stubslib.map.txt",
2009 versions: ["1", "2", "3"],
2010 },
2011 }
2012 `)
2013
2014 result.CheckSnapshot("mysdk", "",
2015 checkAndroidBpContents(`
2016// This is auto-generated. DO NOT EDIT.
2017
2018cc_prebuilt_library_shared {
2019 name: "mysdk_stubslib@current",
2020 sdk_member_name: "stubslib",
2021 host_supported: true,
2022 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002023 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002024 stubs: {
2025 versions: ["3"],
2026 },
2027 target: {
2028 android_arm64: {
2029 srcs: ["android/arm64/lib/stubslib.so"],
2030 },
2031 android_arm: {
2032 srcs: ["android/arm/lib/stubslib.so"],
2033 },
2034 linux_glibc_x86_64: {
2035 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2036 },
2037 linux_glibc_x86: {
2038 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2039 },
2040 },
2041}
2042
2043cc_prebuilt_library_shared {
2044 name: "stubslib",
2045 prefer: false,
2046 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002047 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002048 stubs: {
2049 versions: ["3"],
2050 },
2051 target: {
2052 android_arm64: {
2053 srcs: ["android/arm64/lib/stubslib.so"],
2054 },
2055 android_arm: {
2056 srcs: ["android/arm/lib/stubslib.so"],
2057 },
2058 linux_glibc_x86_64: {
2059 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2060 },
2061 linux_glibc_x86: {
2062 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2063 },
2064 },
2065}
2066
2067sdk_snapshot {
2068 name: "mysdk@current",
2069 host_supported: true,
2070 native_shared_libs: ["mysdk_stubslib@current"],
2071}
2072`))
2073}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002074
2075func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002076 result := testSdkWithCc(t, `
2077 sdk {
2078 name: "mysdk",
2079 host_supported: true,
2080 native_shared_libs: ["mylib"],
2081 }
2082
2083 cc_library {
2084 name: "mylib",
2085 host_supported: true,
2086 unique_host_soname: true,
2087 }
2088 `)
2089
2090 result.CheckSnapshot("mysdk", "",
2091 checkAndroidBpContents(`
2092// This is auto-generated. DO NOT EDIT.
2093
2094cc_prebuilt_library_shared {
2095 name: "mysdk_mylib@current",
2096 sdk_member_name: "mylib",
2097 host_supported: true,
2098 installable: false,
2099 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002100 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002101 target: {
2102 android_arm64: {
2103 srcs: ["android/arm64/lib/mylib.so"],
2104 },
2105 android_arm: {
2106 srcs: ["android/arm/lib/mylib.so"],
2107 },
2108 linux_glibc_x86_64: {
2109 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2110 },
2111 linux_glibc_x86: {
2112 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2113 },
2114 },
2115}
2116
2117cc_prebuilt_library_shared {
2118 name: "mylib",
2119 prefer: false,
2120 host_supported: true,
2121 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002122 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002123 target: {
2124 android_arm64: {
2125 srcs: ["android/arm64/lib/mylib.so"],
2126 },
2127 android_arm: {
2128 srcs: ["android/arm/lib/mylib.so"],
2129 },
2130 linux_glibc_x86_64: {
2131 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2132 },
2133 linux_glibc_x86: {
2134 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2135 },
2136 },
2137}
2138
2139sdk_snapshot {
2140 name: "mysdk@current",
2141 host_supported: true,
2142 native_shared_libs: ["mysdk_mylib@current"],
2143}
2144`),
2145 checkAllCopyRules(`
2146.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2147.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2148.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2149.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2150`),
2151 )
2152}