blob: 45b548ccb6c2e25abc5e1ef6e7f96d9da443ac59 [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
Paul Duffind835daa2019-11-30 17:49:09 +000024func testSdkWithCc(t *testing.T, bp string) *testSdkResult {
25 t.Helper()
26
27 fs := map[string][]byte{
Paul Duffina7cd8c82019-12-11 20:00:57 +000028 "Test.cpp": nil,
29 "include/Test.h": nil,
30 "arm64/include/Arm64Test.h": nil,
31 "libfoo.so": nil,
32 "aidl/foo/bar/Test.aidl": nil,
Paul Duffind835daa2019-11-30 17:49:09 +000033 }
34 return testSdkWithFs(t, bp, fs)
35}
36
Paul Duffina80fdec2019-12-03 15:25:00 +000037// Contains tests for SDK members provided by the cc package.
38
39func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000040 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000041 sdk {
42 name: "mysdk",
43 native_shared_libs: ["sdkmember"],
44 }
45
46 cc_library_shared {
47 name: "sdkmember",
48 srcs: ["Test.cpp"],
49 system_shared_libs: [],
50 stl: "none",
51 }
52 `)
53
Colin Cross7113d202019-11-20 16:39:12 -080054 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
55 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000056
57 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000058 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000059 for _, bp := range buildParams {
60 if bp.Input != nil {
61 inputs = append(inputs, bp.Input.String())
62 }
63 }
64
65 // ensure that both 32/64 outputs are inputs of the sdk snapshot
66 ensureListContains(t, inputs, armOutput.String())
67 ensureListContains(t, inputs, arm64Output.String())
68}
69
70func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000071 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000072 sdk {
73 name: "mysdk",
74 native_shared_libs: ["sdkmember"],
75 }
76
Paul Duffina0843f62019-12-13 19:50:38 +000077 cc_library_shared {
78 name: "sdkmember",
Colin Crossf9aabd72020-02-15 11:29:50 -080079 system_shared_libs: [],
Paul Duffina0843f62019-12-13 19:50:38 +000080 }
81
Paul Duffina80fdec2019-12-03 15:25:00 +000082 sdk_snapshot {
83 name: "mysdk@1",
84 native_shared_libs: ["sdkmember_mysdk_1"],
85 }
86
87 sdk_snapshot {
88 name: "mysdk@2",
89 native_shared_libs: ["sdkmember_mysdk_2"],
90 }
91
92 cc_prebuilt_library_shared {
93 name: "sdkmember",
94 srcs: ["libfoo.so"],
95 prefer: false,
96 system_shared_libs: [],
97 stl: "none",
98 }
99
100 cc_prebuilt_library_shared {
101 name: "sdkmember_mysdk_1",
102 sdk_member_name: "sdkmember",
103 srcs: ["libfoo.so"],
104 system_shared_libs: [],
105 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000106 // TODO: remove //apex_available:platform
107 apex_available: [
108 "//apex_available:platform",
109 "myapex",
110 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000111 }
112
113 cc_prebuilt_library_shared {
114 name: "sdkmember_mysdk_2",
115 sdk_member_name: "sdkmember",
116 srcs: ["libfoo.so"],
117 system_shared_libs: [],
118 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000119 // TODO: remove //apex_available:platform
120 apex_available: [
121 "//apex_available:platform",
122 "myapex2",
123 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000124 }
125
126 cc_library_shared {
127 name: "mycpplib",
128 srcs: ["Test.cpp"],
129 shared_libs: ["sdkmember"],
130 system_shared_libs: [],
131 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000132 apex_available: [
133 "myapex",
134 "myapex2",
135 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000136 }
137
138 apex {
139 name: "myapex",
140 native_shared_libs: ["mycpplib"],
141 uses_sdks: ["mysdk@1"],
142 key: "myapex.key",
143 certificate: ":myapex.cert",
144 }
145
146 apex {
147 name: "myapex2",
148 native_shared_libs: ["mycpplib"],
149 uses_sdks: ["mysdk@2"],
150 key: "myapex.key",
151 certificate: ":myapex.cert",
152 }
153 `)
154
Colin Cross7113d202019-11-20 16:39:12 -0800155 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output
156 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_myapex2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000157
Colin Cross7113d202019-11-20 16:39:12 -0800158 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex")
159 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000160
161 // Depending on the uses_sdks value, different libs are linked
162 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
163 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
164}
165
Paul Duffina0843f62019-12-13 19:50:38 +0000166// Make sure the sdk can use host specific cc libraries static/shared and both.
167func TestHostSdkWithCc(t *testing.T) {
168 testSdkWithCc(t, `
169 sdk {
170 name: "mysdk",
171 device_supported: false,
172 host_supported: true,
173 native_shared_libs: ["sdkshared"],
174 native_static_libs: ["sdkstatic"],
175 }
176
177 cc_library_host_shared {
178 name: "sdkshared",
179 system_shared_libs: [],
180 stl: "none",
181 }
182
183 cc_library_host_static {
184 name: "sdkstatic",
185 system_shared_libs: [],
186 stl: "none",
187 }
188 `)
189}
190
191// Make sure the sdk can use cc libraries static/shared and both.
192func TestSdkWithCc(t *testing.T) {
193 testSdkWithCc(t, `
194 sdk {
195 name: "mysdk",
196 native_shared_libs: ["sdkshared", "sdkboth1"],
197 native_static_libs: ["sdkstatic", "sdkboth2"],
198 }
199
200 cc_library_shared {
201 name: "sdkshared",
202 system_shared_libs: [],
203 stl: "none",
204 }
205
206 cc_library_static {
207 name: "sdkstatic",
208 system_shared_libs: [],
209 stl: "none",
210 }
211
212 cc_library {
213 name: "sdkboth1",
214 system_shared_libs: [],
215 stl: "none",
216 }
217
218 cc_library {
219 name: "sdkboth2",
220 system_shared_libs: [],
221 stl: "none",
222 }
223 `)
224}
225
Paul Duffinc62a5102019-12-11 18:34:15 +0000226func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
227 result := testSdkWithCc(t, `
228 sdk {
229 name: "mysdk",
230 native_shared_libs: ["mynativelib1", "mynativelib2"],
231 }
232
233 cc_library_shared {
234 name: "mynativelib1",
235 srcs: [
236 "Test.cpp",
237 ],
238 export_include_dirs: ["include"],
239 system_shared_libs: [],
240 stl: "none",
241 }
242
243 cc_library_shared {
244 name: "mynativelib2",
245 srcs: [
246 "Test.cpp",
247 ],
248 export_include_dirs: ["include"],
249 system_shared_libs: [],
250 stl: "none",
251 }
252 `)
253
Paul Duffin1356d8c2020-02-25 19:26:33 +0000254 result.CheckSnapshot("mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000255 checkAllCopyRules(`
256include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800257.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
258.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
259.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
260.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000261`),
262 )
263}
264
Paul Duffina7cd8c82019-12-11 20:00:57 +0000265// Verify that when the shared library has some common and some arch specific properties that the generated
266// snapshot is optimized properly.
267func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
268 result := testSdkWithCc(t, `
269 sdk {
270 name: "mysdk",
271 native_shared_libs: ["mynativelib"],
272 }
273
274 cc_library_shared {
275 name: "mynativelib",
276 srcs: [
277 "Test.cpp",
278 "aidl/foo/bar/Test.aidl",
279 ],
280 export_include_dirs: ["include"],
281 arch: {
282 arm64: {
283 export_system_include_dirs: ["arm64/include"],
284 },
285 },
286 system_shared_libs: [],
287 stl: "none",
288 }
289 `)
290
Paul Duffin1356d8c2020-02-25 19:26:33 +0000291 result.CheckSnapshot("mysdk", "",
Paul Duffina7cd8c82019-12-11 20:00:57 +0000292 checkAndroidBpContents(`
293// This is auto-generated. DO NOT EDIT.
294
295cc_prebuilt_library_shared {
296 name: "mysdk_mynativelib@current",
297 sdk_member_name: "mynativelib",
298 export_include_dirs: ["include/include"],
299 arch: {
300 arm64: {
301 srcs: ["arm64/lib/mynativelib.so"],
302 export_system_include_dirs: ["arm64/include/arm64/include"],
303 },
304 arm: {
305 srcs: ["arm/lib/mynativelib.so"],
306 },
307 },
308 stl: "none",
309 system_shared_libs: [],
310}
311
312cc_prebuilt_library_shared {
313 name: "mynativelib",
314 prefer: false,
315 export_include_dirs: ["include/include"],
316 arch: {
317 arm64: {
318 srcs: ["arm64/lib/mynativelib.so"],
319 export_system_include_dirs: ["arm64/include/arm64/include"],
320 },
321 arm: {
322 srcs: ["arm/lib/mynativelib.so"],
323 },
324 },
325 stl: "none",
326 system_shared_libs: [],
327}
328
329sdk_snapshot {
330 name: "mysdk@current",
331 native_shared_libs: ["mysdk_mynativelib@current"],
332}
333`),
334 checkAllCopyRules(`
335include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800336.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000337arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800338.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000339 )
340}
341
Paul Duffin25ce04b2020-01-16 11:47:25 +0000342func TestSnapshotWithCcBinary(t *testing.T) {
343 result := testSdkWithCc(t, `
344 module_exports {
345 name: "mymodule_exports",
346 native_binaries: ["mynativebinary"],
347 }
348
349 cc_binary {
350 name: "mynativebinary",
351 srcs: [
352 "Test.cpp",
353 ],
354 compile_multilib: "both",
355 system_shared_libs: [],
356 stl: "none",
357 }
358 `)
359
Paul Duffin1356d8c2020-02-25 19:26:33 +0000360 result.CheckSnapshot("mymodule_exports", "",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000361 checkAndroidBpContents(`
362// This is auto-generated. DO NOT EDIT.
363
364cc_prebuilt_binary {
365 name: "mymodule_exports_mynativebinary@current",
366 sdk_member_name: "mynativebinary",
367 compile_multilib: "both",
368 arch: {
369 arm64: {
370 srcs: ["arm64/bin/mynativebinary"],
371 },
372 arm: {
373 srcs: ["arm/bin/mynativebinary"],
374 },
375 },
376}
377
378cc_prebuilt_binary {
379 name: "mynativebinary",
380 prefer: false,
381 compile_multilib: "both",
382 arch: {
383 arm64: {
384 srcs: ["arm64/bin/mynativebinary"],
385 },
386 arm: {
387 srcs: ["arm/bin/mynativebinary"],
388 },
389 },
390}
391
392module_exports_snapshot {
393 name: "mymodule_exports@current",
394 native_binaries: ["mymodule_exports_mynativebinary@current"],
395}
396`),
397 checkAllCopyRules(`
398.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
399.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
400`),
401 )
402}
403
Paul Duffin9ab556f2019-12-11 18:42:17 +0000404func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000405 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000406 sdk {
407 name: "mysdk",
408 native_shared_libs: ["mynativelib"],
409 }
410
411 cc_library_shared {
412 name: "mynativelib",
413 srcs: [
414 "Test.cpp",
415 "aidl/foo/bar/Test.aidl",
416 ],
417 export_include_dirs: ["include"],
418 aidl: {
419 export_aidl_headers: true,
420 },
421 system_shared_libs: [],
422 stl: "none",
423 }
424 `)
425
Paul Duffin1356d8c2020-02-25 19:26:33 +0000426 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000427 checkAndroidBpContents(`
428// This is auto-generated. DO NOT EDIT.
429
430cc_prebuilt_library_shared {
431 name: "mysdk_mynativelib@current",
432 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000433 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000434 arch: {
435 arm64: {
436 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000437 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000438 },
439 arm: {
440 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000441 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000442 },
443 },
444 stl: "none",
445 system_shared_libs: [],
446}
447
448cc_prebuilt_library_shared {
449 name: "mynativelib",
450 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000451 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000452 arch: {
453 arm64: {
454 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000455 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000456 },
457 arm: {
458 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000459 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000460 },
461 },
462 stl: "none",
463 system_shared_libs: [],
464}
465
466sdk_snapshot {
467 name: "mysdk@current",
468 native_shared_libs: ["mysdk_mynativelib@current"],
469}
470`),
471 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000472include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800473.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
474.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
475.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
476.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
477.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
478.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
479.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
480.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 +0000481`),
482 )
483}
484
Paul Duffin9ab556f2019-12-11 18:42:17 +0000485func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000486 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
487 SkipIfNotLinux(t)
488
Paul Duffind835daa2019-11-30 17:49:09 +0000489 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000490 sdk {
491 name: "mysdk",
492 device_supported: false,
493 host_supported: true,
494 native_shared_libs: ["mynativelib"],
495 }
496
497 cc_library_shared {
498 name: "mynativelib",
499 device_supported: false,
500 host_supported: true,
501 srcs: [
502 "Test.cpp",
503 "aidl/foo/bar/Test.aidl",
504 ],
505 export_include_dirs: ["include"],
506 aidl: {
507 export_aidl_headers: true,
508 },
509 system_shared_libs: [],
510 stl: "none",
511 }
512 `)
513
Paul Duffin1356d8c2020-02-25 19:26:33 +0000514 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000515 checkAndroidBpContents(`
516// This is auto-generated. DO NOT EDIT.
517
518cc_prebuilt_library_shared {
519 name: "mysdk_mynativelib@current",
520 sdk_member_name: "mynativelib",
521 device_supported: false,
522 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000523 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000524 arch: {
525 x86_64: {
526 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000527 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000528 },
529 x86: {
530 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000531 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000532 },
533 },
534 stl: "none",
535 system_shared_libs: [],
536}
537
538cc_prebuilt_library_shared {
539 name: "mynativelib",
540 prefer: false,
541 device_supported: false,
542 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000543 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000544 arch: {
545 x86_64: {
546 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000547 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000548 },
549 x86: {
550 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000551 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000552 },
553 },
554 stl: "none",
555 system_shared_libs: [],
556}
557
558sdk_snapshot {
559 name: "mysdk@current",
560 device_supported: false,
561 host_supported: true,
562 native_shared_libs: ["mysdk_mynativelib@current"],
563}
564`),
565 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000566include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000567.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000568.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
569.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
570.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
571.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000572.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
573.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
574.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
575`),
576 )
577}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000578
579func TestSnapshotWithCcStaticLibrary(t *testing.T) {
580 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000581 module_exports {
582 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000583 native_static_libs: ["mynativelib"],
584 }
585
586 cc_library_static {
587 name: "mynativelib",
588 srcs: [
589 "Test.cpp",
590 "aidl/foo/bar/Test.aidl",
591 ],
592 export_include_dirs: ["include"],
593 aidl: {
594 export_aidl_headers: true,
595 },
596 system_shared_libs: [],
597 stl: "none",
598 }
599 `)
600
Paul Duffin1356d8c2020-02-25 19:26:33 +0000601 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000602 checkAndroidBpContents(`
603// This is auto-generated. DO NOT EDIT.
604
605cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000606 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000607 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000608 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000609 arch: {
610 arm64: {
611 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000612 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000613 },
614 arm: {
615 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000616 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000617 },
618 },
619 stl: "none",
620 system_shared_libs: [],
621}
622
623cc_prebuilt_library_static {
624 name: "mynativelib",
625 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000626 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000627 arch: {
628 arm64: {
629 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000630 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000631 },
632 arm: {
633 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000634 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000635 },
636 },
637 stl: "none",
638 system_shared_libs: [],
639}
640
Paul Duffine6029182019-12-16 17:43:48 +0000641module_exports_snapshot {
642 name: "myexports@current",
643 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000644}
645`),
646 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000647include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800648.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
649.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
650.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
651.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
652.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
653.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
654.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
655.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 +0000656`),
657 )
658}
659
660func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
661 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
662 SkipIfNotLinux(t)
663
664 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000665 module_exports {
666 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000667 device_supported: false,
668 host_supported: true,
669 native_static_libs: ["mynativelib"],
670 }
671
672 cc_library_static {
673 name: "mynativelib",
674 device_supported: false,
675 host_supported: true,
676 srcs: [
677 "Test.cpp",
678 "aidl/foo/bar/Test.aidl",
679 ],
680 export_include_dirs: ["include"],
681 aidl: {
682 export_aidl_headers: true,
683 },
684 system_shared_libs: [],
685 stl: "none",
686 }
687 `)
688
Paul Duffin1356d8c2020-02-25 19:26:33 +0000689 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000690 checkAndroidBpContents(`
691// This is auto-generated. DO NOT EDIT.
692
693cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000694 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000695 sdk_member_name: "mynativelib",
696 device_supported: false,
697 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000698 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000699 arch: {
700 x86_64: {
701 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000702 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000703 },
704 x86: {
705 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000706 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000707 },
708 },
709 stl: "none",
710 system_shared_libs: [],
711}
712
713cc_prebuilt_library_static {
714 name: "mynativelib",
715 prefer: false,
716 device_supported: false,
717 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000718 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000719 arch: {
720 x86_64: {
721 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000722 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000723 },
724 x86: {
725 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000726 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000727 },
728 },
729 stl: "none",
730 system_shared_libs: [],
731}
732
Paul Duffine6029182019-12-16 17:43:48 +0000733module_exports_snapshot {
734 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000735 device_supported: false,
736 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000737 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000738}
739`),
740 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000741include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000742.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000743.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
744.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
745.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
746.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000747.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
748.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
749.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
750`),
751 )
752}
Paul Duffin13ad94f2020-02-19 16:19:27 +0000753
754func TestHostSnapshotWithMultiLib64(t *testing.T) {
755 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
756 SkipIfNotLinux(t)
757
758 result := testSdkWithCc(t, `
759 module_exports {
760 name: "myexports",
761 device_supported: false,
762 host_supported: true,
763 target: {
764 host: {
765 compile_multilib: "64",
766 },
767 },
768 native_static_libs: ["mynativelib"],
769 }
770
771 cc_library_static {
772 name: "mynativelib",
773 device_supported: false,
774 host_supported: true,
775 srcs: [
776 "Test.cpp",
777 "aidl/foo/bar/Test.aidl",
778 ],
779 export_include_dirs: ["include"],
780 aidl: {
781 export_aidl_headers: true,
782 },
783 system_shared_libs: [],
784 stl: "none",
785 }
786 `)
787
Paul Duffin1356d8c2020-02-25 19:26:33 +0000788 result.CheckSnapshot("myexports", "",
Paul Duffin13ad94f2020-02-19 16:19:27 +0000789 checkAndroidBpContents(`
790// This is auto-generated. DO NOT EDIT.
791
792cc_prebuilt_library_static {
793 name: "myexports_mynativelib@current",
794 sdk_member_name: "mynativelib",
795 device_supported: false,
796 host_supported: true,
797 export_include_dirs: ["include/include"],
798 arch: {
799 x86_64: {
800 srcs: ["x86_64/lib/mynativelib.a"],
801 export_include_dirs: ["x86_64/include_gen/mynativelib"],
802 },
803 },
804 stl: "none",
805 system_shared_libs: [],
806}
807
808cc_prebuilt_library_static {
809 name: "mynativelib",
810 prefer: false,
811 device_supported: false,
812 host_supported: true,
813 export_include_dirs: ["include/include"],
814 arch: {
815 x86_64: {
816 srcs: ["x86_64/lib/mynativelib.a"],
817 export_include_dirs: ["x86_64/include_gen/mynativelib"],
818 },
819 },
820 stl: "none",
821 system_shared_libs: [],
822}
823
824module_exports_snapshot {
825 name: "myexports@current",
826 device_supported: false,
827 host_supported: true,
828 target: {
829 host: {
830 compile_multilib: "64",
831 },
832 },
833 native_static_libs: ["myexports_mynativelib@current"],
834}`),
835 checkAllCopyRules(`
836include/Test.h -> include/include/Test.h
837.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
838.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
839.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
840.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
841`),
842 )
843}
Paul Duffin91756d22020-02-21 16:29:57 +0000844
845func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
846 result := testSdkWithCc(t, `
847 sdk {
848 name: "mysdk",
849 native_header_libs: ["mynativeheaders"],
850 }
851
852 cc_library_headers {
853 name: "mynativeheaders",
854 export_include_dirs: ["include"],
855 system_shared_libs: [],
856 stl: "none",
857 }
858 `)
859
Paul Duffin1356d8c2020-02-25 19:26:33 +0000860 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +0000861 checkAndroidBpContents(`
862// This is auto-generated. DO NOT EDIT.
863
864cc_prebuilt_library_headers {
865 name: "mysdk_mynativeheaders@current",
866 sdk_member_name: "mynativeheaders",
867 export_include_dirs: ["include/include"],
868 stl: "none",
869 system_shared_libs: [],
870}
871
872cc_prebuilt_library_headers {
873 name: "mynativeheaders",
874 prefer: false,
875 export_include_dirs: ["include/include"],
876 stl: "none",
877 system_shared_libs: [],
878}
879
880sdk_snapshot {
881 name: "mysdk@current",
882 native_header_libs: ["mysdk_mynativeheaders@current"],
883}
884`),
885 checkAllCopyRules(`
886include/Test.h -> include/include/Test.h
887`),
888 )
889}
890
891func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
892 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
893 SkipIfNotLinux(t)
894
895 result := testSdkWithCc(t, `
896 sdk {
897 name: "mysdk",
898 device_supported: false,
899 host_supported: true,
900 native_header_libs: ["mynativeheaders"],
901 }
902
903 cc_library_headers {
904 name: "mynativeheaders",
905 device_supported: false,
906 host_supported: true,
907 export_include_dirs: ["include"],
908 system_shared_libs: [],
909 stl: "none",
910 }
911 `)
912
Paul Duffin1356d8c2020-02-25 19:26:33 +0000913 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +0000914 checkAndroidBpContents(`
915// This is auto-generated. DO NOT EDIT.
916
917cc_prebuilt_library_headers {
918 name: "mysdk_mynativeheaders@current",
919 sdk_member_name: "mynativeheaders",
920 device_supported: false,
921 host_supported: true,
922 export_include_dirs: ["include/include"],
923 stl: "none",
924 system_shared_libs: [],
925}
926
927cc_prebuilt_library_headers {
928 name: "mynativeheaders",
929 prefer: false,
930 device_supported: false,
931 host_supported: true,
932 export_include_dirs: ["include/include"],
933 stl: "none",
934 system_shared_libs: [],
935}
936
937sdk_snapshot {
938 name: "mysdk@current",
939 device_supported: false,
940 host_supported: true,
941 native_header_libs: ["mysdk_mynativeheaders@current"],
942}
943`),
944 checkAllCopyRules(`
945include/Test.h -> include/include/Test.h
946`),
947 )
948}