blob: a14890ef259888531757123995cb27e0f1b3b758 [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 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +0000417 apex_available: ["apex1", "apex2"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000418 export_include_dirs: ["include"],
419 aidl: {
420 export_aidl_headers: true,
421 },
422 system_shared_libs: [],
423 stl: "none",
424 }
425 `)
426
Paul Duffin1356d8c2020-02-25 19:26:33 +0000427 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000428 checkAndroidBpContents(`
429// This is auto-generated. DO NOT EDIT.
430
431cc_prebuilt_library_shared {
432 name: "mysdk_mynativelib@current",
433 sdk_member_name: "mynativelib",
Paul Duffinbefa4b92020-03-04 14:22:45 +0000434 apex_available: [
435 "apex1",
436 "apex2",
437 ],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000438 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000439 arch: {
440 arm64: {
441 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000442 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000443 },
444 arm: {
445 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000446 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000447 },
448 },
449 stl: "none",
450 system_shared_libs: [],
451}
452
453cc_prebuilt_library_shared {
454 name: "mynativelib",
455 prefer: false,
Paul Duffinbefa4b92020-03-04 14:22:45 +0000456 apex_available: [
457 "apex1",
458 "apex2",
459 ],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000460 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000461 arch: {
462 arm64: {
463 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000464 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000465 },
466 arm: {
467 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000468 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000469 },
470 },
471 stl: "none",
472 system_shared_libs: [],
473}
474
475sdk_snapshot {
476 name: "mysdk@current",
477 native_shared_libs: ["mysdk_mynativelib@current"],
478}
479`),
480 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000481include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800482.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
483.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
484.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
485.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
486.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
487.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
488.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
489.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 +0000490`),
491 )
492}
493
Paul Duffin9ab556f2019-12-11 18:42:17 +0000494func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000495 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
496 SkipIfNotLinux(t)
497
Paul Duffind835daa2019-11-30 17:49:09 +0000498 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000499 sdk {
500 name: "mysdk",
501 device_supported: false,
502 host_supported: true,
503 native_shared_libs: ["mynativelib"],
504 }
505
506 cc_library_shared {
507 name: "mynativelib",
508 device_supported: false,
509 host_supported: true,
510 srcs: [
511 "Test.cpp",
512 "aidl/foo/bar/Test.aidl",
513 ],
514 export_include_dirs: ["include"],
515 aidl: {
516 export_aidl_headers: true,
517 },
518 system_shared_libs: [],
519 stl: "none",
520 }
521 `)
522
Paul Duffin1356d8c2020-02-25 19:26:33 +0000523 result.CheckSnapshot("mysdk", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000524 checkAndroidBpContents(`
525// This is auto-generated. DO NOT EDIT.
526
527cc_prebuilt_library_shared {
528 name: "mysdk_mynativelib@current",
529 sdk_member_name: "mynativelib",
530 device_supported: false,
531 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000532 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000533 arch: {
534 x86_64: {
535 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000536 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000537 },
538 x86: {
539 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000540 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000541 },
542 },
543 stl: "none",
544 system_shared_libs: [],
545}
546
547cc_prebuilt_library_shared {
548 name: "mynativelib",
549 prefer: false,
550 device_supported: false,
551 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000552 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000553 arch: {
554 x86_64: {
555 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000556 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000557 },
558 x86: {
559 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000560 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000561 },
562 },
563 stl: "none",
564 system_shared_libs: [],
565}
566
567sdk_snapshot {
568 name: "mysdk@current",
569 device_supported: false,
570 host_supported: true,
571 native_shared_libs: ["mysdk_mynativelib@current"],
572}
573`),
574 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000575include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000576.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000577.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
578.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
579.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
580.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000581.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
582.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
583.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
584`),
585 )
586}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000587
588func TestSnapshotWithCcStaticLibrary(t *testing.T) {
589 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000590 module_exports {
591 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000592 native_static_libs: ["mynativelib"],
593 }
594
595 cc_library_static {
596 name: "mynativelib",
597 srcs: [
598 "Test.cpp",
599 "aidl/foo/bar/Test.aidl",
600 ],
601 export_include_dirs: ["include"],
602 aidl: {
603 export_aidl_headers: true,
604 },
605 system_shared_libs: [],
606 stl: "none",
607 }
608 `)
609
Paul Duffin1356d8c2020-02-25 19:26:33 +0000610 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000611 checkAndroidBpContents(`
612// This is auto-generated. DO NOT EDIT.
613
614cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000615 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000616 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000617 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000618 arch: {
619 arm64: {
620 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000621 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000622 },
623 arm: {
624 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000625 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000626 },
627 },
628 stl: "none",
629 system_shared_libs: [],
630}
631
632cc_prebuilt_library_static {
633 name: "mynativelib",
634 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000635 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000636 arch: {
637 arm64: {
638 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000639 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000640 },
641 arm: {
642 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000643 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000644 },
645 },
646 stl: "none",
647 system_shared_libs: [],
648}
649
Paul Duffine6029182019-12-16 17:43:48 +0000650module_exports_snapshot {
651 name: "myexports@current",
652 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000653}
654`),
655 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000656include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800657.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
658.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
659.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
660.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
661.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
662.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
663.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
664.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 +0000665`),
666 )
667}
668
669func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
670 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
671 SkipIfNotLinux(t)
672
673 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000674 module_exports {
675 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000676 device_supported: false,
677 host_supported: true,
678 native_static_libs: ["mynativelib"],
679 }
680
681 cc_library_static {
682 name: "mynativelib",
683 device_supported: false,
684 host_supported: true,
685 srcs: [
686 "Test.cpp",
687 "aidl/foo/bar/Test.aidl",
688 ],
689 export_include_dirs: ["include"],
690 aidl: {
691 export_aidl_headers: true,
692 },
693 system_shared_libs: [],
694 stl: "none",
695 }
696 `)
697
Paul Duffin1356d8c2020-02-25 19:26:33 +0000698 result.CheckSnapshot("myexports", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000699 checkAndroidBpContents(`
700// This is auto-generated. DO NOT EDIT.
701
702cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000703 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000704 sdk_member_name: "mynativelib",
705 device_supported: false,
706 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000707 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000708 arch: {
709 x86_64: {
710 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000711 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000712 },
713 x86: {
714 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000715 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000716 },
717 },
718 stl: "none",
719 system_shared_libs: [],
720}
721
722cc_prebuilt_library_static {
723 name: "mynativelib",
724 prefer: false,
725 device_supported: false,
726 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000727 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000728 arch: {
729 x86_64: {
730 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000731 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000732 },
733 x86: {
734 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000735 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000736 },
737 },
738 stl: "none",
739 system_shared_libs: [],
740}
741
Paul Duffine6029182019-12-16 17:43:48 +0000742module_exports_snapshot {
743 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000744 device_supported: false,
745 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000746 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000747}
748`),
749 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000750include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000751.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000752.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
753.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
754.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
755.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000756.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
757.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
758.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
759`),
760 )
761}
Paul Duffin13ad94f2020-02-19 16:19:27 +0000762
763func TestHostSnapshotWithMultiLib64(t *testing.T) {
764 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
765 SkipIfNotLinux(t)
766
767 result := testSdkWithCc(t, `
768 module_exports {
769 name: "myexports",
770 device_supported: false,
771 host_supported: true,
772 target: {
773 host: {
774 compile_multilib: "64",
775 },
776 },
777 native_static_libs: ["mynativelib"],
778 }
779
780 cc_library_static {
781 name: "mynativelib",
782 device_supported: false,
783 host_supported: true,
784 srcs: [
785 "Test.cpp",
786 "aidl/foo/bar/Test.aidl",
787 ],
788 export_include_dirs: ["include"],
789 aidl: {
790 export_aidl_headers: true,
791 },
792 system_shared_libs: [],
793 stl: "none",
794 }
795 `)
796
Paul Duffin1356d8c2020-02-25 19:26:33 +0000797 result.CheckSnapshot("myexports", "",
Paul Duffin13ad94f2020-02-19 16:19:27 +0000798 checkAndroidBpContents(`
799// This is auto-generated. DO NOT EDIT.
800
801cc_prebuilt_library_static {
802 name: "myexports_mynativelib@current",
803 sdk_member_name: "mynativelib",
804 device_supported: false,
805 host_supported: true,
806 export_include_dirs: ["include/include"],
807 arch: {
808 x86_64: {
809 srcs: ["x86_64/lib/mynativelib.a"],
810 export_include_dirs: ["x86_64/include_gen/mynativelib"],
811 },
812 },
813 stl: "none",
814 system_shared_libs: [],
815}
816
817cc_prebuilt_library_static {
818 name: "mynativelib",
819 prefer: false,
820 device_supported: false,
821 host_supported: true,
822 export_include_dirs: ["include/include"],
823 arch: {
824 x86_64: {
825 srcs: ["x86_64/lib/mynativelib.a"],
826 export_include_dirs: ["x86_64/include_gen/mynativelib"],
827 },
828 },
829 stl: "none",
830 system_shared_libs: [],
831}
832
833module_exports_snapshot {
834 name: "myexports@current",
835 device_supported: false,
836 host_supported: true,
837 target: {
838 host: {
839 compile_multilib: "64",
840 },
841 },
842 native_static_libs: ["myexports_mynativelib@current"],
843}`),
844 checkAllCopyRules(`
845include/Test.h -> include/include/Test.h
846.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
847.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
848.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
849.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
850`),
851 )
852}
Paul Duffin91756d22020-02-21 16:29:57 +0000853
854func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
855 result := testSdkWithCc(t, `
856 sdk {
857 name: "mysdk",
858 native_header_libs: ["mynativeheaders"],
859 }
860
861 cc_library_headers {
862 name: "mynativeheaders",
863 export_include_dirs: ["include"],
864 system_shared_libs: [],
865 stl: "none",
866 }
867 `)
868
Paul Duffin1356d8c2020-02-25 19:26:33 +0000869 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +0000870 checkAndroidBpContents(`
871// This is auto-generated. DO NOT EDIT.
872
873cc_prebuilt_library_headers {
874 name: "mysdk_mynativeheaders@current",
875 sdk_member_name: "mynativeheaders",
876 export_include_dirs: ["include/include"],
877 stl: "none",
878 system_shared_libs: [],
879}
880
881cc_prebuilt_library_headers {
882 name: "mynativeheaders",
883 prefer: false,
884 export_include_dirs: ["include/include"],
885 stl: "none",
886 system_shared_libs: [],
887}
888
889sdk_snapshot {
890 name: "mysdk@current",
891 native_header_libs: ["mysdk_mynativeheaders@current"],
892}
893`),
894 checkAllCopyRules(`
895include/Test.h -> include/include/Test.h
896`),
897 )
898}
899
900func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
901 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
902 SkipIfNotLinux(t)
903
904 result := testSdkWithCc(t, `
905 sdk {
906 name: "mysdk",
907 device_supported: false,
908 host_supported: true,
909 native_header_libs: ["mynativeheaders"],
910 }
911
912 cc_library_headers {
913 name: "mynativeheaders",
914 device_supported: false,
915 host_supported: true,
916 export_include_dirs: ["include"],
917 system_shared_libs: [],
918 stl: "none",
919 }
920 `)
921
Paul Duffin1356d8c2020-02-25 19:26:33 +0000922 result.CheckSnapshot("mysdk", "",
Paul Duffin91756d22020-02-21 16:29:57 +0000923 checkAndroidBpContents(`
924// This is auto-generated. DO NOT EDIT.
925
926cc_prebuilt_library_headers {
927 name: "mysdk_mynativeheaders@current",
928 sdk_member_name: "mynativeheaders",
929 device_supported: false,
930 host_supported: true,
931 export_include_dirs: ["include/include"],
932 stl: "none",
933 system_shared_libs: [],
934}
935
936cc_prebuilt_library_headers {
937 name: "mynativeheaders",
938 prefer: false,
939 device_supported: false,
940 host_supported: true,
941 export_include_dirs: ["include/include"],
942 stl: "none",
943 system_shared_libs: [],
944}
945
946sdk_snapshot {
947 name: "mysdk@current",
948 device_supported: false,
949 host_supported: true,
950 native_header_libs: ["mysdk_mynativeheaders@current"],
951}
952`),
953 checkAllCopyRules(`
954include/Test.h -> include/include/Test.h
955`),
956 )
957}