blob: bf4ac139cfcee1d73214801299e6282073ec0dc7 [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 (
Paul Duffin63696222021-09-06 10:28:34 +010018 "fmt"
Paul Duffina80fdec2019-12-03 15:25:00 +000019 "testing"
20
Paul Duffin1356d8c2020-02-25 19:26:33 +000021 "android/soong/android"
Paul Duffina80fdec2019-12-03 15:25:00 +000022 "android/soong/cc"
23)
24
Paul Duffin4a2a29c2021-03-09 22:27:13 +000025var ccTestFs = android.MockFS{
Paul Duffin86b02a72021-02-22 11:50:04 +000026 "Test.cpp": nil,
27 "myinclude/Test.h": nil,
28 "myinclude-android/AndroidTest.h": nil,
29 "myinclude-host/HostTest.h": nil,
30 "arm64/include/Arm64Test.h": nil,
31 "libfoo.so": nil,
32 "aidl/foo/bar/Test.aidl": nil,
33 "some/where/stubslib.map.txt": nil,
Martin Stjernholm7feceb22020-07-11 04:33:29 +010034}
35
Paul Duffin93b750e2019-11-19 19:44:10 +000036// Adds a native bridge target to the configured list of targets.
37var prepareForTestWithNativeBridgeTarget = android.FixtureModifyConfig(func(config android.Config) {
38 config.Targets[android.Android] = append(config.Targets[android.Android], android.Target{
39 Os: android.Android,
40 Arch: android.Arch{
41 ArchType: android.Arm64,
42 ArchVariant: "armv8-a",
43 CpuVariant: "cpu",
44 Abi: nil,
45 ArchFeatures: nil,
46 },
47 NativeBridge: android.NativeBridgeEnabled,
48 NativeBridgeHostArchName: "x86_64",
49 NativeBridgeRelativePath: "native_bridge",
50 })
51})
52
Paul Duffin4a2a29c2021-03-09 22:27:13 +000053func testSdkWithCc(t *testing.T, bp string) *android.TestResult {
Paul Duffind835daa2019-11-30 17:49:09 +000054 t.Helper()
Martin Stjernholm7feceb22020-07-11 04:33:29 +010055 return testSdkWithFs(t, bp, ccTestFs)
Paul Duffind835daa2019-11-30 17:49:09 +000056}
57
Paul Duffina80fdec2019-12-03 15:25:00 +000058// Contains tests for SDK members provided by the cc package.
59
Martin Stjernholmcaa47d72020-07-11 04:52:24 +010060func TestSingleDeviceOsAssumption(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -080061 t.Parallel()
Martin Stjernholmcaa47d72020-07-11 04:52:24 +010062 // Mock a module with DeviceSupported() == true.
63 s := &sdk{}
64 android.InitAndroidArchModule(s, android.DeviceSupported, android.MultilibCommon)
65
66 osTypes := s.getPossibleOsTypes()
67 if len(osTypes) != 1 {
68 // The snapshot generation assumes there is a single device OS. If more are
69 // added it might need to disable them by default, like it does for host
70 // OS'es.
71 t.Errorf("expected a single device OS, got %v", osTypes)
72 }
73}
74
Paul Duffina80fdec2019-12-03 15:25:00 +000075func TestSdkIsCompileMultilibBoth(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -080076 t.Parallel()
Paul Duffind835daa2019-11-30 17:49:09 +000077 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000078 sdk {
79 name: "mysdk",
80 native_shared_libs: ["sdkmember"],
81 }
82
83 cc_library_shared {
84 name: "sdkmember",
85 srcs: ["Test.cpp"],
Paul Duffina80fdec2019-12-03 15:25:00 +000086 stl: "none",
87 }
88 `)
89
Colin Cross7113d202019-11-20 16:39:12 -080090 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
91 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000092
93 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000094 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000095 for _, bp := range buildParams {
96 if bp.Input != nil {
97 inputs = append(inputs, bp.Input.String())
98 }
99 }
100
101 // ensure that both 32/64 outputs are inputs of the sdk snapshot
102 ensureListContains(t, inputs, armOutput.String())
103 ensureListContains(t, inputs, arm64Output.String())
104}
105
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100106func TestSdkCompileMultilibOverride(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800107 t.Parallel()
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100108 result := testSdkWithCc(t, `
109 sdk {
110 name: "mysdk",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100111 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100112 native_shared_libs: ["sdkmember"],
113 compile_multilib: "64",
114 }
115
116 cc_library_shared {
117 name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100118 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100119 srcs: ["Test.cpp"],
120 stl: "none",
121 compile_multilib: "64",
122 }
123 `)
124
Paul Duffin36474d32021-03-12 12:19:43 +0000125 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000126 checkAndroidBpContents(`
Martin Stjernholm89238f42020-07-10 00:14:03 +0100127// This is auto-generated. DO NOT EDIT.
128
Spandan Dasa5e26d32024-03-06 14:04:36 +0000129apex_contributions_defaults {
130 name: "mysdk.contributions",
131 contents: ["prebuilt_sdkmember"],
132}
133
Martin Stjernholm89238f42020-07-10 00:14:03 +0100134cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000135 name: "sdkmember",
136 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100137 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000138 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100139 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100140 stl: "none",
141 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100142 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100143 host: {
144 enabled: false,
145 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100146 android_arm64: {
147 srcs: ["android/arm64/lib/sdkmember.so"],
148 },
149 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900150 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100151 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100152 },
153 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000154 strip: {
155 none: true,
156 },
Martin Stjernholm89238f42020-07-10 00:14:03 +0100157}
Paul Duffin75b902a2021-02-22 12:13:13 +0000158`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100159 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100160.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
161.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100162`))
163}
164
Paul Duffina0843f62019-12-13 19:50:38 +0000165// Make sure the sdk can use host specific cc libraries static/shared and both.
166func TestHostSdkWithCc(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800167 t.Parallel()
Paul Duffina0843f62019-12-13 19:50:38 +0000168 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",
Paul Duffina0843f62019-12-13 19:50:38 +0000179 stl: "none",
180 }
181
182 cc_library_host_static {
183 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000184 stl: "none",
185 }
186 `)
187}
188
189// Make sure the sdk can use cc libraries static/shared and both.
190func TestSdkWithCc(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800191 t.Parallel()
Paul Duffina0843f62019-12-13 19:50:38 +0000192 testSdkWithCc(t, `
193 sdk {
194 name: "mysdk",
195 native_shared_libs: ["sdkshared", "sdkboth1"],
196 native_static_libs: ["sdkstatic", "sdkboth2"],
197 }
198
199 cc_library_shared {
200 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000201 stl: "none",
202 }
203
204 cc_library_static {
205 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000206 stl: "none",
207 }
208
209 cc_library {
210 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000211 stl: "none",
212 }
213
214 cc_library {
215 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000216 stl: "none",
217 }
218 `)
219}
220
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000221func TestSnapshotWithObject(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800222 t.Parallel()
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000223 result := testSdkWithCc(t, `
224 sdk {
225 name: "mysdk",
226 native_objects: ["crtobj"],
227 }
228
229 cc_object {
230 name: "crtobj",
231 stl: "none",
Colin Cross6b8f4252021-07-22 11:39:44 -0700232 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100233 sanitize: {
234 never: true,
235 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000236 }
237 `)
238
Paul Duffin36474d32021-03-12 12:19:43 +0000239 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000240 checkAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000241// This is auto-generated. DO NOT EDIT.
242
Spandan Dasa5e26d32024-03-06 14:04:36 +0000243apex_contributions_defaults {
244 name: "mysdk.contributions",
245 contents: ["prebuilt_crtobj"],
246}
247
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000248cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000249 name: "crtobj",
250 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100251 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000252 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000253 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100254 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700255 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100256 sanitize: {
257 never: true,
258 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000259 arch: {
260 arm64: {
261 srcs: ["arm64/lib/crtobj.o"],
262 },
263 arm: {
264 srcs: ["arm/lib/crtobj.o"],
265 },
266 },
267}
Paul Duffin75b902a2021-02-22 12:13:13 +0000268`),
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000269 checkAllCopyRules(`
270.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
271.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
272`),
273 )
274}
275
Paul Duffinc62a5102019-12-11 18:34:15 +0000276func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800277 t.Parallel()
Paul Duffinc62a5102019-12-11 18:34:15 +0000278 result := testSdkWithCc(t, `
279 sdk {
280 name: "mysdk",
281 native_shared_libs: ["mynativelib1", "mynativelib2"],
282 }
283
284 cc_library_shared {
285 name: "mynativelib1",
286 srcs: [
287 "Test.cpp",
288 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000289 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000290 stl: "none",
291 }
292
293 cc_library_shared {
294 name: "mynativelib2",
295 srcs: [
296 "Test.cpp",
297 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000298 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000299 stl: "none",
300 }
301 `)
302
Paul Duffin36474d32021-03-12 12:19:43 +0000303 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000304 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000305myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800306.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
307.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
308.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
309.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000310`),
311 )
312}
313
Paul Duffina43f9272021-02-17 10:55:25 +0000314func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800315 t.Parallel()
Paul Duffina43f9272021-02-17 10:55:25 +0000316 result := testSdkWithCc(t, `
317 sdk {
318 name: "mysdk",
319 native_shared_libs: ["mynativelib"],
320 }
321
322 cc_library_shared {
323 name: "mynativelib",
324 srcs: [
325 "Test.cpp",
326 ],
327 generated_headers: [
328 "generated_foo",
329 ],
330 export_generated_headers: [
331 "generated_foo",
332 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000333 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000334 stl: "none",
335 }
336
337 genrule {
338 name: "generated_foo",
339 cmd: "generate-foo",
340 out: [
341 "generated_foo/protos/foo/bar.h",
342 ],
343 export_include_dirs: [
344 ".",
345 "protos",
346 ],
347 }
348 `)
349
Paul Duffindb462dd2021-03-21 22:01:55 +0000350 // TODO(b/183322862): Remove this and fix the issue.
351 errorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist`)
352
Paul Duffin36474d32021-03-12 12:19:43 +0000353 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000354 checkAndroidBpContents(`
Paul Duffina43f9272021-02-17 10:55:25 +0000355// This is auto-generated. DO NOT EDIT.
356
Spandan Dasa5e26d32024-03-06 14:04:36 +0000357apex_contributions_defaults {
358 name: "mysdk.contributions",
359 contents: ["prebuilt_mynativelib"],
360}
361
Paul Duffina43f9272021-02-17 10:55:25 +0000362cc_prebuilt_library_shared {
363 name: "mynativelib",
364 prefer: false,
365 visibility: ["//visibility:public"],
366 apex_available: ["//apex_available:platform"],
367 stl: "none",
368 compile_multilib: "both",
Paul Duffin7a7d0672021-02-17 12:17:40 +0000369 export_include_dirs: [
370 "include/myinclude",
371 "include_gen/generated_foo/gen",
372 "include_gen/generated_foo/gen/protos",
373 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000374 arch: {
375 arm64: {
376 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000377 },
378 arm: {
379 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000380 },
381 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000382 strip: {
383 none: true,
384 },
Paul Duffina43f9272021-02-17 10:55:25 +0000385}
386`),
387 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000388myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000389.intermediates/generated_foo/gen/generated_foo/protos/foo/bar.h -> include_gen/generated_foo/gen/generated_foo/protos/foo/bar.h
Paul Duffina43f9272021-02-17 10:55:25 +0000390.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000391.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000392`),
Paul Duffindb462dd2021-03-21 22:01:55 +0000393 snapshotTestErrorHandler(checkSnapshotWithoutSource, errorHandler),
394 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, errorHandler),
395 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, errorHandler),
Paul Duffina43f9272021-02-17 10:55:25 +0000396 )
397}
398
Martin Stjernholmb0249572020-09-15 02:32:35 +0100399// Verify that when the shared library has some common and some arch specific
400// properties that the generated snapshot is optimized properly. Substruct
401// handling is tested with the sanitize clauses (but note there's a lot of
402// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000403func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800404 t.Parallel()
Paul Duffina7cd8c82019-12-11 20:00:57 +0000405 result := testSdkWithCc(t, `
406 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 Duffin86b02a72021-02-22 11:50:04 +0000417 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100418 sanitize: {
419 fuzzer: false,
420 integer_overflow: true,
421 diag: { undefined: false },
422 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000423 arch: {
424 arm64: {
425 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100426 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100427 integer_overflow: false,
428 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000429 },
430 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000431 stl: "none",
432 }
433 `)
434
Paul Duffin36474d32021-03-12 12:19:43 +0000435 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000436 checkAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000437// This is auto-generated. DO NOT EDIT.
438
Spandan Dasa5e26d32024-03-06 14:04:36 +0000439apex_contributions_defaults {
440 name: "mysdk.contributions",
441 contents: ["prebuilt_mynativelib"],
442}
443
Paul Duffina7cd8c82019-12-11 20:00:57 +0000444cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000445 name: "mynativelib",
446 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100447 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000448 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000449 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100450 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000451 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100452 sanitize: {
453 fuzzer: false,
454 diag: {
455 undefined: false,
456 },
457 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000458 arch: {
459 arm64: {
460 srcs: ["arm64/lib/mynativelib.so"],
461 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100462 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100463 integer_overflow: false,
464 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000465 },
466 arm: {
467 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100468 sanitize: {
469 integer_overflow: true,
470 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000471 },
472 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000473 strip: {
474 none: true,
475 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000476}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000477`),
478 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000479myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000480.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000481arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800482.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000483 )
484}
485
Paul Duffin25ce04b2020-01-16 11:47:25 +0000486func TestSnapshotWithCcBinary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800487 t.Parallel()
Paul Duffin25ce04b2020-01-16 11:47:25 +0000488 result := testSdkWithCc(t, `
489 module_exports {
490 name: "mymodule_exports",
491 native_binaries: ["mynativebinary"],
492 }
493
494 cc_binary {
495 name: "mynativebinary",
496 srcs: [
497 "Test.cpp",
498 ],
499 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000500 }
501 `)
502
Paul Duffin36474d32021-03-12 12:19:43 +0000503 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000504 checkAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000505// This is auto-generated. DO NOT EDIT.
506
Spandan Dasa5e26d32024-03-06 14:04:36 +0000507apex_contributions_defaults {
508 name: "mymodule_exports.contributions",
509 contents: ["prebuilt_mynativebinary"],
510}
511
Paul Duffin25ce04b2020-01-16 11:47:25 +0000512cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000513 name: "mynativebinary",
514 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100515 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000516 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000517 compile_multilib: "both",
518 arch: {
519 arm64: {
520 srcs: ["arm64/bin/mynativebinary"],
521 },
522 arm: {
523 srcs: ["arm/bin/mynativebinary"],
524 },
525 },
526}
Paul Duffin75b902a2021-02-22 12:13:13 +0000527`),
Paul Duffin25ce04b2020-01-16 11:47:25 +0000528 checkAllCopyRules(`
529.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
530.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
531`),
532 )
533}
534
Paul Duffina04c1072020-03-02 10:16:35 +0000535func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800536 t.Parallel()
Paul Duffina04c1072020-03-02 10:16:35 +0000537 result := testSdkWithCc(t, `
538 module_exports {
539 name: "myexports",
540 device_supported: false,
541 host_supported: true,
542 native_binaries: ["mynativebinary"],
543 target: {
544 windows: {
545 enabled: true,
546 },
547 },
548 }
549
550 cc_binary {
551 name: "mynativebinary",
552 device_supported: false,
553 host_supported: true,
554 srcs: [
555 "Test.cpp",
556 ],
557 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000558 stl: "none",
559 target: {
560 windows: {
561 enabled: true,
562 },
563 },
564 }
565 `)
566
Paul Duffin36474d32021-03-12 12:19:43 +0000567 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000568 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000569// This is auto-generated. DO NOT EDIT.
570
Spandan Dasa5e26d32024-03-06 14:04:36 +0000571apex_contributions_defaults {
572 name: "myexports.contributions",
573 contents: ["prebuilt_mynativebinary"],
574}
575
Paul Duffina04c1072020-03-02 10:16:35 +0000576cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000577 name: "mynativebinary",
578 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100579 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000580 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000581 device_supported: false,
582 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100583 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000584 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100585 host: {
586 enabled: false,
587 },
Paul Duffina04c1072020-03-02 10:16:35 +0000588 linux_glibc: {
589 compile_multilib: "both",
590 },
591 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900592 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000593 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
594 },
595 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900596 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000597 srcs: ["linux_glibc/x86/bin/mynativebinary"],
598 },
599 windows: {
600 compile_multilib: "64",
601 },
602 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900603 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000604 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
605 },
606 },
607}
Paul Duffin75b902a2021-02-22 12:13:13 +0000608`),
Paul Duffina04c1072020-03-02 10:16:35 +0000609 checkAllCopyRules(`
610.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
611.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
612.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
613`),
614 )
615}
616
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100617func TestSnapshotWithSingleHostOsType(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800618 t.Parallel()
Paul Duffin89648f92021-03-20 00:36:55 +0000619 result := android.GroupFixturePreparers(
620 prepareForSdkTest,
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000621 ccTestFs.AddToFixture(),
622 cc.PrepareForTestOnLinuxBionic,
623 android.FixtureModifyConfig(func(config android.Config) {
624 config.Targets[android.LinuxBionic] = []android.Target{
625 {android.LinuxBionic, android.Arch{ArchType: android.X86_64}, android.NativeBridgeDisabled, "", "", false},
626 }
627 }),
628 ).RunTestWithBp(t, `
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100629 cc_defaults {
630 name: "mydefaults",
631 device_supported: false,
632 host_supported: true,
633 compile_multilib: "64",
634 target: {
635 host: {
636 enabled: false,
637 },
638 linux_bionic: {
639 enabled: true,
640 },
641 },
642 }
643
644 module_exports {
645 name: "myexports",
646 defaults: ["mydefaults"],
647 native_shared_libs: ["mynativelib"],
648 native_binaries: ["mynativebinary"],
649 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
650 }
651
652 cc_library {
653 name: "mynativelib",
654 defaults: ["mydefaults"],
655 srcs: [
656 "Test.cpp",
657 ],
658 stl: "none",
659 }
660
661 cc_binary {
662 name: "mynativebinary",
663 defaults: ["mydefaults"],
664 srcs: [
665 "Test.cpp",
666 ],
667 stl: "none",
668 }
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000669 `)
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100670
Paul Duffin36474d32021-03-12 12:19:43 +0000671 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000672 checkAndroidBpContents(`
Paul Duffin75b902a2021-02-22 12:13:13 +0000673// This is auto-generated. DO NOT EDIT.
674
Spandan Dasa5e26d32024-03-06 14:04:36 +0000675apex_contributions_defaults {
676 name: "myexports.contributions",
677 contents: [
678 "prebuilt_mynativebinary",
679 "prebuilt_mynativelib",
680 ],
681}
682
Paul Duffin75b902a2021-02-22 12:13:13 +0000683cc_prebuilt_binary {
684 name: "mynativebinary",
685 prefer: false,
686 visibility: ["//visibility:public"],
687 apex_available: ["//apex_available:platform"],
688 device_supported: false,
689 host_supported: true,
690 stl: "none",
691 compile_multilib: "64",
692 target: {
693 host: {
694 enabled: false,
695 },
696 linux_bionic_x86_64: {
697 enabled: true,
698 srcs: ["x86_64/bin/mynativebinary"],
699 },
700 },
701}
702
703cc_prebuilt_library_shared {
704 name: "mynativelib",
705 prefer: false,
706 visibility: ["//visibility:public"],
707 apex_available: ["//apex_available:platform"],
708 device_supported: false,
709 host_supported: true,
710 stl: "none",
711 compile_multilib: "64",
712 target: {
713 host: {
714 enabled: false,
715 },
716 linux_bionic_x86_64: {
717 enabled: true,
718 srcs: ["x86_64/lib/mynativelib.so"],
719 },
720 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000721 strip: {
722 none: true,
723 },
Paul Duffin75b902a2021-02-22 12:13:13 +0000724}
725`),
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100726 checkAllCopyRules(`
727.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
728.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
729`),
730 )
731}
732
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100733// Test that we support the necessary flags for the linker binary, which is
734// special in several ways.
735func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800736 t.Parallel()
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100737 result := testSdkWithCc(t, `
738 module_exports {
739 name: "mymodule_exports",
740 host_supported: true,
741 device_supported: false,
742 native_binaries: ["linker"],
743 }
744
745 cc_binary {
746 name: "linker",
747 host_supported: true,
748 static_executable: true,
749 nocrt: true,
750 stl: "none",
751 srcs: [
752 "Test.cpp",
753 ],
754 compile_multilib: "both",
755 }
756 `)
757
Paul Duffin36474d32021-03-12 12:19:43 +0000758 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000759 checkAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100760// This is auto-generated. DO NOT EDIT.
761
Spandan Dasa5e26d32024-03-06 14:04:36 +0000762apex_contributions_defaults {
763 name: "mymodule_exports.contributions",
764 contents: ["prebuilt_linker"],
765}
766
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100767cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000768 name: "linker",
769 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100770 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000771 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100772 device_supported: false,
773 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100774 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100775 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100776 static_executable: true,
777 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100778 target: {
779 host: {
780 enabled: false,
781 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100782 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900783 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100784 srcs: ["x86_64/bin/linker"],
785 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100786 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900787 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100788 srcs: ["x86/bin/linker"],
789 },
790 },
791}
Paul Duffin75b902a2021-02-22 12:13:13 +0000792`),
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100793 checkAllCopyRules(`
794.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
795.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
796`),
797 )
798}
799
Paul Duffin9ab556f2019-12-11 18:42:17 +0000800func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800801 t.Parallel()
Paul Duffind835daa2019-11-30 17:49:09 +0000802 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000803 sdk {
804 name: "mysdk",
805 native_shared_libs: ["mynativelib"],
806 }
807
Colin Cross22558312025-02-05 23:02:39 +0000808 apex {
809 name: "myapex",
810 key: "myapex.key",
811 min_sdk_version: "1",
812 }
813
Paul Duffina80fdec2019-12-03 15:25:00 +0000814 cc_library_shared {
815 name: "mynativelib",
816 srcs: [
817 "Test.cpp",
818 "aidl/foo/bar/Test.aidl",
819 ],
Colin Cross22558312025-02-05 23:02:39 +0000820 apex_available: ["myapex"],
Paul Duffin86b02a72021-02-22 11:50:04 +0000821 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000822 aidl: {
823 export_aidl_headers: true,
824 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000825 stl: "none",
826 }
827 `)
828
Paul Duffin36474d32021-03-12 12:19:43 +0000829 CheckSnapshot(t, result, "mysdk", "",
Colin Cross22558312025-02-05 23:02:39 +0000830 snapshotTestPreparer(checkSnapshotWithoutSource,
831 android.FixtureMergeMockFs(android.MockFS{
832 "myapex/Android.bp": []byte(`
833 apex {
834 name: "myapex",
835 key: "myapex.key",
836 min_sdk_version: "1",
837 }
838 `),
839 "myapex/apex_manifest.json": nil,
840 }),
841 ),
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000842 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +0000843// This is auto-generated. DO NOT EDIT.
844
Spandan Dasa5e26d32024-03-06 14:04:36 +0000845apex_contributions_defaults {
846 name: "mysdk.contributions",
847 contents: ["prebuilt_mynativelib"],
848}
849
Paul Duffina80fdec2019-12-03 15:25:00 +0000850cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +0000851 name: "mynativelib",
852 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100853 visibility: ["//visibility:public"],
Colin Cross22558312025-02-05 23:02:39 +0000854 apex_available: ["myapex"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000855 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100856 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000857 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000858 arch: {
859 arm64: {
860 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +0000861 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000862 },
863 arm: {
864 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +0000865 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000866 },
867 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000868 strip: {
869 none: true,
870 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000871}
Paul Duffina80fdec2019-12-03 15:25:00 +0000872`),
873 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000874myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800875.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000876.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/Test.h
877.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BnTest.h
878.intermediates/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl/aidl/foo/bar/BpTest.h
Colin Cross7113d202019-11-20 16:39:12 -0800879.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000880.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/Test.h
881.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BnTest.h
882.intermediates/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +0000883`),
884 )
885}
886
Paul Duffin13f02712020-03-06 12:30:43 +0000887func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -0800888 t.Parallel()
Paul Duffin13f02712020-03-06 12:30:43 +0000889 result := testSdkWithCc(t, `
890 sdk {
891 name: "mysdk",
892 native_shared_libs: [
893 "mynativelib",
894 "myothernativelib",
895 "mysystemnativelib",
896 ],
897 }
898
899 cc_library {
900 name: "mysystemnativelib",
901 srcs: [
902 "Test.cpp",
903 ],
Paul Duffin13f02712020-03-06 12:30:43 +0000904 stl: "none",
905 }
906
907 cc_library_shared {
908 name: "myothernativelib",
909 srcs: [
910 "Test.cpp",
911 ],
912 system_shared_libs: [
913 // A reference to a library that is not an sdk member. Uses libm as that
914 // is in the default set of modules available to this test and so is available
915 // both here and also when the generated Android.bp file is tested in
916 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
917 // handles references to modules that are not sdk members.
918 "libm",
919 ],
920 stl: "none",
921 }
922
923 cc_library {
924 name: "mynativelib",
925 srcs: [
926 "Test.cpp",
927 ],
928 shared_libs: [
929 // A reference to another sdk member.
930 "myothernativelib",
931 ],
932 target: {
933 android: {
934 shared: {
935 shared_libs: [
936 // A reference to a library that is not an sdk member. The libc library
937 // is used here to check that the shared_libs property is handled correctly
938 // in a similar way to how libm is used to check system_shared_libs above.
939 "libc",
940 ],
941 },
942 },
943 },
Paul Duffin13f02712020-03-06 12:30:43 +0000944 stl: "none",
945 }
946 `)
947
Paul Duffin36474d32021-03-12 12:19:43 +0000948 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000949 checkAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +0000950// This is auto-generated. DO NOT EDIT.
951
Spandan Dasa5e26d32024-03-06 14:04:36 +0000952apex_contributions_defaults {
953 name: "mysdk.contributions",
954 contents: [
955 "prebuilt_mynativelib",
956 "prebuilt_myothernativelib",
957 "prebuilt_mysystemnativelib",
958 ],
959}
960
Paul Duffin13f02712020-03-06 12:30:43 +0000961cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +0000962 name: "mynativelib",
963 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100964 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000965 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000966 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100967 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000968 shared_libs: [
969 "myothernativelib",
970 "libc",
971 ],
972 arch: {
973 arm64: {
974 srcs: ["arm64/lib/mynativelib.so"],
975 },
976 arm: {
977 srcs: ["arm/lib/mynativelib.so"],
978 },
979 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +0000980 strip: {
981 none: true,
982 },
Paul Duffin13f02712020-03-06 12:30:43 +0000983}
984
985cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +0000986 name: "myothernativelib",
987 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100988 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000989 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000990 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100991 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000992 system_shared_libs: ["libm"],
993 arch: {
994 arm64: {
995 srcs: ["arm64/lib/myothernativelib.so"],
996 },
997 arm: {
998 srcs: ["arm/lib/myothernativelib.so"],
999 },
1000 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00001001 strip: {
1002 none: true,
1003 },
Paul Duffin13f02712020-03-06 12:30:43 +00001004}
1005
1006cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001007 name: "mysystemnativelib",
1008 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001009 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001010 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001011 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001012 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001013 arch: {
1014 arm64: {
1015 srcs: ["arm64/lib/mysystemnativelib.so"],
1016 },
1017 arm: {
1018 srcs: ["arm/lib/mysystemnativelib.so"],
1019 },
1020 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00001021 strip: {
1022 none: true,
1023 },
Paul Duffin13f02712020-03-06 12:30:43 +00001024}
Paul Duffin13f02712020-03-06 12:30:43 +00001025`),
1026 checkAllCopyRules(`
1027.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1028.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1029.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1030.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1031.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1032.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1033`),
1034 )
1035}
1036
Paul Duffin9ab556f2019-12-11 18:42:17 +00001037func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001038 t.Parallel()
Paul Duffind835daa2019-11-30 17:49:09 +00001039 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001040 sdk {
1041 name: "mysdk",
1042 device_supported: false,
1043 host_supported: true,
1044 native_shared_libs: ["mynativelib"],
1045 }
1046
1047 cc_library_shared {
1048 name: "mynativelib",
1049 device_supported: false,
1050 host_supported: true,
1051 srcs: [
1052 "Test.cpp",
1053 "aidl/foo/bar/Test.aidl",
1054 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001055 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001056 aidl: {
1057 export_aidl_headers: true,
1058 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001059 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001060 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001061 }
1062 `)
1063
Paul Duffin36474d32021-03-12 12:19:43 +00001064 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001065 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001066// This is auto-generated. DO NOT EDIT.
1067
Spandan Dasa5e26d32024-03-06 14:04:36 +00001068apex_contributions_defaults {
1069 name: "mysdk.contributions",
1070 contents: ["prebuilt_mynativelib"],
1071}
1072
Paul Duffina80fdec2019-12-03 15:25:00 +00001073cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001074 name: "mynativelib",
1075 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001076 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001077 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001078 device_supported: false,
1079 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001080 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001081 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001082 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001083 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001084 target: {
1085 host: {
1086 enabled: false,
1087 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001088 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001089 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001090 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001091 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001092 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001093 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001094 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001095 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001096 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001097 },
1098 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00001099 strip: {
1100 none: true,
1101 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001102}
Paul Duffin75b902a2021-02-22 12:13:13 +00001103`),
Paul Duffina80fdec2019-12-03 15:25:00 +00001104 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001105myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001106.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001107.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/Test.h
1108.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BnTest.h
1109.intermediates/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001110.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001111.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/Test.h
1112.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BnTest.h
1113.intermediates/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001114`),
1115 )
1116}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001117
Paul Duffina04c1072020-03-02 10:16:35 +00001118func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001119 t.Parallel()
Paul Duffina04c1072020-03-02 10:16:35 +00001120 result := testSdkWithCc(t, `
1121 sdk {
1122 name: "mysdk",
1123 device_supported: false,
1124 host_supported: true,
1125 native_shared_libs: ["mynativelib"],
1126 target: {
1127 windows: {
1128 enabled: true,
1129 },
1130 },
1131 }
1132
1133 cc_library_shared {
1134 name: "mynativelib",
1135 device_supported: false,
1136 host_supported: true,
1137 srcs: [
1138 "Test.cpp",
1139 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001140 stl: "none",
1141 target: {
1142 windows: {
1143 enabled: true,
1144 },
1145 },
1146 }
1147 `)
1148
Paul Duffin36474d32021-03-12 12:19:43 +00001149 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001150 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001151// This is auto-generated. DO NOT EDIT.
1152
Spandan Dasa5e26d32024-03-06 14:04:36 +00001153apex_contributions_defaults {
1154 name: "mysdk.contributions",
1155 contents: ["prebuilt_mynativelib"],
1156}
1157
Paul Duffina04c1072020-03-02 10:16:35 +00001158cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001159 name: "mynativelib",
1160 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001161 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001162 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001163 device_supported: false,
1164 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001165 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001166 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001167 host: {
1168 enabled: false,
1169 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001170 linux_glibc: {
1171 compile_multilib: "both",
1172 },
Paul Duffina04c1072020-03-02 10:16:35 +00001173 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001174 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001175 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1176 },
1177 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001178 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001179 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1180 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001181 windows: {
1182 compile_multilib: "64",
1183 },
Paul Duffina04c1072020-03-02 10:16:35 +00001184 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001185 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001186 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1187 },
1188 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00001189 strip: {
1190 none: true,
1191 },
Paul Duffina04c1072020-03-02 10:16:35 +00001192}
Paul Duffin75b902a2021-02-22 12:13:13 +00001193`),
Paul Duffina04c1072020-03-02 10:16:35 +00001194 checkAllCopyRules(`
1195.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1196.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1197.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1198`),
1199 )
1200}
1201
Paul Duffin9ab556f2019-12-11 18:42:17 +00001202func TestSnapshotWithCcStaticLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001203 t.Parallel()
Paul Duffin9ab556f2019-12-11 18:42:17 +00001204 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001205 module_exports {
1206 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001207 native_static_libs: ["mynativelib"],
1208 }
1209
1210 cc_library_static {
1211 name: "mynativelib",
1212 srcs: [
1213 "Test.cpp",
1214 "aidl/foo/bar/Test.aidl",
1215 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001216 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001217 aidl: {
1218 export_aidl_headers: true,
1219 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001220 stl: "none",
1221 }
1222 `)
1223
Paul Duffin36474d32021-03-12 12:19:43 +00001224 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001225 checkAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001226// This is auto-generated. DO NOT EDIT.
1227
Spandan Dasa5e26d32024-03-06 14:04:36 +00001228apex_contributions_defaults {
1229 name: "myexports.contributions",
1230 contents: ["prebuilt_mynativelib"],
1231}
1232
Paul Duffin9ab556f2019-12-11 18:42:17 +00001233cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001234 name: "mynativelib",
1235 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001236 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001237 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001238 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001239 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001240 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001241 arch: {
1242 arm64: {
1243 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001244 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001245 },
1246 arm: {
1247 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001248 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001249 },
1250 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001251}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001252`),
1253 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001254myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001255.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001256.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/Test.h
1257.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BnTest.h
1258.intermediates/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl/aidl/foo/bar/BpTest.h
Colin Cross7113d202019-11-20 16:39:12 -08001259.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001260.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/Test.h
1261.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BnTest.h
1262.intermediates/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BpTest.h -> arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001263`),
1264 )
1265}
1266
1267func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001268 t.Parallel()
Paul Duffin9ab556f2019-12-11 18:42:17 +00001269 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001270 module_exports {
1271 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001272 device_supported: false,
1273 host_supported: true,
1274 native_static_libs: ["mynativelib"],
1275 }
1276
1277 cc_library_static {
1278 name: "mynativelib",
1279 device_supported: false,
1280 host_supported: true,
1281 srcs: [
1282 "Test.cpp",
1283 "aidl/foo/bar/Test.aidl",
1284 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001285 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001286 aidl: {
1287 export_aidl_headers: true,
1288 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001289 stl: "none",
1290 }
1291 `)
1292
Paul Duffin36474d32021-03-12 12:19:43 +00001293 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001294 checkAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001295// This is auto-generated. DO NOT EDIT.
1296
Spandan Dasa5e26d32024-03-06 14:04:36 +00001297apex_contributions_defaults {
1298 name: "myexports.contributions",
1299 contents: ["prebuilt_mynativelib"],
1300}
1301
Paul Duffin9ab556f2019-12-11 18:42:17 +00001302cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001303 name: "mynativelib",
1304 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001305 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001306 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001307 device_supported: false,
1308 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001309 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001310 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001311 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001312 target: {
1313 host: {
1314 enabled: false,
1315 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001316 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001317 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001318 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001319 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001320 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001321 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001322 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001323 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001324 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001325 },
1326 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001327}
Paul Duffin75b902a2021-02-22 12:13:13 +00001328`),
Paul Duffin9ab556f2019-12-11 18:42:17 +00001329 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001330myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001331.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001332.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h
1333.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h
1334.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001335.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001336.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/Test.h
1337.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BnTest.h
1338.intermediates/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h -> x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001339`),
1340 )
1341}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001342
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001343func TestSnapshotWithCcLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001344 t.Parallel()
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001345 result := testSdkWithCc(t, `
1346 module_exports {
1347 name: "myexports",
1348 native_libs: ["mynativelib"],
1349 }
1350
1351 cc_library {
1352 name: "mynativelib",
1353 srcs: [
1354 "Test.cpp",
1355 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001356 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001357 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001358 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001359 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001360 }
1361 `)
1362
Paul Duffin36474d32021-03-12 12:19:43 +00001363 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001364 checkAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001365// This is auto-generated. DO NOT EDIT.
1366
Spandan Dasa5e26d32024-03-06 14:04:36 +00001367apex_contributions_defaults {
1368 name: "myexports.contributions",
1369 contents: ["prebuilt_mynativelib"],
1370}
1371
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001372cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001373 name: "mynativelib",
1374 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001375 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001376 apex_available: ["//apex_available:platform"],
Paul Duffind1edbd42020-08-13 19:45:31 +01001377 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001378 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001379 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001380 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001381 arch: {
1382 arm64: {
1383 static: {
1384 srcs: ["arm64/lib/mynativelib.a"],
1385 },
1386 shared: {
1387 srcs: ["arm64/lib/mynativelib.so"],
1388 },
1389 },
1390 arm: {
1391 static: {
1392 srcs: ["arm/lib/mynativelib.a"],
1393 },
1394 shared: {
1395 srcs: ["arm/lib/mynativelib.so"],
1396 },
1397 },
1398 },
1399}
Paul Duffin75b902a2021-02-22 12:13:13 +00001400`),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001401 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001402myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001403.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1404.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1405.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin1822a0a2021-03-21 12:56:33 +00001406.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1407`),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001408 )
1409}
1410
Liz Kammer96320df2022-05-12 20:40:00 -04001411func TestSnapshotSameLibraryWithNativeLibsAndNativeSharedLib(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001412 t.Parallel()
Liz Kammer96320df2022-05-12 20:40:00 -04001413 result := testSdkWithCc(t, `
1414 module_exports {
1415 host_supported: true,
1416 name: "myexports",
1417 target: {
1418 android: {
1419 native_shared_libs: [
1420 "mynativelib",
1421 ],
1422 },
1423 not_windows: {
1424 native_libs: [
1425 "mynativelib",
1426 ],
1427 },
1428 },
1429 }
1430
1431 cc_library {
1432 name: "mynativelib",
1433 host_supported: true,
1434 srcs: [
1435 "Test.cpp",
1436 ],
1437 stl: "none",
1438 recovery_available: true,
1439 vendor_available: true,
1440 }
1441 `)
1442
1443 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001444 checkAndroidBpContents(`
Liz Kammer96320df2022-05-12 20:40:00 -04001445// This is auto-generated. DO NOT EDIT.
1446
Spandan Dasa5e26d32024-03-06 14:04:36 +00001447apex_contributions_defaults {
1448 name: "myexports.contributions",
1449 contents: ["prebuilt_mynativelib"],
1450}
1451
Liz Kammer96320df2022-05-12 20:40:00 -04001452cc_prebuilt_library {
1453 name: "mynativelib",
1454 prefer: false,
1455 visibility: ["//visibility:public"],
1456 apex_available: ["//apex_available:platform"],
1457 host_supported: true,
1458 vendor_available: true,
1459 stl: "none",
1460 compile_multilib: "both",
1461 target: {
1462 host: {
1463 enabled: false,
1464 },
1465 android_arm64: {
1466 shared: {
1467 srcs: ["android/arm64/lib/mynativelib.so"],
1468 },
1469 static: {
1470 enabled: false,
1471 },
1472 },
1473 android_arm: {
1474 shared: {
1475 srcs: ["android/arm/lib/mynativelib.so"],
1476 },
1477 static: {
1478 enabled: false,
1479 },
1480 },
1481 linux_glibc_x86_64: {
1482 enabled: true,
1483 static: {
1484 srcs: ["linux_glibc/x86_64/lib/mynativelib.a"],
1485 },
1486 shared: {
1487 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1488 },
1489 },
1490 linux_glibc_x86: {
1491 enabled: true,
1492 static: {
1493 srcs: ["linux_glibc/x86/lib/mynativelib.a"],
1494 },
1495 shared: {
1496 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1497 },
1498 },
1499 },
1500}
1501`),
1502 checkAllCopyRules(`
1503.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1504.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1505.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> linux_glibc/x86_64/lib/mynativelib.a
1506.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1507.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> linux_glibc/x86/lib/mynativelib.a
1508.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1509`),
1510 )
1511}
1512
1513func TestSnapshotSameLibraryWithAndroidNativeLibsAndHostNativeSharedLib(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001514 t.Parallel()
Liz Kammer96320df2022-05-12 20:40:00 -04001515 result := testSdkWithCc(t, `
1516 module_exports {
1517 host_supported: true,
1518 name: "myexports",
1519 target: {
1520 android: {
1521 native_libs: [
1522 "mynativelib",
1523 ],
1524 },
1525 not_windows: {
1526 native_shared_libs: [
1527 "mynativelib",
1528 ],
1529 },
1530 },
1531 }
1532
1533 cc_library {
1534 name: "mynativelib",
1535 host_supported: true,
1536 srcs: [
1537 "Test.cpp",
1538 ],
1539 stl: "none",
1540 recovery_available: true,
1541 vendor_available: true,
1542 }
1543 `)
1544
1545 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001546 checkAndroidBpContents(`
Liz Kammer96320df2022-05-12 20:40:00 -04001547// This is auto-generated. DO NOT EDIT.
1548
Spandan Dasa5e26d32024-03-06 14:04:36 +00001549apex_contributions_defaults {
1550 name: "myexports.contributions",
1551 contents: ["prebuilt_mynativelib"],
1552}
1553
Liz Kammer96320df2022-05-12 20:40:00 -04001554cc_prebuilt_library {
1555 name: "mynativelib",
1556 prefer: false,
1557 visibility: ["//visibility:public"],
1558 apex_available: ["//apex_available:platform"],
1559 host_supported: true,
1560 vendor_available: true,
1561 stl: "none",
1562 compile_multilib: "both",
1563 target: {
1564 host: {
1565 enabled: false,
1566 },
1567 android_arm64: {
1568 static: {
1569 srcs: ["android/arm64/lib/mynativelib.a"],
1570 },
1571 shared: {
1572 srcs: ["android/arm64/lib/mynativelib.so"],
1573 },
1574 },
1575 android_arm: {
1576 static: {
1577 srcs: ["android/arm/lib/mynativelib.a"],
1578 },
1579 shared: {
1580 srcs: ["android/arm/lib/mynativelib.so"],
1581 },
1582 },
1583 linux_glibc_x86_64: {
1584 enabled: true,
1585 shared: {
1586 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1587 },
1588 static: {
1589 enabled: false,
1590 },
1591 },
1592 linux_glibc_x86: {
1593 enabled: true,
1594 shared: {
1595 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1596 },
1597 static: {
1598 enabled: false,
1599 },
1600 },
1601 },
1602}
1603`),
1604 checkAllCopyRules(`
1605.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> android/arm64/lib/mynativelib.a
1606.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1607.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> android/arm/lib/mynativelib.a
1608.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1609.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1610.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1611`),
1612 )
1613}
1614
1615func TestSnapshotSameLibraryWithNativeStaticLibsAndNativeSharedLib(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001616 t.Parallel()
Liz Kammer96320df2022-05-12 20:40:00 -04001617 testSdkError(t, "Incompatible member types", `
1618 module_exports {
1619 host_supported: true,
1620 name: "myexports",
1621 target: {
1622 android: {
1623 native_shared_libs: [
1624 "mynativelib",
1625 ],
1626 },
1627 not_windows: {
1628 native_static_libs: [
1629 "mynativelib",
1630 ],
1631 },
1632 },
1633 }
1634
1635 cc_library {
1636 name: "mynativelib",
1637 host_supported: true,
1638 srcs: [
1639 ],
1640 stl: "none",
1641 recovery_available: true,
1642 vendor_available: true,
1643 }
1644 `)
1645}
1646
Paul Duffin13ad94f2020-02-19 16:19:27 +00001647func TestHostSnapshotWithMultiLib64(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001648 t.Parallel()
Paul Duffin13ad94f2020-02-19 16:19:27 +00001649 result := testSdkWithCc(t, `
1650 module_exports {
1651 name: "myexports",
1652 device_supported: false,
1653 host_supported: true,
1654 target: {
1655 host: {
1656 compile_multilib: "64",
1657 },
1658 },
1659 native_static_libs: ["mynativelib"],
1660 }
1661
1662 cc_library_static {
1663 name: "mynativelib",
1664 device_supported: false,
1665 host_supported: true,
1666 srcs: [
1667 "Test.cpp",
1668 "aidl/foo/bar/Test.aidl",
1669 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001670 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001671 aidl: {
1672 export_aidl_headers: true,
1673 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001674 stl: "none",
1675 }
1676 `)
1677
Paul Duffin36474d32021-03-12 12:19:43 +00001678 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001679 checkAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001680// This is auto-generated. DO NOT EDIT.
1681
Spandan Dasa5e26d32024-03-06 14:04:36 +00001682apex_contributions_defaults {
1683 name: "myexports.contributions",
1684 contents: ["prebuilt_mynativelib"],
1685}
1686
Paul Duffin13ad94f2020-02-19 16:19:27 +00001687cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001688 name: "mynativelib",
1689 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001690 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001691 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001692 device_supported: false,
1693 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001694 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001695 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001696 export_include_dirs: [
1697 "include/myinclude",
1698 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1699 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001700 target: {
1701 host: {
1702 enabled: false,
1703 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001704 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001705 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001706 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001707 },
1708 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001709}
Paul Duffin75b902a2021-02-22 12:13:13 +00001710`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001711 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001712myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00001713.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/Test.h
1714.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BnTest.h
1715.intermediates/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h -> include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl/aidl/foo/bar/BpTest.h
Paul Duffin13ad94f2020-02-19 16:19:27 +00001716.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00001717`),
1718 )
1719}
Paul Duffin91756d22020-02-21 16:29:57 +00001720
1721func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001722 t.Parallel()
Paul Duffin91756d22020-02-21 16:29:57 +00001723 result := testSdkWithCc(t, `
1724 sdk {
1725 name: "mysdk",
1726 native_header_libs: ["mynativeheaders"],
1727 }
1728
1729 cc_library_headers {
1730 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001731 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001732 stl: "none",
1733 }
1734 `)
1735
Paul Duffin36474d32021-03-12 12:19:43 +00001736 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001737 checkAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001738// This is auto-generated. DO NOT EDIT.
1739
Spandan Dasa5e26d32024-03-06 14:04:36 +00001740apex_contributions_defaults {
1741 name: "mysdk.contributions",
1742 contents: ["prebuilt_mynativeheaders"],
1743}
1744
Paul Duffin91756d22020-02-21 16:29:57 +00001745cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001746 name: "mynativeheaders",
1747 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001748 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001749 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001750 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001751 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001752 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001753}
Paul Duffin91756d22020-02-21 16:29:57 +00001754`),
1755 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001756myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001757`),
1758 )
1759}
1760
Paul Duffin93b750e2019-11-19 19:44:10 +00001761func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001762 t.Parallel()
Paul Duffin93b750e2019-11-19 19:44:10 +00001763 result := android.GroupFixturePreparers(
1764 cc.PrepareForTestWithCcDefaultModules,
1765 PrepareForTestWithSdkBuildComponents,
1766 ccTestFs.AddToFixture(),
1767 prepareForTestWithNativeBridgeTarget,
Spandan Dasa5e26d32024-03-06 14:04:36 +00001768 android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
1769 android.RegisterApexContributionsBuildComponents(ctx)
1770 }),
Paul Duffin93b750e2019-11-19 19:44:10 +00001771 ).RunTestWithBp(t, `
1772 sdk {
1773 name: "mysdk",
1774 native_header_libs: ["mynativeheaders"],
1775 traits: {
1776 native_bridge_support: ["mynativeheaders"],
1777 },
1778 }
1779
1780 cc_library_headers {
1781 name: "mynativeheaders",
1782 export_include_dirs: ["myinclude"],
1783 stl: "none",
1784 system_shared_libs: [],
1785 native_bridge_supported: true,
1786 }
1787 `)
1788
1789 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001790 checkAndroidBpContents(`
Paul Duffin93b750e2019-11-19 19:44:10 +00001791// This is auto-generated. DO NOT EDIT.
1792
Spandan Dasa5e26d32024-03-06 14:04:36 +00001793apex_contributions_defaults {
1794 name: "mysdk.contributions",
1795 contents: ["prebuilt_mynativeheaders"],
1796}
1797
Paul Duffin93b750e2019-11-19 19:44:10 +00001798cc_prebuilt_library_headers {
1799 name: "mynativeheaders",
1800 prefer: false,
1801 visibility: ["//visibility:public"],
1802 apex_available: ["//apex_available:platform"],
1803 native_bridge_supported: true,
1804 stl: "none",
1805 compile_multilib: "both",
1806 system_shared_libs: [],
1807 export_include_dirs: ["include/myinclude"],
1808}
1809`),
1810 checkAllCopyRules(`
1811myinclude/Test.h -> include/myinclude/Test.h
1812`),
1813 )
1814}
1815
1816// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
1817// module that has different output files for a native bridge target requests the native bridge
1818// variants are copied into the sdk snapshot that it reports an error.
1819func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001820 t.Parallel()
Paul Duffin93b750e2019-11-19 19:44:10 +00001821 android.GroupFixturePreparers(
1822 cc.PrepareForTestWithCcDefaultModules,
1823 PrepareForTestWithSdkBuildComponents,
1824 ccTestFs.AddToFixture(),
1825 prepareForTestWithNativeBridgeTarget,
1826 ).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
1827 `\QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants; this is not yet supported. The properties are:
1828 export_include_dirs: [
1829 "arm64_native_bridge/include/myinclude_nativebridge",
1830 "arm64_native_bridge/include/myinclude",
1831 ],\E`)).
1832 RunTestWithBp(t, `
1833 sdk {
1834 name: "mysdk",
1835 native_header_libs: ["mynativeheaders"],
1836 traits: {
1837 native_bridge_support: ["mynativeheaders"],
1838 },
1839 }
1840
1841 cc_library_headers {
1842 name: "mynativeheaders",
1843 export_include_dirs: ["myinclude"],
1844 stl: "none",
1845 system_shared_libs: [],
1846 native_bridge_supported: true,
1847 target: {
1848 native_bridge: {
1849 export_include_dirs: ["myinclude_nativebridge"],
1850 },
1851 },
1852 }
1853 `)
1854}
1855
Paul Duffin63696222021-09-06 10:28:34 +01001856func TestSnapshotWithCcHeadersLibraryAndImageVariants(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001857 t.Parallel()
Paul Duffin63696222021-09-06 10:28:34 +01001858 testImageVariant := func(t *testing.T, property, trait string) {
1859 result := android.GroupFixturePreparers(
1860 cc.PrepareForTestWithCcDefaultModules,
1861 PrepareForTestWithSdkBuildComponents,
1862 ccTestFs.AddToFixture(),
Spandan Dasa5e26d32024-03-06 14:04:36 +00001863 android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
1864 android.RegisterApexContributionsBuildComponents(ctx)
1865 }),
Paul Duffin63696222021-09-06 10:28:34 +01001866 ).RunTestWithBp(t, fmt.Sprintf(`
1867 sdk {
1868 name: "mysdk",
1869 native_header_libs: ["mynativeheaders"],
1870 traits: {
1871 %s: ["mynativeheaders"],
1872 },
1873 }
1874
1875 cc_library_headers {
1876 name: "mynativeheaders",
1877 export_include_dirs: ["myinclude"],
1878 stl: "none",
1879 system_shared_libs: [],
1880 %s: true,
1881 }
1882 `, trait, property))
1883
1884 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001885 checkAndroidBpContents(fmt.Sprintf(`
Paul Duffin63696222021-09-06 10:28:34 +01001886// This is auto-generated. DO NOT EDIT.
1887
Spandan Dasa5e26d32024-03-06 14:04:36 +00001888apex_contributions_defaults {
1889 name: "mysdk.contributions",
1890 contents: ["prebuilt_mynativeheaders"],
1891}
1892
Paul Duffin63696222021-09-06 10:28:34 +01001893cc_prebuilt_library_headers {
1894 name: "mynativeheaders",
1895 prefer: false,
1896 visibility: ["//visibility:public"],
1897 apex_available: ["//apex_available:platform"],
1898 %s: true,
1899 stl: "none",
1900 compile_multilib: "both",
1901 system_shared_libs: [],
1902 export_include_dirs: ["include/myinclude"],
1903}
1904`, property)),
1905 checkAllCopyRules(`
1906myinclude/Test.h -> include/myinclude/Test.h
1907`),
1908 )
1909 }
1910
Paul Duffin12a0a312021-09-15 17:25:10 +01001911 t.Run("ramdisk", func(t *testing.T) {
1912 testImageVariant(t, "ramdisk_available", "ramdisk_image_required")
1913 })
1914
Paul Duffin63696222021-09-06 10:28:34 +01001915 t.Run("recovery", func(t *testing.T) {
1916 testImageVariant(t, "recovery_available", "recovery_image_required")
1917 })
1918}
1919
Paul Duffin91756d22020-02-21 16:29:57 +00001920func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001921 t.Parallel()
Paul Duffin91756d22020-02-21 16:29:57 +00001922 result := testSdkWithCc(t, `
1923 sdk {
1924 name: "mysdk",
1925 device_supported: false,
1926 host_supported: true,
1927 native_header_libs: ["mynativeheaders"],
1928 }
1929
1930 cc_library_headers {
1931 name: "mynativeheaders",
1932 device_supported: false,
1933 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00001934 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001935 stl: "none",
1936 }
1937 `)
1938
Paul Duffin36474d32021-03-12 12:19:43 +00001939 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001940 checkAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001941// This is auto-generated. DO NOT EDIT.
1942
Spandan Dasa5e26d32024-03-06 14:04:36 +00001943apex_contributions_defaults {
1944 name: "mysdk.contributions",
1945 contents: ["prebuilt_mynativeheaders"],
1946}
1947
Paul Duffin91756d22020-02-21 16:29:57 +00001948cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00001949 name: "mynativeheaders",
1950 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001951 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001952 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001953 device_supported: false,
1954 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001955 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001956 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001957 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001958 target: {
1959 host: {
1960 enabled: false,
1961 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001962 linux_glibc_x86_64: {
1963 enabled: true,
1964 },
1965 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001966 enabled: true,
1967 },
1968 },
Paul Duffin91756d22020-02-21 16:29:57 +00001969}
Paul Duffin75b902a2021-02-22 12:13:13 +00001970`),
Paul Duffin91756d22020-02-21 16:29:57 +00001971 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001972myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001973`),
1974 )
1975}
Paul Duffina04c1072020-03-02 10:16:35 +00001976
1977func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08001978 t.Parallel()
Paul Duffina04c1072020-03-02 10:16:35 +00001979 result := testSdkWithCc(t, `
1980 sdk {
1981 name: "mysdk",
1982 host_supported: true,
1983 native_header_libs: ["mynativeheaders"],
1984 }
1985
1986 cc_library_headers {
1987 name: "mynativeheaders",
1988 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001989 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00001990 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00001991 target: {
1992 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001993 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00001994 },
1995 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001996 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00001997 },
1998 },
1999 }
2000 `)
2001
Paul Duffin36474d32021-03-12 12:19:43 +00002002 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002003 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002004// This is auto-generated. DO NOT EDIT.
2005
Spandan Dasa5e26d32024-03-06 14:04:36 +00002006apex_contributions_defaults {
2007 name: "mysdk.contributions",
2008 contents: ["prebuilt_mynativeheaders"],
2009}
2010
Paul Duffina04c1072020-03-02 10:16:35 +00002011cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002012 name: "mynativeheaders",
2013 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002014 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002015 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002016 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002017 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002018 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002019 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002020 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002021 host: {
2022 enabled: false,
2023 },
Paul Duffina04c1072020-03-02 10:16:35 +00002024 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002025 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002026 },
2027 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002028 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002029 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002030 linux_glibc_x86_64: {
2031 enabled: true,
2032 },
2033 linux_glibc_x86: {
2034 enabled: true,
2035 },
Paul Duffina04c1072020-03-02 10:16:35 +00002036 },
Paul Duffina04c1072020-03-02 10:16:35 +00002037}
Paul Duffin75b902a2021-02-22 12:13:13 +00002038`),
Paul Duffina04c1072020-03-02 10:16:35 +00002039 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002040myinclude/Test.h -> common_os/include/myinclude/Test.h
2041myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2042myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002043`),
2044 )
2045}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002046
2047func TestSystemSharedLibPropagation(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08002048 t.Parallel()
Martin Stjernholm10566a02020-03-24 01:19:52 +00002049 result := testSdkWithCc(t, `
2050 sdk {
2051 name: "mysdk",
Colin Cross6b8f4252021-07-22 11:39:44 -07002052 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002053 }
2054
2055 cc_library {
2056 name: "sslnil",
2057 host_supported: true,
2058 }
2059
2060 cc_library {
2061 name: "sslempty",
2062 system_shared_libs: [],
2063 }
2064
2065 cc_library {
2066 name: "sslnonempty",
2067 system_shared_libs: ["sslnil"],
2068 }
2069 `)
2070
Paul Duffin36474d32021-03-12 12:19:43 +00002071 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002072 checkAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002073// This is auto-generated. DO NOT EDIT.
2074
Spandan Dasa5e26d32024-03-06 14:04:36 +00002075apex_contributions_defaults {
2076 name: "mysdk.contributions",
2077 contents: [
2078 "prebuilt_sslnil",
2079 "prebuilt_sslempty",
2080 "prebuilt_sslnonempty",
2081 ],
2082}
2083
Martin Stjernholm10566a02020-03-24 01:19:52 +00002084cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002085 name: "sslnil",
2086 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002087 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002088 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002089 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002090 arch: {
2091 arm64: {
2092 srcs: ["arm64/lib/sslnil.so"],
2093 },
2094 arm: {
2095 srcs: ["arm/lib/sslnil.so"],
2096 },
2097 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002098 strip: {
2099 none: true,
2100 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002101}
2102
2103cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002104 name: "sslempty",
2105 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002106 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002107 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002108 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002109 system_shared_libs: [],
2110 arch: {
2111 arm64: {
2112 srcs: ["arm64/lib/sslempty.so"],
2113 },
2114 arm: {
2115 srcs: ["arm/lib/sslempty.so"],
2116 },
2117 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002118 strip: {
2119 none: true,
2120 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002121}
2122
2123cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002124 name: "sslnonempty",
2125 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002126 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002127 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002128 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002129 system_shared_libs: ["sslnil"],
2130 arch: {
2131 arm64: {
2132 srcs: ["arm64/lib/sslnonempty.so"],
2133 },
2134 arm: {
2135 srcs: ["arm/lib/sslnonempty.so"],
2136 },
2137 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002138 strip: {
2139 none: true,
2140 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002141}
Colin Cross6b8f4252021-07-22 11:39:44 -07002142`))
Martin Stjernholm10566a02020-03-24 01:19:52 +00002143
2144 result = testSdkWithCc(t, `
2145 sdk {
2146 name: "mysdk",
2147 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002148 native_shared_libs: ["sslvariants"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002149 }
2150
2151 cc_library {
2152 name: "sslvariants",
2153 host_supported: true,
2154 target: {
2155 android: {
2156 system_shared_libs: [],
2157 },
2158 },
2159 }
2160 `)
2161
Paul Duffin36474d32021-03-12 12:19:43 +00002162 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002163 checkAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002164// This is auto-generated. DO NOT EDIT.
2165
Spandan Dasa5e26d32024-03-06 14:04:36 +00002166apex_contributions_defaults {
2167 name: "mysdk.contributions",
2168 contents: ["prebuilt_sslvariants"],
2169}
2170
Martin Stjernholm10566a02020-03-24 01:19:52 +00002171cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002172 name: "sslvariants",
2173 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002174 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002175 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002176 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002177 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002178 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002179 host: {
2180 enabled: false,
2181 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002182 android: {
2183 system_shared_libs: [],
2184 },
2185 android_arm64: {
2186 srcs: ["android/arm64/lib/sslvariants.so"],
2187 },
2188 android_arm: {
2189 srcs: ["android/arm/lib/sslvariants.so"],
2190 },
2191 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002192 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002193 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2194 },
2195 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002196 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002197 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2198 },
2199 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002200 strip: {
2201 none: true,
2202 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002203}
Paul Duffin75b902a2021-02-22 12:13:13 +00002204`),
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002205 )
Martin Stjernholm10566a02020-03-24 01:19:52 +00002206}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002207
2208func TestStubsLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08002209 t.Parallel()
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002210 result := testSdkWithCc(t, `
2211 sdk {
2212 name: "mysdk",
2213 native_shared_libs: ["stubslib"],
2214 }
2215
2216 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002217 name: "internaldep",
2218 }
2219
2220 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002221 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002222 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002223 stubs: {
2224 symbol_file: "some/where/stubslib.map.txt",
2225 versions: ["1", "2", "3"],
2226 },
2227 }
2228 `)
2229
Paul Duffin36474d32021-03-12 12:19:43 +00002230 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002231 checkAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002232// This is auto-generated. DO NOT EDIT.
2233
Spandan Dasa5e26d32024-03-06 14:04:36 +00002234apex_contributions_defaults {
2235 name: "mysdk.contributions",
2236 contents: ["prebuilt_stubslib"],
2237}
2238
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002239cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002240 name: "stubslib",
2241 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002242 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002243 apex_available: ["//apex_available:platform"],
Colin Cross694fced2024-06-25 14:56:42 -07002244 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002245 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002246 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002247 versions: [
2248 "1",
2249 "2",
2250 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002251 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002252 ],
Spandan Dase20c56c2024-07-23 21:34:24 +00002253 symbol_file: "stubslib.map.txt",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002254 },
2255 arch: {
2256 arm64: {
2257 srcs: ["arm64/lib/stubslib.so"],
2258 },
2259 arm: {
2260 srcs: ["arm/lib/stubslib.so"],
2261 },
2262 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002263 strip: {
2264 none: true,
2265 },
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002266}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002267`))
2268}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002269
2270func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08002271 t.Parallel()
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002272 result := testSdkWithCc(t, `
2273 sdk {
2274 name: "mysdk",
2275 host_supported: true,
2276 native_shared_libs: ["stubslib"],
2277 }
2278
2279 cc_library {
2280 name: "internaldep",
2281 host_supported: true,
2282 }
2283
2284 cc_library {
2285 name: "stubslib",
2286 host_supported: true,
2287 shared_libs: ["internaldep"],
2288 stubs: {
2289 symbol_file: "some/where/stubslib.map.txt",
2290 versions: ["1", "2", "3"],
2291 },
2292 }
2293 `)
2294
Paul Duffin36474d32021-03-12 12:19:43 +00002295 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002296 checkAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002297// This is auto-generated. DO NOT EDIT.
2298
Spandan Dasa5e26d32024-03-06 14:04:36 +00002299apex_contributions_defaults {
2300 name: "mysdk.contributions",
2301 contents: ["prebuilt_stubslib"],
2302}
2303
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002304cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002305 name: "stubslib",
2306 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002307 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002308 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002309 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002310 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002311 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002312 versions: [
2313 "1",
2314 "2",
2315 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002316 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002317 ],
Spandan Dase20c56c2024-07-23 21:34:24 +00002318 symbol_file: "stubslib.map.txt",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002319 },
2320 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002321 host: {
2322 enabled: false,
2323 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002324 android_arm64: {
2325 srcs: ["android/arm64/lib/stubslib.so"],
2326 },
2327 android_arm: {
2328 srcs: ["android/arm/lib/stubslib.so"],
2329 },
2330 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002331 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002332 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2333 },
2334 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002335 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002336 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2337 },
2338 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002339 strip: {
2340 none: true,
2341 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002342}
Paul Duffin75b902a2021-02-22 12:13:13 +00002343`),
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002344 )
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002345}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002346
2347func TestUniqueHostSoname(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08002348 t.Parallel()
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002349 result := testSdkWithCc(t, `
2350 sdk {
2351 name: "mysdk",
2352 host_supported: true,
2353 native_shared_libs: ["mylib"],
2354 }
2355
2356 cc_library {
2357 name: "mylib",
2358 host_supported: true,
2359 unique_host_soname: true,
2360 }
2361 `)
2362
Paul Duffin36474d32021-03-12 12:19:43 +00002363 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002364 checkAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002365// This is auto-generated. DO NOT EDIT.
2366
Spandan Dasa5e26d32024-03-06 14:04:36 +00002367apex_contributions_defaults {
2368 name: "mysdk.contributions",
2369 contents: ["prebuilt_mylib"],
2370}
2371
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002372cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002373 name: "mylib",
2374 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002375 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002376 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002377 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002378 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002379 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002380 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002381 host: {
2382 enabled: false,
2383 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002384 android_arm64: {
2385 srcs: ["android/arm64/lib/mylib.so"],
2386 },
2387 android_arm: {
2388 srcs: ["android/arm/lib/mylib.so"],
2389 },
2390 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002391 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002392 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2393 },
2394 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002395 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002396 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2397 },
2398 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002399 strip: {
2400 none: true,
2401 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002402}
Paul Duffin75b902a2021-02-22 12:13:13 +00002403`),
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002404 checkAllCopyRules(`
2405.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2406.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2407.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2408.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2409`),
2410 )
2411}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002412
2413func TestNoSanitizerMembers(t *testing.T) {
Colin Crossaba8cd92025-02-05 16:39:18 -08002414 t.Parallel()
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002415 result := testSdkWithCc(t, `
2416 sdk {
2417 name: "mysdk",
2418 native_shared_libs: ["mynativelib"],
2419 }
2420
2421 cc_library_shared {
2422 name: "mynativelib",
2423 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002424 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002425 arch: {
2426 arm64: {
2427 export_system_include_dirs: ["arm64/include"],
2428 sanitize: {
2429 hwaddress: true,
2430 },
2431 },
2432 },
2433 }
2434 `)
2435
Paul Duffin36474d32021-03-12 12:19:43 +00002436 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002437 checkAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002438// This is auto-generated. DO NOT EDIT.
2439
Spandan Dasa5e26d32024-03-06 14:04:36 +00002440apex_contributions_defaults {
2441 name: "mysdk.contributions",
2442 contents: ["prebuilt_mynativelib"],
2443}
2444
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002445cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002446 name: "mynativelib",
2447 prefer: false,
2448 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002449 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002450 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002451 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002452 arch: {
2453 arm64: {
2454 export_system_include_dirs: ["arm64/include/arm64/include"],
2455 },
2456 arm: {
2457 srcs: ["arm/lib/mynativelib.so"],
2458 },
2459 },
Alyssa Ketpreechasawat59ec0fa2024-07-04 19:51:17 +00002460 strip: {
2461 none: true,
2462 },
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002463}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002464`),
2465 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002466myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002467arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Paul Duffin1822a0a2021-03-21 12:56:33 +00002468.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
2469`),
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002470 )
2471}