blob: 53109ec1aa501350a3ab27e66b5260586bfbeea6 [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
53 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_core_shared").(*cc.Module).OutputFile()
54 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_core_shared").(*cc.Module).OutputFile()
55
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
76 sdk_snapshot {
77 name: "mysdk@1",
78 native_shared_libs: ["sdkmember_mysdk_1"],
79 }
80
81 sdk_snapshot {
82 name: "mysdk@2",
83 native_shared_libs: ["sdkmember_mysdk_2"],
84 }
85
86 cc_prebuilt_library_shared {
87 name: "sdkmember",
88 srcs: ["libfoo.so"],
89 prefer: false,
90 system_shared_libs: [],
91 stl: "none",
92 }
93
94 cc_prebuilt_library_shared {
95 name: "sdkmember_mysdk_1",
96 sdk_member_name: "sdkmember",
97 srcs: ["libfoo.so"],
98 system_shared_libs: [],
99 stl: "none",
100 }
101
102 cc_prebuilt_library_shared {
103 name: "sdkmember_mysdk_2",
104 sdk_member_name: "sdkmember",
105 srcs: ["libfoo.so"],
106 system_shared_libs: [],
107 stl: "none",
108 }
109
110 cc_library_shared {
111 name: "mycpplib",
112 srcs: ["Test.cpp"],
113 shared_libs: ["sdkmember"],
114 system_shared_libs: [],
115 stl: "none",
116 }
117
118 apex {
119 name: "myapex",
120 native_shared_libs: ["mycpplib"],
121 uses_sdks: ["mysdk@1"],
122 key: "myapex.key",
123 certificate: ":myapex.cert",
124 }
125
126 apex {
127 name: "myapex2",
128 native_shared_libs: ["mycpplib"],
129 uses_sdks: ["mysdk@2"],
130 key: "myapex.key",
131 certificate: ":myapex.cert",
132 }
133 `)
134
135 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_core_shared_myapex").Rule("toc").Output
136 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_core_shared_myapex2").Rule("toc").Output
137
138 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_core_shared_myapex")
139 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_core_shared_myapex2")
140
141 // Depending on the uses_sdks value, different libs are linked
142 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
143 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
144}
145
Paul Duffinc62a5102019-12-11 18:34:15 +0000146func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
147 result := testSdkWithCc(t, `
148 sdk {
149 name: "mysdk",
150 native_shared_libs: ["mynativelib1", "mynativelib2"],
151 }
152
153 cc_library_shared {
154 name: "mynativelib1",
155 srcs: [
156 "Test.cpp",
157 ],
158 export_include_dirs: ["include"],
159 system_shared_libs: [],
160 stl: "none",
161 }
162
163 cc_library_shared {
164 name: "mynativelib2",
165 srcs: [
166 "Test.cpp",
167 ],
168 export_include_dirs: ["include"],
169 system_shared_libs: [],
170 stl: "none",
171 }
172 `)
173
174 result.CheckSnapshot("mysdk", "android_common", "",
175 checkAllCopyRules(`
176include/Test.h -> include/include/Test.h
177.intermediates/mynativelib1/android_arm64_armv8-a_core_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
178.intermediates/mynativelib1/android_arm_armv7-a-neon_core_shared/mynativelib1.so -> arm/lib/mynativelib1.so
179.intermediates/mynativelib2/android_arm64_armv8-a_core_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
180.intermediates/mynativelib2/android_arm_armv7-a-neon_core_shared/mynativelib2.so -> arm/lib/mynativelib2.so
181`),
182 )
183}
184
Paul Duffina7cd8c82019-12-11 20:00:57 +0000185// Verify that when the shared library has some common and some arch specific properties that the generated
186// snapshot is optimized properly.
187func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
188 result := testSdkWithCc(t, `
189 sdk {
190 name: "mysdk",
191 native_shared_libs: ["mynativelib"],
192 }
193
194 cc_library_shared {
195 name: "mynativelib",
196 srcs: [
197 "Test.cpp",
198 "aidl/foo/bar/Test.aidl",
199 ],
200 export_include_dirs: ["include"],
201 arch: {
202 arm64: {
203 export_system_include_dirs: ["arm64/include"],
204 },
205 },
206 system_shared_libs: [],
207 stl: "none",
208 }
209 `)
210
211 result.CheckSnapshot("mysdk", "android_common", "",
212 checkAndroidBpContents(`
213// This is auto-generated. DO NOT EDIT.
214
215cc_prebuilt_library_shared {
216 name: "mysdk_mynativelib@current",
217 sdk_member_name: "mynativelib",
218 export_include_dirs: ["include/include"],
219 arch: {
220 arm64: {
221 srcs: ["arm64/lib/mynativelib.so"],
222 export_system_include_dirs: ["arm64/include/arm64/include"],
223 },
224 arm: {
225 srcs: ["arm/lib/mynativelib.so"],
226 },
227 },
228 stl: "none",
229 system_shared_libs: [],
230}
231
232cc_prebuilt_library_shared {
233 name: "mynativelib",
234 prefer: false,
235 export_include_dirs: ["include/include"],
236 arch: {
237 arm64: {
238 srcs: ["arm64/lib/mynativelib.so"],
239 export_system_include_dirs: ["arm64/include/arm64/include"],
240 },
241 arm: {
242 srcs: ["arm/lib/mynativelib.so"],
243 },
244 },
245 stl: "none",
246 system_shared_libs: [],
247}
248
249sdk_snapshot {
250 name: "mysdk@current",
251 native_shared_libs: ["mysdk_mynativelib@current"],
252}
253`),
254 checkAllCopyRules(`
255include/Test.h -> include/include/Test.h
256.intermediates/mynativelib/android_arm64_armv8-a_core_shared/mynativelib.so -> arm64/lib/mynativelib.so
257arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
258.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/mynativelib.so -> arm/lib/mynativelib.so`),
259 )
260}
261
Paul Duffin9ab556f2019-12-11 18:42:17 +0000262func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000263 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000264 sdk {
265 name: "mysdk",
266 native_shared_libs: ["mynativelib"],
267 }
268
269 cc_library_shared {
270 name: "mynativelib",
271 srcs: [
272 "Test.cpp",
273 "aidl/foo/bar/Test.aidl",
274 ],
275 export_include_dirs: ["include"],
276 aidl: {
277 export_aidl_headers: true,
278 },
279 system_shared_libs: [],
280 stl: "none",
281 }
282 `)
283
Paul Duffin593b3c92019-12-05 14:31:48 +0000284 result.CheckSnapshot("mysdk", "android_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000285 checkAndroidBpContents(`
286// This is auto-generated. DO NOT EDIT.
287
288cc_prebuilt_library_shared {
289 name: "mysdk_mynativelib@current",
290 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000291 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000292 arch: {
293 arm64: {
294 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000295 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000296 },
297 arm: {
298 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000299 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000300 },
301 },
302 stl: "none",
303 system_shared_libs: [],
304}
305
306cc_prebuilt_library_shared {
307 name: "mynativelib",
308 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000309 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000310 arch: {
311 arm64: {
312 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000313 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000314 },
315 arm: {
316 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000317 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000318 },
319 },
320 stl: "none",
321 system_shared_libs: [],
322}
323
324sdk_snapshot {
325 name: "mysdk@current",
326 native_shared_libs: ["mysdk_mynativelib@current"],
327}
328`),
329 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000330include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000331.intermediates/mynativelib/android_arm64_armv8-a_core_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000332.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
333.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
334.intermediates/mynativelib/android_arm64_armv8-a_core_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
335.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000336.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
337.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
338.intermediates/mynativelib/android_arm_armv7-a-neon_core_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
339`),
340 )
341}
342
Paul Duffin9ab556f2019-12-11 18:42:17 +0000343func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina80fdec2019-12-03 15:25:00 +0000344 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
345 SkipIfNotLinux(t)
346
Paul Duffind835daa2019-11-30 17:49:09 +0000347 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000348 sdk {
349 name: "mysdk",
350 device_supported: false,
351 host_supported: true,
352 native_shared_libs: ["mynativelib"],
353 }
354
355 cc_library_shared {
356 name: "mynativelib",
357 device_supported: false,
358 host_supported: true,
359 srcs: [
360 "Test.cpp",
361 "aidl/foo/bar/Test.aidl",
362 ],
363 export_include_dirs: ["include"],
364 aidl: {
365 export_aidl_headers: true,
366 },
367 system_shared_libs: [],
368 stl: "none",
369 }
370 `)
371
Paul Duffin593b3c92019-12-05 14:31:48 +0000372 result.CheckSnapshot("mysdk", "linux_glibc_common", "",
Paul Duffina80fdec2019-12-03 15:25:00 +0000373 checkAndroidBpContents(`
374// This is auto-generated. DO NOT EDIT.
375
376cc_prebuilt_library_shared {
377 name: "mysdk_mynativelib@current",
378 sdk_member_name: "mynativelib",
379 device_supported: false,
380 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000381 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000382 arch: {
383 x86_64: {
384 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000385 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000386 },
387 x86: {
388 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000389 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000390 },
391 },
392 stl: "none",
393 system_shared_libs: [],
394}
395
396cc_prebuilt_library_shared {
397 name: "mynativelib",
398 prefer: false,
399 device_supported: false,
400 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000401 export_include_dirs: ["include/include"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000402 arch: {
403 x86_64: {
404 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000405 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000406 },
407 x86: {
408 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000409 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000410 },
411 },
412 stl: "none",
413 system_shared_libs: [],
414}
415
416sdk_snapshot {
417 name: "mysdk@current",
418 device_supported: false,
419 host_supported: true,
420 native_shared_libs: ["mysdk_mynativelib@current"],
421}
422`),
423 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000424include/Test.h -> include/include/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000425.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000426.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
427.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
428.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
429.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffina80fdec2019-12-03 15:25:00 +0000430.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
431.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
432.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
433`),
434 )
435}
Paul Duffin9ab556f2019-12-11 18:42:17 +0000436
437func TestSnapshotWithCcStaticLibrary(t *testing.T) {
438 result := testSdkWithCc(t, `
439 sdk {
440 name: "mysdk",
441 native_static_libs: ["mynativelib"],
442 }
443
444 cc_library_static {
445 name: "mynativelib",
446 srcs: [
447 "Test.cpp",
448 "aidl/foo/bar/Test.aidl",
449 ],
450 export_include_dirs: ["include"],
451 aidl: {
452 export_aidl_headers: true,
453 },
454 system_shared_libs: [],
455 stl: "none",
456 }
457 `)
458
459 result.CheckSnapshot("mysdk", "android_common", "",
460 checkAndroidBpContents(`
461// This is auto-generated. DO NOT EDIT.
462
463cc_prebuilt_library_static {
464 name: "mysdk_mynativelib@current",
465 sdk_member_name: "mynativelib",
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000466 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000467 arch: {
468 arm64: {
469 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000470 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000471 },
472 arm: {
473 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000474 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000475 },
476 },
477 stl: "none",
478 system_shared_libs: [],
479}
480
481cc_prebuilt_library_static {
482 name: "mynativelib",
483 prefer: false,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000484 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000485 arch: {
486 arm64: {
487 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000488 export_include_dirs: ["arm64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000489 },
490 arm: {
491 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000492 export_include_dirs: ["arm/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000493 },
494 },
495 stl: "none",
496 system_shared_libs: [],
497}
498
499sdk_snapshot {
500 name: "mysdk@current",
501 native_static_libs: ["mysdk_mynativelib@current"],
502}
503`),
504 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000505include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000506.intermediates/mynativelib/android_arm64_armv8-a_core_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000507.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/aidl/foo/bar/Test.h
508.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
509.intermediates/mynativelib/android_arm64_armv8-a_core_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
510.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000511.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/aidl/foo/bar/Test.h
512.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BnTest.h
513.intermediates/mynativelib/android_arm_armv7-a-neon_core_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/aidl/foo/bar/BpTest.h
514`),
515 )
516}
517
518func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
519 // b/145598135 - Generating host snapshots for anything other than linux is not supported.
520 SkipIfNotLinux(t)
521
522 result := testSdkWithCc(t, `
523 sdk {
524 name: "mysdk",
525 device_supported: false,
526 host_supported: true,
527 native_static_libs: ["mynativelib"],
528 }
529
530 cc_library_static {
531 name: "mynativelib",
532 device_supported: false,
533 host_supported: true,
534 srcs: [
535 "Test.cpp",
536 "aidl/foo/bar/Test.aidl",
537 ],
538 export_include_dirs: ["include"],
539 aidl: {
540 export_aidl_headers: true,
541 },
542 system_shared_libs: [],
543 stl: "none",
544 }
545 `)
546
547 result.CheckSnapshot("mysdk", "linux_glibc_common", "",
548 checkAndroidBpContents(`
549// This is auto-generated. DO NOT EDIT.
550
551cc_prebuilt_library_static {
552 name: "mysdk_mynativelib@current",
553 sdk_member_name: "mynativelib",
554 device_supported: false,
555 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000556 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000557 arch: {
558 x86_64: {
559 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000560 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000561 },
562 x86: {
563 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000564 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000565 },
566 },
567 stl: "none",
568 system_shared_libs: [],
569}
570
571cc_prebuilt_library_static {
572 name: "mynativelib",
573 prefer: false,
574 device_supported: false,
575 host_supported: true,
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000576 export_include_dirs: ["include/include"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000577 arch: {
578 x86_64: {
579 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000580 export_include_dirs: ["x86_64/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000581 },
582 x86: {
583 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000584 export_include_dirs: ["x86/include_gen/mynativelib"],
Paul Duffin9ab556f2019-12-11 18:42:17 +0000585 },
586 },
587 stl: "none",
588 system_shared_libs: [],
589}
590
591sdk_snapshot {
592 name: "mysdk@current",
593 device_supported: false,
594 host_supported: true,
595 native_static_libs: ["mysdk_mynativelib@current"],
596}
597`),
598 checkAllCopyRules(`
Paul Duffin57b9e1d2019-12-13 00:03:35 +0000599include/Test.h -> include/include/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +0000600.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000601.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/Test.h
602.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BnTest.h
603.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/aidl/foo/bar/BpTest.h
604.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin9ab556f2019-12-11 18:42:17 +0000605.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/aidl/foo/bar/Test.h
606.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BnTest.h
607.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/aidl/foo/bar/BpTest.h
608`),
609 )
610}