blob: 255ac08a59cabe10a8807575178e4be53f992511 [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",
104 }
105
106 cc_prebuilt_library_shared {
107 name: "sdkmember_mysdk_2",
108 sdk_member_name: "sdkmember",
109 srcs: ["libfoo.so"],
110 system_shared_libs: [],
111 stl: "none",
112 }
113
114 cc_library_shared {
115 name: "mycpplib",
116 srcs: ["Test.cpp"],
117 shared_libs: ["sdkmember"],
118 system_shared_libs: [],
119 stl: "none",
120 }
121
122 apex {
123 name: "myapex",
124 native_shared_libs: ["mycpplib"],
125 uses_sdks: ["mysdk@1"],
126 key: "myapex.key",
127 certificate: ":myapex.cert",
128 }
129
130 apex {
131 name: "myapex2",
132 native_shared_libs: ["mycpplib"],
133 uses_sdks: ["mysdk@2"],
134 key: "myapex.key",
135 certificate: ":myapex.cert",
136 }
137 `)
138
Colin Cross7113d202019-11-20 16:39:12 -0800139 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output
140 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_myapex2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000141
Colin Cross7113d202019-11-20 16:39:12 -0800142 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex")
143 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_myapex2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000144
145 // Depending on the uses_sdks value, different libs are linked
146 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
147 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
148}
149
Paul Duffina0843f62019-12-13 19:50:38 +0000150// Make sure the sdk can use host specific cc libraries static/shared and both.
151func TestHostSdkWithCc(t *testing.T) {
152 testSdkWithCc(t, `
153 sdk {
154 name: "mysdk",
155 device_supported: false,
156 host_supported: true,
157 native_shared_libs: ["sdkshared"],
158 native_static_libs: ["sdkstatic"],
159 }
160
161 cc_library_host_shared {
162 name: "sdkshared",
163 system_shared_libs: [],
164 stl: "none",
165 }
166
167 cc_library_host_static {
168 name: "sdkstatic",
169 system_shared_libs: [],
170 stl: "none",
171 }
172 `)
173}
174
175// Make sure the sdk can use cc libraries static/shared and both.
176func TestSdkWithCc(t *testing.T) {
177 testSdkWithCc(t, `
178 sdk {
179 name: "mysdk",
180 native_shared_libs: ["sdkshared", "sdkboth1"],
181 native_static_libs: ["sdkstatic", "sdkboth2"],
182 }
183
184 cc_library_shared {
185 name: "sdkshared",
186 system_shared_libs: [],
187 stl: "none",
188 }
189
190 cc_library_static {
191 name: "sdkstatic",
192 system_shared_libs: [],
193 stl: "none",
194 }
195
196 cc_library {
197 name: "sdkboth1",
198 system_shared_libs: [],
199 stl: "none",
200 }
201
202 cc_library {
203 name: "sdkboth2",
204 system_shared_libs: [],
205 stl: "none",
206 }
207 `)
208}
209
Paul Duffinc62a5102019-12-11 18:34:15 +0000210func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
211 result := testSdkWithCc(t, `
212 sdk {
213 name: "mysdk",
214 native_shared_libs: ["mynativelib1", "mynativelib2"],
215 }
216
217 cc_library_shared {
218 name: "mynativelib1",
219 srcs: [
220 "Test.cpp",
221 ],
222 export_include_dirs: ["include"],
223 system_shared_libs: [],
224 stl: "none",
225 }
226
227 cc_library_shared {
228 name: "mynativelib2",
229 srcs: [
230 "Test.cpp",
231 ],
232 export_include_dirs: ["include"],
233 system_shared_libs: [],
234 stl: "none",
235 }
236 `)
237
238 result.CheckSnapshot("mysdk", "android_common", "",
239 checkAllCopyRules(`
240include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800241.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
242.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
243.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
244.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000245`),
246 )
247}
248
Paul Duffina7cd8c82019-12-11 20:00:57 +0000249// Verify that when the shared library has some common and some arch specific properties that the generated
250// snapshot is optimized properly.
251func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
252 result := testSdkWithCc(t, `
253 sdk {
254 name: "mysdk",
255 native_shared_libs: ["mynativelib"],
256 }
257
258 cc_library_shared {
259 name: "mynativelib",
260 srcs: [
261 "Test.cpp",
262 "aidl/foo/bar/Test.aidl",
263 ],
264 export_include_dirs: ["include"],
265 arch: {
266 arm64: {
267 export_system_include_dirs: ["arm64/include"],
268 },
269 },
270 system_shared_libs: [],
271 stl: "none",
272 }
273 `)
274
275 result.CheckSnapshot("mysdk", "android_common", "",
276 checkAndroidBpContents(`
277// This is auto-generated. DO NOT EDIT.
278
279cc_prebuilt_library_shared {
280 name: "mysdk_mynativelib@current",
281 sdk_member_name: "mynativelib",
282 export_include_dirs: ["include/include"],
283 arch: {
284 arm64: {
285 srcs: ["arm64/lib/mynativelib.so"],
286 export_system_include_dirs: ["arm64/include/arm64/include"],
287 },
288 arm: {
289 srcs: ["arm/lib/mynativelib.so"],
290 },
291 },
292 stl: "none",
293 system_shared_libs: [],
294}
295
296cc_prebuilt_library_shared {
297 name: "mynativelib",
298 prefer: false,
299 export_include_dirs: ["include/include"],
300 arch: {
301 arm64: {
302 srcs: ["arm64/lib/mynativelib.so"],
303 export_system_include_dirs: ["arm64/include/arm64/include"],
304 },
305 arm: {
306 srcs: ["arm/lib/mynativelib.so"],
307 },
308 },
309 stl: "none",
310 system_shared_libs: [],
311}
312
313sdk_snapshot {
314 name: "mysdk@current",
315 native_shared_libs: ["mysdk_mynativelib@current"],
316}
317`),
318 checkAllCopyRules(`
319include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800320.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000321arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800322.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000323 )
324}
325
Paul Duffin9ab556f2019-12-11 18:42:17 +0000326func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000327 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000328 sdk {
329 name: "mysdk",
330 native_shared_libs: ["mynativelib"],
331 }
332
333 cc_library_shared {
334 name: "mynativelib",
335 srcs: [
336 "Test.cpp",
337 "aidl/foo/bar/Test.aidl",
338 ],
339 export_include_dirs: ["include"],
340 aidl: {
341 export_aidl_headers: true,
342 },
343 system_shared_libs: [],
344 stl: "none",
345 }
346 `)
347
Paul Duffin593b3c92019-12-05 14:31:48 +0000348 result.CheckSnapshot("mysdk", "android_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000349 checkAndroidBpContents(`
350// This is auto-generated. DO NOT EDIT.
351
352cc_prebuilt_library_shared {
353 name: "mysdk_mynativelib@current",
354 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000355 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000356 arch: {
357 arm64: {
358 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000359 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000360 },
361 arm: {
362 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000363 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000364 },
365 },
366 stl: "none",
367 system_shared_libs: [],
368}
369
370cc_prebuilt_library_shared {
371 name: "mynativelib",
372 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000373 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000374 arch: {
375 arm64: {
376 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000377 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000378 },
379 arm: {
380 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000381 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000382 },
383 },
384 stl: "none",
385 system_shared_libs: [],
386}
387
388sdk_snapshot {
389 name: "mysdk@current",
390 native_shared_libs: ["mysdk_mynativelib@current"],
391}
392`),
393 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000394include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800395.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
396.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
397.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
398.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
399.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
400.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
401.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
402.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 +0000403`),
404 )
405}
406
Paul Duffin9ab556f2019-12-11 18:42:17 +0000407func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000408 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
409 SkipIfNotLinux(t)
410
Paul Duffind835daa2019-11-30 17:49:09 +0000411 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000412 sdk {
413 name: "mysdk",
414 device_supported: false,
415 host_supported: true,
416 native_shared_libs: ["mynativelib"],
417 }
418
419 cc_library_shared {
420 name: "mynativelib",
421 device_supported: false,
422 host_supported: true,
423 srcs: [
424 "Test.cpp",
425 "aidl/foo/bar/Test.aidl",
426 ],
427 export_include_dirs: ["include"],
428 aidl: {
429 export_aidl_headers: true,
430 },
431 system_shared_libs: [],
432 stl: "none",
433 }
434 `)
435
Paul Duffin593b3c92019-12-05 14:31:48 +0000436 result.CheckSnapshot("mysdk", "linux_glibc_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000437 checkAndroidBpContents(`
438// This is auto-generated. DO NOT EDIT.
439
440cc_prebuilt_library_shared {
441 name: "mysdk_mynativelib@current",
442 sdk_member_name: "mynativelib",
443 device_supported: false,
444 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000445 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000446 arch: {
447 x86_64: {
448 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000449 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000450 },
451 x86: {
452 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000453 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000454 },
455 },
456 stl: "none",
457 system_shared_libs: [],
458}
459
460cc_prebuilt_library_shared {
461 name: "mynativelib",
462 prefer: false,
463 device_supported: false,
464 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000465 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000466 arch: {
467 x86_64: {
468 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000469 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000470 },
471 x86: {
472 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000473 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000474 },
475 },
476 stl: "none",
477 system_shared_libs: [],
478}
479
480sdk_snapshot {
481 name: "mysdk@current",
482 device_supported: false,
483 host_supported: true,
484 native_shared_libs: ["mysdk_mynativelib@current"],
485}
486`),
487 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000488include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000489.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000490.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
491.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
492.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
493.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000494.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
495.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
496.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
497`),
498 )
499}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000500
501func TestSnapshotWithCcStaticLibrary(t *testing.T) {
502 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000503 module_exports {
504 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000505 native_static_libs: ["mynativelib"],
506 }
507
508 cc_library_static {
509 name: "mynativelib",
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 Duffine6029182019-12-16 17:43:48 +0000523 result.CheckSnapshot("myexports", "android_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000524 checkAndroidBpContents(`
525// This is auto-generated. DO NOT EDIT.
526
527cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000528 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000529 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000530 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000531 arch: {
532 arm64: {
533 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000534 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000535 },
536 arm: {
537 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000538 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000539 },
540 },
541 stl: "none",
542 system_shared_libs: [],
543}
544
545cc_prebuilt_library_static {
546 name: "mynativelib",
547 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000548 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000549 arch: {
550 arm64: {
551 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000552 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000553 },
554 arm: {
555 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000556 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000557 },
558 },
559 stl: "none",
560 system_shared_libs: [],
561}
562
Paul Duffine6029182019-12-16 17:43:48 +0000563module_exports_snapshot {
564 name: "myexports@current",
565 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000566}
567`),
568 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000569include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800570.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
571.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
572.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
573.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
574.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
575.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
576.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
577.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 +0000578`),
579 )
580}
581
582func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
583 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
584 SkipIfNotLinux(t)
585
586 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000587 module_exports {
588 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000589 device_supported: false,
590 host_supported: true,
591 native_static_libs: ["mynativelib"],
592 }
593
594 cc_library_static {
595 name: "mynativelib",
596 device_supported: false,
597 host_supported: true,
598 srcs: [
599 "Test.cpp",
600 "aidl/foo/bar/Test.aidl",
601 ],
602 export_include_dirs: ["include"],
603 aidl: {
604 export_aidl_headers: true,
605 },
606 system_shared_libs: [],
607 stl: "none",
608 }
609 `)
610
Paul Duffine6029182019-12-16 17:43:48 +0000611 result.CheckSnapshot("myexports", "linux_glibc_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000612 checkAndroidBpContents(`
613// This is auto-generated. DO NOT EDIT.
614
615cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000616 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000617 sdk_member_name: "mynativelib",
618 device_supported: false,
619 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000620 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000621 arch: {
622 x86_64: {
623 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000624 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000625 },
626 x86: {
627 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000628 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000629 },
630 },
631 stl: "none",
632 system_shared_libs: [],
633}
634
635cc_prebuilt_library_static {
636 name: "mynativelib",
637 prefer: false,
638 device_supported: false,
639 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000640 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000641 arch: {
642 x86_64: {
643 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000644 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000645 },
646 x86: {
647 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000648 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000649 },
650 },
651 stl: "none",
652 system_shared_libs: [],
653}
654
Paul Duffine6029182019-12-16 17:43:48 +0000655module_exports_snapshot {
656 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000657 device_supported: false,
658 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000659 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000660}
661`),
662 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000663include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000664.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000665.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
666.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
667.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
668.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000669.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
670.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
671.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
672`),
673 )
674}