blob: 8c32d8cad1c1551f56ebee5cbf2afc322f38673f [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
20 "android/soong/cc"
21)
22
Paul Duffind835daa2019-11-30 17:49:09 +000023func testSdkWithCc(t *testing.T, bp string) *testSdkResult {
24 t.Helper()
25
26 fs := map[string][]byte{
Paul Duffina7cd8c82019-12-11 20:00:57 +000027 "Test.cpp": nil,
28 "include/Test.h": nil,
29 "arm64/include/Arm64Test.h": nil,
30 "libfoo.so": nil,
31 "aidl/foo/bar/Test.aidl": nil,
Paul Duffind835daa2019-11-30 17:49:09 +000032 }
33 return testSdkWithFs(t, bp, fs)
34}
35
Paul Duffina80fdec2019-12-03 15:25:00 +000036// Contains tests for SDK members provided by the cc package.
37
38func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000039 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000040 sdk {
41 name: "mysdk",
42 native_shared_libs: ["sdkmember"],
43 }
44
45 cc_library_shared {
46 name: "sdkmember",
47 srcs: ["Test.cpp"],
48 system_shared_libs: [],
49 stl: "none",
50 }
51 `)
52
Colin Cross7113d202019-11-20 16:39:12 -080053 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
54 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000055
56 var inputs []string
57 buildParams := result.Module("mysdk", "android_common").BuildParamsForTests()
58 for _, bp := range buildParams {
59 if bp.Input != nil {
60 inputs = append(inputs, bp.Input.String())
61 }
62 }
63
64 // ensure that both 32/64 outputs are inputs of the sdk snapshot
65 ensureListContains(t, inputs, armOutput.String())
66 ensureListContains(t, inputs, arm64Output.String())
67}
68
69func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000070 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000071 sdk {
72 name: "mysdk",
73 native_shared_libs: ["sdkmember"],
74 }
75
Paul Duffina0843f62019-12-13 19:50:38 +000076 cc_library_shared {
77 name: "sdkmember",
78 }
79
Paul Duffina80fdec2019-12-03 15:25:00 +000080 sdk_snapshot {
81 name: "mysdk@1",
82 native_shared_libs: ["sdkmember_mysdk_1"],
83 }
84
85 sdk_snapshot {
86 name: "mysdk@2",
87 native_shared_libs: ["sdkmember_mysdk_2"],
88 }
89
90 cc_prebuilt_library_shared {
91 name: "sdkmember",
92 srcs: ["libfoo.so"],
93 prefer: false,
94 system_shared_libs: [],
95 stl: "none",
96 }
97
98 cc_prebuilt_library_shared {
99 name: "sdkmember_mysdk_1",
100 sdk_member_name: "sdkmember",
101 srcs: ["libfoo.so"],
102 system_shared_libs: [],
103 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000104 // TODO: remove //apex_available:platform
105 apex_available: [
106 "//apex_available:platform",
107 "myapex",
108 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000109 }
110
111 cc_prebuilt_library_shared {
112 name: "sdkmember_mysdk_2",
113 sdk_member_name: "sdkmember",
114 srcs: ["libfoo.so"],
115 system_shared_libs: [],
116 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000117 // TODO: remove //apex_available:platform
118 apex_available: [
119 "//apex_available:platform",
120 "myapex2",
121 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000122 }
123
124 cc_library_shared {
125 name: "mycpplib",
126 srcs: ["Test.cpp"],
127 shared_libs: ["sdkmember"],
128 system_shared_libs: [],
129 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000130 apex_available: [
131 "myapex",
132 "myapex2",
133 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000134 }
135
136 apex {
137 name: "myapex",
138 native_shared_libs: ["mycpplib"],
139 uses_sdks: ["mysdk@1"],
140 key: "myapex.key",
141 certificate: ":myapex.cert",
142 }
143
144 apex {
145 name: "myapex2",
146 native_shared_libs: ["mycpplib"],
147 uses_sdks: ["mysdk@2"],
148 key: "myapex.key",
149 certificate: ":myapex.cert",
150 }
151 `)
152
Colin Cross7113d202019-11-20 16:39:12 -0800153 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output
154 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_myapex2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000155
Colin Cross7113d202019-11-20 16:39:12 -0800156 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex")
157 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000158
159 // Depending on the uses_sdks value, different libs are linked
160 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
161 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
162}
163
Paul Duffina0843f62019-12-13 19:50:38 +0000164// Make sure the sdk can use host specific cc libraries static/shared and both.
165func TestHostSdkWithCc(t *testing.T) {
166 testSdkWithCc(t, `
167 sdk {
168 name: "mysdk",
169 device_supported: false,
170 host_supported: true,
171 native_shared_libs: ["sdkshared"],
172 native_static_libs: ["sdkstatic"],
173 }
174
175 cc_library_host_shared {
176 name: "sdkshared",
177 system_shared_libs: [],
178 stl: "none",
179 }
180
181 cc_library_host_static {
182 name: "sdkstatic",
183 system_shared_libs: [],
184 stl: "none",
185 }
186 `)
187}
188
189// Make sure the sdk can use cc libraries static/shared and both.
190func TestSdkWithCc(t *testing.T) {
191 testSdkWithCc(t, `
192 sdk {
193 name: "mysdk",
194 native_shared_libs: ["sdkshared", "sdkboth1"],
195 native_static_libs: ["sdkstatic", "sdkboth2"],
196 }
197
198 cc_library_shared {
199 name: "sdkshared",
200 system_shared_libs: [],
201 stl: "none",
202 }
203
204 cc_library_static {
205 name: "sdkstatic",
206 system_shared_libs: [],
207 stl: "none",
208 }
209
210 cc_library {
211 name: "sdkboth1",
212 system_shared_libs: [],
213 stl: "none",
214 }
215
216 cc_library {
217 name: "sdkboth2",
218 system_shared_libs: [],
219 stl: "none",
220 }
221 `)
222}
223
Paul Duffinc62a5102019-12-11 18:34:15 +0000224func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
225 result := testSdkWithCc(t, `
226 sdk {
227 name: "mysdk",
228 native_shared_libs: ["mynativelib1", "mynativelib2"],
229 }
230
231 cc_library_shared {
232 name: "mynativelib1",
233 srcs: [
234 "Test.cpp",
235 ],
236 export_include_dirs: ["include"],
237 system_shared_libs: [],
238 stl: "none",
239 }
240
241 cc_library_shared {
242 name: "mynativelib2",
243 srcs: [
244 "Test.cpp",
245 ],
246 export_include_dirs: ["include"],
247 system_shared_libs: [],
248 stl: "none",
249 }
250 `)
251
252 result.CheckSnapshot("mysdk", "android_common", "",
253 checkAllCopyRules(`
254include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800255.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
256.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
257.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
258.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000259`),
260 )
261}
262
Paul Duffina7cd8c82019-12-11 20:00:57 +0000263// Verify that when the shared library has some common and some arch specific properties that the generated
264// snapshot is optimized properly.
265func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
266 result := testSdkWithCc(t, `
267 sdk {
268 name: "mysdk",
269 native_shared_libs: ["mynativelib"],
270 }
271
272 cc_library_shared {
273 name: "mynativelib",
274 srcs: [
275 "Test.cpp",
276 "aidl/foo/bar/Test.aidl",
277 ],
278 export_include_dirs: ["include"],
279 arch: {
280 arm64: {
281 export_system_include_dirs: ["arm64/include"],
282 },
283 },
284 system_shared_libs: [],
285 stl: "none",
286 }
287 `)
288
289 result.CheckSnapshot("mysdk", "android_common", "",
290 checkAndroidBpContents(`
291// This is auto-generated. DO NOT EDIT.
292
293cc_prebuilt_library_shared {
294 name: "mysdk_mynativelib@current",
295 sdk_member_name: "mynativelib",
296 export_include_dirs: ["include/include"],
297 arch: {
298 arm64: {
299 srcs: ["arm64/lib/mynativelib.so"],
300 export_system_include_dirs: ["arm64/include/arm64/include"],
301 },
302 arm: {
303 srcs: ["arm/lib/mynativelib.so"],
304 },
305 },
306 stl: "none",
307 system_shared_libs: [],
308}
309
310cc_prebuilt_library_shared {
311 name: "mynativelib",
312 prefer: false,
313 export_include_dirs: ["include/include"],
314 arch: {
315 arm64: {
316 srcs: ["arm64/lib/mynativelib.so"],
317 export_system_include_dirs: ["arm64/include/arm64/include"],
318 },
319 arm: {
320 srcs: ["arm/lib/mynativelib.so"],
321 },
322 },
323 stl: "none",
324 system_shared_libs: [],
325}
326
327sdk_snapshot {
328 name: "mysdk@current",
329 native_shared_libs: ["mysdk_mynativelib@current"],
330}
331`),
332 checkAllCopyRules(`
333include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800334.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000335arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800336.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000337 )
338}
339
Paul Duffin25ce04b2020-01-16 11:47:25 +0000340func TestSnapshotWithCcBinary(t *testing.T) {
341 result := testSdkWithCc(t, `
342 module_exports {
343 name: "mymodule_exports",
344 native_binaries: ["mynativebinary"],
345 }
346
347 cc_binary {
348 name: "mynativebinary",
349 srcs: [
350 "Test.cpp",
351 ],
352 compile_multilib: "both",
353 system_shared_libs: [],
354 stl: "none",
355 }
356 `)
357
358 result.CheckSnapshot("mymodule_exports", "android_common", "",
359 checkAndroidBpContents(`
360// This is auto-generated. DO NOT EDIT.
361
362cc_prebuilt_binary {
363 name: "mymodule_exports_mynativebinary@current",
364 sdk_member_name: "mynativebinary",
365 compile_multilib: "both",
366 arch: {
367 arm64: {
368 srcs: ["arm64/bin/mynativebinary"],
369 },
370 arm: {
371 srcs: ["arm/bin/mynativebinary"],
372 },
373 },
374}
375
376cc_prebuilt_binary {
377 name: "mynativebinary",
378 prefer: false,
379 compile_multilib: "both",
380 arch: {
381 arm64: {
382 srcs: ["arm64/bin/mynativebinary"],
383 },
384 arm: {
385 srcs: ["arm/bin/mynativebinary"],
386 },
387 },
388}
389
390module_exports_snapshot {
391 name: "mymodule_exports@current",
392 native_binaries: ["mymodule_exports_mynativebinary@current"],
393}
394`),
395 checkAllCopyRules(`
396.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
397.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
398`),
399 )
400}
401
Paul Duffin9ab556f2019-12-11 18:42:17 +0000402func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000403 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000404 sdk {
405 name: "mysdk",
406 native_shared_libs: ["mynativelib"],
407 }
408
409 cc_library_shared {
410 name: "mynativelib",
411 srcs: [
412 "Test.cpp",
413 "aidl/foo/bar/Test.aidl",
414 ],
415 export_include_dirs: ["include"],
416 aidl: {
417 export_aidl_headers: true,
418 },
419 system_shared_libs: [],
420 stl: "none",
421 }
422 `)
423
Paul Duffin593b3c92019-12-05 14:31:48 +0000424 result.CheckSnapshot("mysdk", "android_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000425 checkAndroidBpContents(`
426// This is auto-generated. DO NOT EDIT.
427
428cc_prebuilt_library_shared {
429 name: "mysdk_mynativelib@current",
430 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000431 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000432 arch: {
433 arm64: {
434 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000435 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000436 },
437 arm: {
438 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000439 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000440 },
441 },
442 stl: "none",
443 system_shared_libs: [],
444}
445
446cc_prebuilt_library_shared {
447 name: "mynativelib",
448 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000449 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000450 arch: {
451 arm64: {
452 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000453 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000454 },
455 arm: {
456 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000457 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000458 },
459 },
460 stl: "none",
461 system_shared_libs: [],
462}
463
464sdk_snapshot {
465 name: "mysdk@current",
466 native_shared_libs: ["mysdk_mynativelib@current"],
467}
468`),
469 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000470include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800471.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
472.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
473.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
474.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
475.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
476.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
477.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
478.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 +0000479`),
480 )
481}
482
Paul Duffin9ab556f2019-12-11 18:42:17 +0000483func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000484 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
485 SkipIfNotLinux(t)
486
Paul Duffind835daa2019-11-30 17:49:09 +0000487 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000488 sdk {
489 name: "mysdk",
490 device_supported: false,
491 host_supported: true,
492 native_shared_libs: ["mynativelib"],
493 }
494
495 cc_library_shared {
496 name: "mynativelib",
497 device_supported: false,
498 host_supported: true,
499 srcs: [
500 "Test.cpp",
501 "aidl/foo/bar/Test.aidl",
502 ],
503 export_include_dirs: ["include"],
504 aidl: {
505 export_aidl_headers: true,
506 },
507 system_shared_libs: [],
508 stl: "none",
509 }
510 `)
511
Paul Duffin593b3c92019-12-05 14:31:48 +0000512 result.CheckSnapshot("mysdk", "linux_glibc_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000513 checkAndroidBpContents(`
514// This is auto-generated. DO NOT EDIT.
515
516cc_prebuilt_library_shared {
517 name: "mysdk_mynativelib@current",
518 sdk_member_name: "mynativelib",
519 device_supported: false,
520 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000521 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000522 arch: {
523 x86_64: {
524 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000525 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000526 },
527 x86: {
528 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000529 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000530 },
531 },
532 stl: "none",
533 system_shared_libs: [],
534}
535
536cc_prebuilt_library_shared {
537 name: "mynativelib",
538 prefer: false,
539 device_supported: false,
540 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000541 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000542 arch: {
543 x86_64: {
544 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000545 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000546 },
547 x86: {
548 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000549 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000550 },
551 },
552 stl: "none",
553 system_shared_libs: [],
554}
555
556sdk_snapshot {
557 name: "mysdk@current",
558 device_supported: false,
559 host_supported: true,
560 native_shared_libs: ["mysdk_mynativelib@current"],
561}
562`),
563 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000564include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000565.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000566.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
567.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
568.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
569.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000570.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
571.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
572.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
573`),
574 )
575}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000576
577func TestSnapshotWithCcStaticLibrary(t *testing.T) {
578 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000579 module_exports {
580 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000581 native_static_libs: ["mynativelib"],
582 }
583
584 cc_library_static {
585 name: "mynativelib",
586 srcs: [
587 "Test.cpp",
588 "aidl/foo/bar/Test.aidl",
589 ],
590 export_include_dirs: ["include"],
591 aidl: {
592 export_aidl_headers: true,
593 },
594 system_shared_libs: [],
595 stl: "none",
596 }
597 `)
598
Paul Duffine6029182019-12-16 17:43:48 +0000599 result.CheckSnapshot("myexports", "android_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000600 checkAndroidBpContents(`
601// This is auto-generated. DO NOT EDIT.
602
603cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000604 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000605 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000606 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000607 arch: {
608 arm64: {
609 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000610 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000611 },
612 arm: {
613 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000614 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000615 },
616 },
617 stl: "none",
618 system_shared_libs: [],
619}
620
621cc_prebuilt_library_static {
622 name: "mynativelib",
623 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000624 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000625 arch: {
626 arm64: {
627 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000628 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000629 },
630 arm: {
631 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000632 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000633 },
634 },
635 stl: "none",
636 system_shared_libs: [],
637}
638
Paul Duffine6029182019-12-16 17:43:48 +0000639module_exports_snapshot {
640 name: "myexports@current",
641 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000642}
643`),
644 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000645include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800646.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
647.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
648.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
649.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
650.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
651.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
652.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
653.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 +0000654`),
655 )
656}
657
658func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
659 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
660 SkipIfNotLinux(t)
661
662 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000663 module_exports {
664 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000665 device_supported: false,
666 host_supported: true,
667 native_static_libs: ["mynativelib"],
668 }
669
670 cc_library_static {
671 name: "mynativelib",
672 device_supported: false,
673 host_supported: true,
674 srcs: [
675 "Test.cpp",
676 "aidl/foo/bar/Test.aidl",
677 ],
678 export_include_dirs: ["include"],
679 aidl: {
680 export_aidl_headers: true,
681 },
682 system_shared_libs: [],
683 stl: "none",
684 }
685 `)
686
Paul Duffine6029182019-12-16 17:43:48 +0000687 result.CheckSnapshot("myexports", "linux_glibc_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000688 checkAndroidBpContents(`
689// This is auto-generated. DO NOT EDIT.
690
691cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000692 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000693 sdk_member_name: "mynativelib",
694 device_supported: false,
695 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000696 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000697 arch: {
698 x86_64: {
699 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000700 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000701 },
702 x86: {
703 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000704 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000705 },
706 },
707 stl: "none",
708 system_shared_libs: [],
709}
710
711cc_prebuilt_library_static {
712 name: "mynativelib",
713 prefer: false,
714 device_supported: false,
715 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000716 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000717 arch: {
718 x86_64: {
719 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000720 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000721 },
722 x86: {
723 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000724 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000725 },
726 },
727 stl: "none",
728 system_shared_libs: [],
729}
730
Paul Duffine6029182019-12-16 17:43:48 +0000731module_exports_snapshot {
732 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000733 device_supported: false,
734 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000735 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000736}
737`),
738 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000739include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000740.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000741.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
742.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
743.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
744.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000745.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
746.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
747.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
748`),
749 )
750}