blob: 9a75610f65f622a42c5101a9c34c679a5068df40 [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 Duffin9ab556f2019-12-11 18:42:17 +0000340func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000341 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000342 sdk {
343 name: "mysdk",
344 native_shared_libs: ["mynativelib"],
345 }
346
347 cc_library_shared {
348 name: "mynativelib",
349 srcs: [
350 "Test.cpp",
351 "aidl/foo/bar/Test.aidl",
352 ],
353 export_include_dirs: ["include"],
354 aidl: {
355 export_aidl_headers: true,
356 },
357 system_shared_libs: [],
358 stl: "none",
359 }
360 `)
361
Paul Duffin593b3c92019-12-05 14:31:48 +0000362 result.CheckSnapshot("mysdk", "android_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000363 checkAndroidBpContents(`
364// This is auto-generated. DO NOT EDIT.
365
366cc_prebuilt_library_shared {
367 name: "mysdk_mynativelib@current",
368 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000369 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000370 arch: {
371 arm64: {
372 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000373 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000374 },
375 arm: {
376 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000377 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000378 },
379 },
380 stl: "none",
381 system_shared_libs: [],
382}
383
384cc_prebuilt_library_shared {
385 name: "mynativelib",
386 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000387 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000388 arch: {
389 arm64: {
390 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000391 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000392 },
393 arm: {
394 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000395 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000396 },
397 },
398 stl: "none",
399 system_shared_libs: [],
400}
401
402sdk_snapshot {
403 name: "mysdk@current",
404 native_shared_libs: ["mysdk_mynativelib@current"],
405}
406`),
407 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000408include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800409.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
410.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
411.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
412.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
413.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
414.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
415.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
416.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 +0000417`),
418 )
419}
420
Paul Duffin9ab556f2019-12-11 18:42:17 +0000421func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000422 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
423 SkipIfNotLinux(t)
424
Paul Duffind835daa2019-11-30 17:49:09 +0000425 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000426 sdk {
427 name: "mysdk",
428 device_supported: false,
429 host_supported: true,
430 native_shared_libs: ["mynativelib"],
431 }
432
433 cc_library_shared {
434 name: "mynativelib",
435 device_supported: false,
436 host_supported: true,
437 srcs: [
438 "Test.cpp",
439 "aidl/foo/bar/Test.aidl",
440 ],
441 export_include_dirs: ["include"],
442 aidl: {
443 export_aidl_headers: true,
444 },
445 system_shared_libs: [],
446 stl: "none",
447 }
448 `)
449
Paul Duffin593b3c92019-12-05 14:31:48 +0000450 result.CheckSnapshot("mysdk", "linux_glibc_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000451 checkAndroidBpContents(`
452// This is auto-generated. DO NOT EDIT.
453
454cc_prebuilt_library_shared {
455 name: "mysdk_mynativelib@current",
456 sdk_member_name: "mynativelib",
457 device_supported: false,
458 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000459 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000460 arch: {
461 x86_64: {
462 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000463 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000464 },
465 x86: {
466 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000467 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000468 },
469 },
470 stl: "none",
471 system_shared_libs: [],
472}
473
474cc_prebuilt_library_shared {
475 name: "mynativelib",
476 prefer: false,
477 device_supported: false,
478 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000479 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000480 arch: {
481 x86_64: {
482 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000483 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000484 },
485 x86: {
486 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000487 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000488 },
489 },
490 stl: "none",
491 system_shared_libs: [],
492}
493
494sdk_snapshot {
495 name: "mysdk@current",
496 device_supported: false,
497 host_supported: true,
498 native_shared_libs: ["mysdk_mynativelib@current"],
499}
500`),
501 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000502include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000503.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000504.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
505.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
506.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
507.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000508.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
509.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
510.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
511`),
512 )
513}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000514
515func TestSnapshotWithCcStaticLibrary(t *testing.T) {
516 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000517 module_exports {
518 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000519 native_static_libs: ["mynativelib"],
520 }
521
522 cc_library_static {
523 name: "mynativelib",
524 srcs: [
525 "Test.cpp",
526 "aidl/foo/bar/Test.aidl",
527 ],
528 export_include_dirs: ["include"],
529 aidl: {
530 export_aidl_headers: true,
531 },
532 system_shared_libs: [],
533 stl: "none",
534 }
535 `)
536
Paul Duffine6029182019-12-16 17:43:48 +0000537 result.CheckSnapshot("myexports", "android_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000538 checkAndroidBpContents(`
539// This is auto-generated. DO NOT EDIT.
540
541cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000542 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000543 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000544 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000545 arch: {
546 arm64: {
547 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000548 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000549 },
550 arm: {
551 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000552 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000553 },
554 },
555 stl: "none",
556 system_shared_libs: [],
557}
558
559cc_prebuilt_library_static {
560 name: "mynativelib",
561 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000562 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000563 arch: {
564 arm64: {
565 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000566 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000567 },
568 arm: {
569 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000570 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000571 },
572 },
573 stl: "none",
574 system_shared_libs: [],
575}
576
Paul Duffine6029182019-12-16 17:43:48 +0000577module_exports_snapshot {
578 name: "myexports@current",
579 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000580}
581`),
582 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000583include/Test.h -> include/include/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800584.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
585.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
586.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
587.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
588.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
589.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
590.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
591.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 +0000592`),
593 )
594}
595
596func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
597 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
598 SkipIfNotLinux(t)
599
600 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +0000601 module_exports {
602 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000603 device_supported: false,
604 host_supported: true,
605 native_static_libs: ["mynativelib"],
606 }
607
608 cc_library_static {
609 name: "mynativelib",
610 device_supported: false,
611 host_supported: true,
612 srcs: [
613 "Test.cpp",
614 "aidl/foo/bar/Test.aidl",
615 ],
616 export_include_dirs: ["include"],
617 aidl: {
618 export_aidl_headers: true,
619 },
620 system_shared_libs: [],
621 stl: "none",
622 }
623 `)
624
Paul Duffine6029182019-12-16 17:43:48 +0000625 result.CheckSnapshot("myexports", "linux_glibc_common", "",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000626 checkAndroidBpContents(`
627// This is auto-generated. DO NOT EDIT.
628
629cc_prebuilt_library_static {
Paul Duffine6029182019-12-16 17:43:48 +0000630 name: "myexports_mynativelib@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000631 sdk_member_name: "mynativelib",
632 device_supported: false,
633 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000634 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000635 arch: {
636 x86_64: {
637 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000638 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000639 },
640 x86: {
641 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000642 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000643 },
644 },
645 stl: "none",
646 system_shared_libs: [],
647}
648
649cc_prebuilt_library_static {
650 name: "mynativelib",
651 prefer: false,
652 device_supported: false,
653 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000654 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000655 arch: {
656 x86_64: {
657 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000658 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000659 },
660 x86: {
661 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000662 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000663 },
664 },
665 stl: "none",
666 system_shared_libs: [],
667}
668
Paul Duffine6029182019-12-16 17:43:48 +0000669module_exports_snapshot {
670 name: "myexports@current",
Paul Duffin9ab556f2019-12-11 18:42:17 +0000671 device_supported: false,
672 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +0000673 native_static_libs: ["myexports_mynativelib@current"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000674}
675`),
676 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000677include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000678.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000679.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
680.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
681.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
682.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000683.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
684.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
685.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
686`),
687 )
688}