blob: 9490d125697a4fa06a07d03ab88f6a897d6e0d0b [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) {
61 // Mock a module with DeviceSupported() == true.
62 s := &sdk{}
63 android.InitAndroidArchModule(s, android.DeviceSupported, android.MultilibCommon)
64
65 osTypes := s.getPossibleOsTypes()
66 if len(osTypes) != 1 {
67 // The snapshot generation assumes there is a single device OS. If more are
68 // added it might need to disable them by default, like it does for host
69 // OS'es.
70 t.Errorf("expected a single device OS, got %v", osTypes)
71 }
72}
73
Paul Duffina80fdec2019-12-03 15:25:00 +000074func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000075 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000076 sdk {
77 name: "mysdk",
78 native_shared_libs: ["sdkmember"],
79 }
80
81 cc_library_shared {
82 name: "sdkmember",
83 srcs: ["Test.cpp"],
Paul Duffina80fdec2019-12-03 15:25:00 +000084 stl: "none",
85 }
86 `)
87
Colin Cross7113d202019-11-20 16:39:12 -080088 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
89 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000090
91 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000092 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000093 for _, bp := range buildParams {
94 if bp.Input != nil {
95 inputs = append(inputs, bp.Input.String())
96 }
97 }
98
99 // ensure that both 32/64 outputs are inputs of the sdk snapshot
100 ensureListContains(t, inputs, armOutput.String())
101 ensureListContains(t, inputs, arm64Output.String())
102}
103
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100104func TestSdkCompileMultilibOverride(t *testing.T) {
105 result := testSdkWithCc(t, `
106 sdk {
107 name: "mysdk",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100108 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100109 native_shared_libs: ["sdkmember"],
110 compile_multilib: "64",
111 }
112
113 cc_library_shared {
114 name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100115 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100116 srcs: ["Test.cpp"],
117 stl: "none",
118 compile_multilib: "64",
119 }
120 `)
121
Paul Duffin36474d32021-03-12 12:19:43 +0000122 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000123 checkAndroidBpContents(`
Martin Stjernholm89238f42020-07-10 00:14:03 +0100124// This is auto-generated. DO NOT EDIT.
125
Spandan Dasa5e26d32024-03-06 14:04:36 +0000126apex_contributions_defaults {
127 name: "mysdk.contributions",
128 contents: ["prebuilt_sdkmember"],
129}
130
Martin Stjernholm89238f42020-07-10 00:14:03 +0100131cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000132 name: "sdkmember",
133 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100134 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000135 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100136 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100137 stl: "none",
138 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100139 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100140 host: {
141 enabled: false,
142 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100143 android_arm64: {
144 srcs: ["android/arm64/lib/sdkmember.so"],
145 },
146 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900147 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100148 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100149 },
150 },
151}
Paul Duffin75b902a2021-02-22 12:13:13 +0000152`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100153 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100154.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
155.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100156`))
157}
158
Paul Duffina0843f62019-12-13 19:50:38 +0000159// Make sure the sdk can use host specific cc libraries static/shared and both.
160func TestHostSdkWithCc(t *testing.T) {
161 testSdkWithCc(t, `
162 sdk {
163 name: "mysdk",
164 device_supported: false,
165 host_supported: true,
166 native_shared_libs: ["sdkshared"],
167 native_static_libs: ["sdkstatic"],
168 }
169
170 cc_library_host_shared {
171 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000172 stl: "none",
173 }
174
175 cc_library_host_static {
176 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000177 stl: "none",
178 }
179 `)
180}
181
182// Make sure the sdk can use cc libraries static/shared and both.
183func TestSdkWithCc(t *testing.T) {
184 testSdkWithCc(t, `
185 sdk {
186 name: "mysdk",
187 native_shared_libs: ["sdkshared", "sdkboth1"],
188 native_static_libs: ["sdkstatic", "sdkboth2"],
189 }
190
191 cc_library_shared {
192 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000193 stl: "none",
194 }
195
196 cc_library_static {
197 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000198 stl: "none",
199 }
200
201 cc_library {
202 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000203 stl: "none",
204 }
205
206 cc_library {
207 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000208 stl: "none",
209 }
210 `)
211}
212
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000213func TestSnapshotWithObject(t *testing.T) {
214 result := testSdkWithCc(t, `
215 sdk {
216 name: "mysdk",
217 native_objects: ["crtobj"],
218 }
219
220 cc_object {
221 name: "crtobj",
222 stl: "none",
Colin Cross6b8f4252021-07-22 11:39:44 -0700223 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100224 sanitize: {
225 never: true,
226 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000227 }
228 `)
229
Paul Duffin36474d32021-03-12 12:19:43 +0000230 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000231 checkAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000232// This is auto-generated. DO NOT EDIT.
233
Spandan Dasa5e26d32024-03-06 14:04:36 +0000234apex_contributions_defaults {
235 name: "mysdk.contributions",
236 contents: ["prebuilt_crtobj"],
237}
238
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000239cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000240 name: "crtobj",
241 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100242 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000243 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000244 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100245 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700246 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100247 sanitize: {
248 never: true,
249 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000250 arch: {
251 arm64: {
252 srcs: ["arm64/lib/crtobj.o"],
253 },
254 arm: {
255 srcs: ["arm/lib/crtobj.o"],
256 },
257 },
258}
Paul Duffin75b902a2021-02-22 12:13:13 +0000259`),
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000260 checkAllCopyRules(`
261.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
262.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
263`),
264 )
265}
266
Paul Duffinc62a5102019-12-11 18:34:15 +0000267func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
268 result := testSdkWithCc(t, `
269 sdk {
270 name: "mysdk",
271 native_shared_libs: ["mynativelib1", "mynativelib2"],
272 }
273
274 cc_library_shared {
275 name: "mynativelib1",
276 srcs: [
277 "Test.cpp",
278 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000279 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000280 stl: "none",
281 }
282
283 cc_library_shared {
284 name: "mynativelib2",
285 srcs: [
286 "Test.cpp",
287 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000288 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000289 stl: "none",
290 }
291 `)
292
Paul Duffin36474d32021-03-12 12:19:43 +0000293 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000294 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000295myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800296.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
297.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
298.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
299.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000300`),
301 )
302}
303
Paul Duffina43f9272021-02-17 10:55:25 +0000304func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
305 result := testSdkWithCc(t, `
306 sdk {
307 name: "mysdk",
308 native_shared_libs: ["mynativelib"],
309 }
310
311 cc_library_shared {
312 name: "mynativelib",
313 srcs: [
314 "Test.cpp",
315 ],
316 generated_headers: [
317 "generated_foo",
318 ],
319 export_generated_headers: [
320 "generated_foo",
321 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000322 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000323 stl: "none",
324 }
325
326 genrule {
327 name: "generated_foo",
328 cmd: "generate-foo",
329 out: [
330 "generated_foo/protos/foo/bar.h",
331 ],
332 export_include_dirs: [
333 ".",
334 "protos",
335 ],
336 }
337 `)
338
Paul Duffindb462dd2021-03-21 22:01:55 +0000339 // TODO(b/183322862): Remove this and fix the issue.
340 errorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist`)
341
Paul Duffin36474d32021-03-12 12:19:43 +0000342 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000343 checkAndroidBpContents(`
Paul Duffina43f9272021-02-17 10:55:25 +0000344// This is auto-generated. DO NOT EDIT.
345
Spandan Dasa5e26d32024-03-06 14:04:36 +0000346apex_contributions_defaults {
347 name: "mysdk.contributions",
348 contents: ["prebuilt_mynativelib"],
349}
350
Paul Duffina43f9272021-02-17 10:55:25 +0000351cc_prebuilt_library_shared {
352 name: "mynativelib",
353 prefer: false,
354 visibility: ["//visibility:public"],
355 apex_available: ["//apex_available:platform"],
356 stl: "none",
357 compile_multilib: "both",
Paul Duffin7a7d0672021-02-17 12:17:40 +0000358 export_include_dirs: [
359 "include/myinclude",
360 "include_gen/generated_foo/gen",
361 "include_gen/generated_foo/gen/protos",
362 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000363 arch: {
364 arm64: {
365 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000366 },
367 arm: {
368 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000369 },
370 },
371}
372`),
373 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000374myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000375.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 +0000376.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000377.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000378`),
Paul Duffindb462dd2021-03-21 22:01:55 +0000379 snapshotTestErrorHandler(checkSnapshotWithoutSource, errorHandler),
380 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, errorHandler),
381 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, errorHandler),
Paul Duffina43f9272021-02-17 10:55:25 +0000382 )
383}
384
Martin Stjernholmb0249572020-09-15 02:32:35 +0100385// Verify that when the shared library has some common and some arch specific
386// properties that the generated snapshot is optimized properly. Substruct
387// handling is tested with the sanitize clauses (but note there's a lot of
388// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000389func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
390 result := testSdkWithCc(t, `
391 sdk {
392 name: "mysdk",
393 native_shared_libs: ["mynativelib"],
394 }
395
396 cc_library_shared {
397 name: "mynativelib",
398 srcs: [
399 "Test.cpp",
400 "aidl/foo/bar/Test.aidl",
401 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000402 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100403 sanitize: {
404 fuzzer: false,
405 integer_overflow: true,
406 diag: { undefined: false },
407 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000408 arch: {
409 arm64: {
410 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100411 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100412 integer_overflow: false,
413 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000414 },
415 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000416 stl: "none",
417 }
418 `)
419
Paul Duffin36474d32021-03-12 12:19:43 +0000420 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000421 checkAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000422// This is auto-generated. DO NOT EDIT.
423
Spandan Dasa5e26d32024-03-06 14:04:36 +0000424apex_contributions_defaults {
425 name: "mysdk.contributions",
426 contents: ["prebuilt_mynativelib"],
427}
428
Paul Duffina7cd8c82019-12-11 20:00:57 +0000429cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000430 name: "mynativelib",
431 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100432 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000433 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000434 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100435 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000436 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100437 sanitize: {
438 fuzzer: false,
439 diag: {
440 undefined: false,
441 },
442 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000443 arch: {
444 arm64: {
445 srcs: ["arm64/lib/mynativelib.so"],
446 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100447 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100448 integer_overflow: false,
449 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000450 },
451 arm: {
452 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100453 sanitize: {
454 integer_overflow: true,
455 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000456 },
457 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000458}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000459`),
460 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000461myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000462.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000463arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800464.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000465 )
466}
467
Paul Duffin25ce04b2020-01-16 11:47:25 +0000468func TestSnapshotWithCcBinary(t *testing.T) {
469 result := testSdkWithCc(t, `
470 module_exports {
471 name: "mymodule_exports",
472 native_binaries: ["mynativebinary"],
473 }
474
475 cc_binary {
476 name: "mynativebinary",
477 srcs: [
478 "Test.cpp",
479 ],
480 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000481 }
482 `)
483
Paul Duffin36474d32021-03-12 12:19:43 +0000484 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000485 checkAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000486// This is auto-generated. DO NOT EDIT.
487
Spandan Dasa5e26d32024-03-06 14:04:36 +0000488apex_contributions_defaults {
489 name: "mymodule_exports.contributions",
490 contents: ["prebuilt_mynativebinary"],
491}
492
Paul Duffin25ce04b2020-01-16 11:47:25 +0000493cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000494 name: "mynativebinary",
495 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100496 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000497 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000498 compile_multilib: "both",
499 arch: {
500 arm64: {
501 srcs: ["arm64/bin/mynativebinary"],
502 },
503 arm: {
504 srcs: ["arm/bin/mynativebinary"],
505 },
506 },
507}
Paul Duffin75b902a2021-02-22 12:13:13 +0000508`),
Paul Duffin25ce04b2020-01-16 11:47:25 +0000509 checkAllCopyRules(`
510.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
511.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
512`),
513 )
514}
515
Paul Duffina04c1072020-03-02 10:16:35 +0000516func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000517 result := testSdkWithCc(t, `
518 module_exports {
519 name: "myexports",
520 device_supported: false,
521 host_supported: true,
522 native_binaries: ["mynativebinary"],
523 target: {
524 windows: {
525 enabled: true,
526 },
527 },
528 }
529
530 cc_binary {
531 name: "mynativebinary",
532 device_supported: false,
533 host_supported: true,
534 srcs: [
535 "Test.cpp",
536 ],
537 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000538 stl: "none",
539 target: {
540 windows: {
541 enabled: true,
542 },
543 },
544 }
545 `)
546
Paul Duffin36474d32021-03-12 12:19:43 +0000547 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000548 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000549// This is auto-generated. DO NOT EDIT.
550
Spandan Dasa5e26d32024-03-06 14:04:36 +0000551apex_contributions_defaults {
552 name: "myexports.contributions",
553 contents: ["prebuilt_mynativebinary"],
554}
555
Paul Duffina04c1072020-03-02 10:16:35 +0000556cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000557 name: "mynativebinary",
558 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100559 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000560 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000561 device_supported: false,
562 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100563 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000564 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100565 host: {
566 enabled: false,
567 },
Paul Duffina04c1072020-03-02 10:16:35 +0000568 linux_glibc: {
569 compile_multilib: "both",
570 },
571 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900572 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000573 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
574 },
575 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900576 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000577 srcs: ["linux_glibc/x86/bin/mynativebinary"],
578 },
579 windows: {
580 compile_multilib: "64",
581 },
582 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900583 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000584 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
585 },
586 },
587}
Paul Duffin75b902a2021-02-22 12:13:13 +0000588`),
Paul Duffina04c1072020-03-02 10:16:35 +0000589 checkAllCopyRules(`
590.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
591.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
592.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
593`),
594 )
595}
596
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100597func TestSnapshotWithSingleHostOsType(t *testing.T) {
Paul Duffin89648f92021-03-20 00:36:55 +0000598 result := android.GroupFixturePreparers(
599 prepareForSdkTest,
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000600 ccTestFs.AddToFixture(),
601 cc.PrepareForTestOnLinuxBionic,
602 android.FixtureModifyConfig(func(config android.Config) {
603 config.Targets[android.LinuxBionic] = []android.Target{
604 {android.LinuxBionic, android.Arch{ArchType: android.X86_64}, android.NativeBridgeDisabled, "", "", false},
605 }
606 }),
607 ).RunTestWithBp(t, `
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100608 cc_defaults {
609 name: "mydefaults",
610 device_supported: false,
611 host_supported: true,
612 compile_multilib: "64",
613 target: {
614 host: {
615 enabled: false,
616 },
617 linux_bionic: {
618 enabled: true,
619 },
620 },
621 }
622
623 module_exports {
624 name: "myexports",
625 defaults: ["mydefaults"],
626 native_shared_libs: ["mynativelib"],
627 native_binaries: ["mynativebinary"],
628 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
629 }
630
631 cc_library {
632 name: "mynativelib",
633 defaults: ["mydefaults"],
634 srcs: [
635 "Test.cpp",
636 ],
637 stl: "none",
638 }
639
640 cc_binary {
641 name: "mynativebinary",
642 defaults: ["mydefaults"],
643 srcs: [
644 "Test.cpp",
645 ],
646 stl: "none",
647 }
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000648 `)
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100649
Paul Duffin36474d32021-03-12 12:19:43 +0000650 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000651 checkAndroidBpContents(`
Paul Duffin75b902a2021-02-22 12:13:13 +0000652// This is auto-generated. DO NOT EDIT.
653
Spandan Dasa5e26d32024-03-06 14:04:36 +0000654apex_contributions_defaults {
655 name: "myexports.contributions",
656 contents: [
657 "prebuilt_mynativebinary",
658 "prebuilt_mynativelib",
659 ],
660}
661
Paul Duffin75b902a2021-02-22 12:13:13 +0000662cc_prebuilt_binary {
663 name: "mynativebinary",
664 prefer: false,
665 visibility: ["//visibility:public"],
666 apex_available: ["//apex_available:platform"],
667 device_supported: false,
668 host_supported: true,
669 stl: "none",
670 compile_multilib: "64",
671 target: {
672 host: {
673 enabled: false,
674 },
675 linux_bionic_x86_64: {
676 enabled: true,
677 srcs: ["x86_64/bin/mynativebinary"],
678 },
679 },
680}
681
682cc_prebuilt_library_shared {
683 name: "mynativelib",
684 prefer: false,
685 visibility: ["//visibility:public"],
686 apex_available: ["//apex_available:platform"],
687 device_supported: false,
688 host_supported: true,
689 stl: "none",
690 compile_multilib: "64",
691 target: {
692 host: {
693 enabled: false,
694 },
695 linux_bionic_x86_64: {
696 enabled: true,
697 srcs: ["x86_64/lib/mynativelib.so"],
698 },
699 },
700}
701`),
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100702 checkAllCopyRules(`
703.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
704.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
705`),
706 )
707}
708
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100709// Test that we support the necessary flags for the linker binary, which is
710// special in several ways.
711func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100712 result := testSdkWithCc(t, `
713 module_exports {
714 name: "mymodule_exports",
715 host_supported: true,
716 device_supported: false,
717 native_binaries: ["linker"],
718 }
719
720 cc_binary {
721 name: "linker",
722 host_supported: true,
723 static_executable: true,
724 nocrt: true,
725 stl: "none",
726 srcs: [
727 "Test.cpp",
728 ],
729 compile_multilib: "both",
730 }
731 `)
732
Paul Duffin36474d32021-03-12 12:19:43 +0000733 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000734 checkAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100735// This is auto-generated. DO NOT EDIT.
736
Spandan Dasa5e26d32024-03-06 14:04:36 +0000737apex_contributions_defaults {
738 name: "mymodule_exports.contributions",
739 contents: ["prebuilt_linker"],
740}
741
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100742cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000743 name: "linker",
744 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100745 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000746 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100747 device_supported: false,
748 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100749 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100750 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100751 static_executable: true,
752 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100753 target: {
754 host: {
755 enabled: false,
756 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100757 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900758 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100759 srcs: ["x86_64/bin/linker"],
760 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100761 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900762 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100763 srcs: ["x86/bin/linker"],
764 },
765 },
766}
Paul Duffin75b902a2021-02-22 12:13:13 +0000767`),
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100768 checkAllCopyRules(`
769.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
770.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
771`),
772 )
773}
774
Paul Duffin9ab556f2019-12-11 18:42:17 +0000775func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000776 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000777 sdk {
778 name: "mysdk",
779 native_shared_libs: ["mynativelib"],
780 }
781
782 cc_library_shared {
783 name: "mynativelib",
784 srcs: [
785 "Test.cpp",
786 "aidl/foo/bar/Test.aidl",
787 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +0000788 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +0000789 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000790 aidl: {
791 export_aidl_headers: true,
792 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000793 stl: "none",
794 }
795 `)
796
Paul Duffin36474d32021-03-12 12:19:43 +0000797 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000798 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +0000799// This is auto-generated. DO NOT EDIT.
800
Spandan Dasa5e26d32024-03-06 14:04:36 +0000801apex_contributions_defaults {
802 name: "mysdk.contributions",
803 contents: ["prebuilt_mynativelib"],
804}
805
Paul Duffina80fdec2019-12-03 15:25:00 +0000806cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +0000807 name: "mynativelib",
808 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100809 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +0000810 apex_available: [
811 "apex1",
812 "apex2",
813 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000814 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100815 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000816 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000817 arch: {
818 arm64: {
819 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +0000820 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000821 },
822 arm: {
823 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +0000824 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000825 },
826 },
Paul Duffina80fdec2019-12-03 15:25:00 +0000827}
Paul Duffina80fdec2019-12-03 15:25:00 +0000828`),
829 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000830myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800831.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000832.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
833.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
834.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 -0800835.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +0000836.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
837.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
838.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 +0000839`),
840 )
841}
842
Paul Duffin13f02712020-03-06 12:30:43 +0000843func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
844 result := testSdkWithCc(t, `
845 sdk {
846 name: "mysdk",
847 native_shared_libs: [
848 "mynativelib",
849 "myothernativelib",
850 "mysystemnativelib",
851 ],
852 }
853
854 cc_library {
855 name: "mysystemnativelib",
856 srcs: [
857 "Test.cpp",
858 ],
Paul Duffin13f02712020-03-06 12:30:43 +0000859 stl: "none",
860 }
861
862 cc_library_shared {
863 name: "myothernativelib",
864 srcs: [
865 "Test.cpp",
866 ],
867 system_shared_libs: [
868 // A reference to a library that is not an sdk member. Uses libm as that
869 // is in the default set of modules available to this test and so is available
870 // both here and also when the generated Android.bp file is tested in
871 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
872 // handles references to modules that are not sdk members.
873 "libm",
874 ],
875 stl: "none",
876 }
877
878 cc_library {
879 name: "mynativelib",
880 srcs: [
881 "Test.cpp",
882 ],
883 shared_libs: [
884 // A reference to another sdk member.
885 "myothernativelib",
886 ],
887 target: {
888 android: {
889 shared: {
890 shared_libs: [
891 // A reference to a library that is not an sdk member. The libc library
892 // is used here to check that the shared_libs property is handled correctly
893 // in a similar way to how libm is used to check system_shared_libs above.
894 "libc",
895 ],
896 },
897 },
898 },
Paul Duffin13f02712020-03-06 12:30:43 +0000899 stl: "none",
900 }
901 `)
902
Paul Duffin36474d32021-03-12 12:19:43 +0000903 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +0000904 checkAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +0000905// This is auto-generated. DO NOT EDIT.
906
Spandan Dasa5e26d32024-03-06 14:04:36 +0000907apex_contributions_defaults {
908 name: "mysdk.contributions",
909 contents: [
910 "prebuilt_mynativelib",
911 "prebuilt_myothernativelib",
912 "prebuilt_mysystemnativelib",
913 ],
914}
915
Paul Duffin13f02712020-03-06 12:30:43 +0000916cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +0000917 name: "mynativelib",
918 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100919 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000920 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000921 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100922 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000923 shared_libs: [
924 "myothernativelib",
925 "libc",
926 ],
927 arch: {
928 arm64: {
929 srcs: ["arm64/lib/mynativelib.so"],
930 },
931 arm: {
932 srcs: ["arm/lib/mynativelib.so"],
933 },
934 },
Paul Duffin13f02712020-03-06 12:30:43 +0000935}
936
937cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +0000938 name: "myothernativelib",
939 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100940 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000941 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000942 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100943 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000944 system_shared_libs: ["libm"],
945 arch: {
946 arm64: {
947 srcs: ["arm64/lib/myothernativelib.so"],
948 },
949 arm: {
950 srcs: ["arm/lib/myothernativelib.so"],
951 },
952 },
Paul Duffin13f02712020-03-06 12:30:43 +0000953}
954
955cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +0000956 name: "mysystemnativelib",
957 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100958 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000959 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000960 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100961 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +0000962 arch: {
963 arm64: {
964 srcs: ["arm64/lib/mysystemnativelib.so"],
965 },
966 arm: {
967 srcs: ["arm/lib/mysystemnativelib.so"],
968 },
969 },
Paul Duffin13f02712020-03-06 12:30:43 +0000970}
Paul Duffin13f02712020-03-06 12:30:43 +0000971`),
972 checkAllCopyRules(`
973.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
974.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
975.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
976.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
977.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
978.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
979`),
980 )
981}
982
Paul Duffin9ab556f2019-12-11 18:42:17 +0000983func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000984 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000985 sdk {
986 name: "mysdk",
987 device_supported: false,
988 host_supported: true,
989 native_shared_libs: ["mynativelib"],
990 }
991
992 cc_library_shared {
993 name: "mynativelib",
994 device_supported: false,
995 host_supported: true,
996 srcs: [
997 "Test.cpp",
998 "aidl/foo/bar/Test.aidl",
999 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001000 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001001 aidl: {
1002 export_aidl_headers: true,
1003 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001004 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001005 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001006 }
1007 `)
1008
Paul Duffin36474d32021-03-12 12:19:43 +00001009 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001010 checkAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001011// This is auto-generated. DO NOT EDIT.
1012
Spandan Dasa5e26d32024-03-06 14:04:36 +00001013apex_contributions_defaults {
1014 name: "mysdk.contributions",
1015 contents: ["prebuilt_mynativelib"],
1016}
1017
Paul Duffina80fdec2019-12-03 15:25:00 +00001018cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001019 name: "mynativelib",
1020 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001021 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001022 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001023 device_supported: false,
1024 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001025 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001026 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001027 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001028 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001029 target: {
1030 host: {
1031 enabled: false,
1032 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001033 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001034 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001035 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001036 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001037 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001038 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001039 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001040 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001041 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001042 },
1043 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001044}
Paul Duffin75b902a2021-02-22 12:13:13 +00001045`),
Paul Duffina80fdec2019-12-03 15:25:00 +00001046 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001047myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001048.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001049.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
1050.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
1051.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 +00001052.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001053.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
1054.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
1055.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 +00001056`),
1057 )
1058}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001059
Paul Duffina04c1072020-03-02 10:16:35 +00001060func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001061 result := testSdkWithCc(t, `
1062 sdk {
1063 name: "mysdk",
1064 device_supported: false,
1065 host_supported: true,
1066 native_shared_libs: ["mynativelib"],
1067 target: {
1068 windows: {
1069 enabled: true,
1070 },
1071 },
1072 }
1073
1074 cc_library_shared {
1075 name: "mynativelib",
1076 device_supported: false,
1077 host_supported: true,
1078 srcs: [
1079 "Test.cpp",
1080 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001081 stl: "none",
1082 target: {
1083 windows: {
1084 enabled: true,
1085 },
1086 },
1087 }
1088 `)
1089
Paul Duffin36474d32021-03-12 12:19:43 +00001090 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001091 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001092// This is auto-generated. DO NOT EDIT.
1093
Spandan Dasa5e26d32024-03-06 14:04:36 +00001094apex_contributions_defaults {
1095 name: "mysdk.contributions",
1096 contents: ["prebuilt_mynativelib"],
1097}
1098
Paul Duffina04c1072020-03-02 10:16:35 +00001099cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001100 name: "mynativelib",
1101 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001102 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001103 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001104 device_supported: false,
1105 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001106 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001107 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001108 host: {
1109 enabled: false,
1110 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001111 linux_glibc: {
1112 compile_multilib: "both",
1113 },
Paul Duffina04c1072020-03-02 10:16:35 +00001114 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001115 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001116 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1117 },
1118 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001119 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001120 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1121 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001122 windows: {
1123 compile_multilib: "64",
1124 },
Paul Duffina04c1072020-03-02 10:16:35 +00001125 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001126 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001127 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1128 },
1129 },
Paul Duffina04c1072020-03-02 10:16:35 +00001130}
Paul Duffin75b902a2021-02-22 12:13:13 +00001131`),
Paul Duffina04c1072020-03-02 10:16:35 +00001132 checkAllCopyRules(`
1133.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1134.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1135.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1136`),
1137 )
1138}
1139
Paul Duffin9ab556f2019-12-11 18:42:17 +00001140func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1141 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001142 module_exports {
1143 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001144 native_static_libs: ["mynativelib"],
1145 }
1146
1147 cc_library_static {
1148 name: "mynativelib",
1149 srcs: [
1150 "Test.cpp",
1151 "aidl/foo/bar/Test.aidl",
1152 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001153 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001154 aidl: {
1155 export_aidl_headers: true,
1156 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001157 stl: "none",
1158 }
1159 `)
1160
Paul Duffin36474d32021-03-12 12:19:43 +00001161 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001162 checkAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001163// This is auto-generated. DO NOT EDIT.
1164
Spandan Dasa5e26d32024-03-06 14:04:36 +00001165apex_contributions_defaults {
1166 name: "myexports.contributions",
1167 contents: ["prebuilt_mynativelib"],
1168}
1169
Paul Duffin9ab556f2019-12-11 18:42:17 +00001170cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001171 name: "mynativelib",
1172 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001173 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001174 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001175 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001176 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001177 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001178 arch: {
1179 arm64: {
1180 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001181 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001182 },
1183 arm: {
1184 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001185 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001186 },
1187 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001188}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001189`),
1190 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001191myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001192.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001193.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
1194.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
1195.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 -08001196.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001197.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
1198.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
1199.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 +00001200`),
1201 )
1202}
1203
1204func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001205 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001206 module_exports {
1207 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001208 device_supported: false,
1209 host_supported: true,
1210 native_static_libs: ["mynativelib"],
1211 }
1212
1213 cc_library_static {
1214 name: "mynativelib",
1215 device_supported: false,
1216 host_supported: true,
1217 srcs: [
1218 "Test.cpp",
1219 "aidl/foo/bar/Test.aidl",
1220 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001221 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001222 aidl: {
1223 export_aidl_headers: true,
1224 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001225 stl: "none",
1226 }
1227 `)
1228
Paul Duffin36474d32021-03-12 12:19:43 +00001229 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001230 checkAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001231// This is auto-generated. DO NOT EDIT.
1232
Spandan Dasa5e26d32024-03-06 14:04:36 +00001233apex_contributions_defaults {
1234 name: "myexports.contributions",
1235 contents: ["prebuilt_mynativelib"],
1236}
1237
Paul Duffin9ab556f2019-12-11 18:42:17 +00001238cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001239 name: "mynativelib",
1240 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001241 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001242 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001243 device_supported: false,
1244 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001245 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001246 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001247 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001248 target: {
1249 host: {
1250 enabled: false,
1251 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001252 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001253 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001254 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001255 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001256 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001257 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001258 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001259 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001260 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001261 },
1262 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001263}
Paul Duffin75b902a2021-02-22 12:13:13 +00001264`),
Paul Duffin9ab556f2019-12-11 18:42:17 +00001265 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001266myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001267.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001268.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
1269.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
1270.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 +00001271.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001272.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
1273.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
1274.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 +00001275`),
1276 )
1277}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001278
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001279func TestSnapshotWithCcLibrary(t *testing.T) {
1280 result := testSdkWithCc(t, `
1281 module_exports {
1282 name: "myexports",
1283 native_libs: ["mynativelib"],
1284 }
1285
1286 cc_library {
1287 name: "mynativelib",
1288 srcs: [
1289 "Test.cpp",
1290 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001291 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001292 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001293 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001294 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001295 }
1296 `)
1297
Paul Duffin36474d32021-03-12 12:19:43 +00001298 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001299 checkAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001300// This is auto-generated. DO NOT EDIT.
1301
Spandan Dasa5e26d32024-03-06 14:04:36 +00001302apex_contributions_defaults {
1303 name: "myexports.contributions",
1304 contents: ["prebuilt_mynativelib"],
1305}
1306
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001307cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001308 name: "mynativelib",
1309 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001310 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001311 apex_available: ["//apex_available:platform"],
Paul Duffind1edbd42020-08-13 19:45:31 +01001312 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001313 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001314 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001315 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001316 arch: {
1317 arm64: {
1318 static: {
1319 srcs: ["arm64/lib/mynativelib.a"],
1320 },
1321 shared: {
1322 srcs: ["arm64/lib/mynativelib.so"],
1323 },
1324 },
1325 arm: {
1326 static: {
1327 srcs: ["arm/lib/mynativelib.a"],
1328 },
1329 shared: {
1330 srcs: ["arm/lib/mynativelib.so"],
1331 },
1332 },
1333 },
1334}
Paul Duffin75b902a2021-02-22 12:13:13 +00001335`),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001336 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001337myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001338.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1339.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1340.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin1822a0a2021-03-21 12:56:33 +00001341.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1342`),
1343 // TODO(b/183315522): Remove this and fix the issue.
1344 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\Qunrecognized property "arch.arm.shared.export_include_dirs"\E`)),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001345 )
1346}
1347
Liz Kammer96320df2022-05-12 20:40:00 -04001348func TestSnapshotSameLibraryWithNativeLibsAndNativeSharedLib(t *testing.T) {
1349 result := testSdkWithCc(t, `
1350 module_exports {
1351 host_supported: true,
1352 name: "myexports",
1353 target: {
1354 android: {
1355 native_shared_libs: [
1356 "mynativelib",
1357 ],
1358 },
1359 not_windows: {
1360 native_libs: [
1361 "mynativelib",
1362 ],
1363 },
1364 },
1365 }
1366
1367 cc_library {
1368 name: "mynativelib",
1369 host_supported: true,
1370 srcs: [
1371 "Test.cpp",
1372 ],
1373 stl: "none",
1374 recovery_available: true,
1375 vendor_available: true,
1376 }
1377 `)
1378
1379 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001380 checkAndroidBpContents(`
Liz Kammer96320df2022-05-12 20:40:00 -04001381// This is auto-generated. DO NOT EDIT.
1382
Spandan Dasa5e26d32024-03-06 14:04:36 +00001383apex_contributions_defaults {
1384 name: "myexports.contributions",
1385 contents: ["prebuilt_mynativelib"],
1386}
1387
Liz Kammer96320df2022-05-12 20:40:00 -04001388cc_prebuilt_library {
1389 name: "mynativelib",
1390 prefer: false,
1391 visibility: ["//visibility:public"],
1392 apex_available: ["//apex_available:platform"],
1393 host_supported: true,
1394 vendor_available: true,
1395 stl: "none",
1396 compile_multilib: "both",
1397 target: {
1398 host: {
1399 enabled: false,
1400 },
1401 android_arm64: {
1402 shared: {
1403 srcs: ["android/arm64/lib/mynativelib.so"],
1404 },
1405 static: {
1406 enabled: false,
1407 },
1408 },
1409 android_arm: {
1410 shared: {
1411 srcs: ["android/arm/lib/mynativelib.so"],
1412 },
1413 static: {
1414 enabled: false,
1415 },
1416 },
1417 linux_glibc_x86_64: {
1418 enabled: true,
1419 static: {
1420 srcs: ["linux_glibc/x86_64/lib/mynativelib.a"],
1421 },
1422 shared: {
1423 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1424 },
1425 },
1426 linux_glibc_x86: {
1427 enabled: true,
1428 static: {
1429 srcs: ["linux_glibc/x86/lib/mynativelib.a"],
1430 },
1431 shared: {
1432 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1433 },
1434 },
1435 },
1436}
1437`),
1438 checkAllCopyRules(`
1439.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1440.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1441.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> linux_glibc/x86_64/lib/mynativelib.a
1442.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1443.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> linux_glibc/x86/lib/mynativelib.a
1444.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1445`),
1446 )
1447}
1448
1449func TestSnapshotSameLibraryWithAndroidNativeLibsAndHostNativeSharedLib(t *testing.T) {
1450 result := testSdkWithCc(t, `
1451 module_exports {
1452 host_supported: true,
1453 name: "myexports",
1454 target: {
1455 android: {
1456 native_libs: [
1457 "mynativelib",
1458 ],
1459 },
1460 not_windows: {
1461 native_shared_libs: [
1462 "mynativelib",
1463 ],
1464 },
1465 },
1466 }
1467
1468 cc_library {
1469 name: "mynativelib",
1470 host_supported: true,
1471 srcs: [
1472 "Test.cpp",
1473 ],
1474 stl: "none",
1475 recovery_available: true,
1476 vendor_available: true,
1477 }
1478 `)
1479
1480 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001481 checkAndroidBpContents(`
Liz Kammer96320df2022-05-12 20:40:00 -04001482// This is auto-generated. DO NOT EDIT.
1483
Spandan Dasa5e26d32024-03-06 14:04:36 +00001484apex_contributions_defaults {
1485 name: "myexports.contributions",
1486 contents: ["prebuilt_mynativelib"],
1487}
1488
Liz Kammer96320df2022-05-12 20:40:00 -04001489cc_prebuilt_library {
1490 name: "mynativelib",
1491 prefer: false,
1492 visibility: ["//visibility:public"],
1493 apex_available: ["//apex_available:platform"],
1494 host_supported: true,
1495 vendor_available: true,
1496 stl: "none",
1497 compile_multilib: "both",
1498 target: {
1499 host: {
1500 enabled: false,
1501 },
1502 android_arm64: {
1503 static: {
1504 srcs: ["android/arm64/lib/mynativelib.a"],
1505 },
1506 shared: {
1507 srcs: ["android/arm64/lib/mynativelib.so"],
1508 },
1509 },
1510 android_arm: {
1511 static: {
1512 srcs: ["android/arm/lib/mynativelib.a"],
1513 },
1514 shared: {
1515 srcs: ["android/arm/lib/mynativelib.so"],
1516 },
1517 },
1518 linux_glibc_x86_64: {
1519 enabled: true,
1520 shared: {
1521 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1522 },
1523 static: {
1524 enabled: false,
1525 },
1526 },
1527 linux_glibc_x86: {
1528 enabled: true,
1529 shared: {
1530 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1531 },
1532 static: {
1533 enabled: false,
1534 },
1535 },
1536 },
1537}
1538`),
1539 checkAllCopyRules(`
1540.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> android/arm64/lib/mynativelib.a
1541.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1542.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> android/arm/lib/mynativelib.a
1543.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1544.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1545.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1546`),
1547 )
1548}
1549
1550func TestSnapshotSameLibraryWithNativeStaticLibsAndNativeSharedLib(t *testing.T) {
1551 testSdkError(t, "Incompatible member types", `
1552 module_exports {
1553 host_supported: true,
1554 name: "myexports",
1555 target: {
1556 android: {
1557 native_shared_libs: [
1558 "mynativelib",
1559 ],
1560 },
1561 not_windows: {
1562 native_static_libs: [
1563 "mynativelib",
1564 ],
1565 },
1566 },
1567 }
1568
1569 cc_library {
1570 name: "mynativelib",
1571 host_supported: true,
1572 srcs: [
1573 ],
1574 stl: "none",
1575 recovery_available: true,
1576 vendor_available: true,
1577 }
1578 `)
1579}
1580
Paul Duffin13ad94f2020-02-19 16:19:27 +00001581func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001582 result := testSdkWithCc(t, `
1583 module_exports {
1584 name: "myexports",
1585 device_supported: false,
1586 host_supported: true,
1587 target: {
1588 host: {
1589 compile_multilib: "64",
1590 },
1591 },
1592 native_static_libs: ["mynativelib"],
1593 }
1594
1595 cc_library_static {
1596 name: "mynativelib",
1597 device_supported: false,
1598 host_supported: true,
1599 srcs: [
1600 "Test.cpp",
1601 "aidl/foo/bar/Test.aidl",
1602 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001603 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001604 aidl: {
1605 export_aidl_headers: true,
1606 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001607 stl: "none",
1608 }
1609 `)
1610
Paul Duffin36474d32021-03-12 12:19:43 +00001611 CheckSnapshot(t, result, "myexports", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001612 checkAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001613// This is auto-generated. DO NOT EDIT.
1614
Spandan Dasa5e26d32024-03-06 14:04:36 +00001615apex_contributions_defaults {
1616 name: "myexports.contributions",
1617 contents: ["prebuilt_mynativelib"],
1618}
1619
Paul Duffin13ad94f2020-02-19 16:19:27 +00001620cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001621 name: "mynativelib",
1622 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001623 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001624 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001625 device_supported: false,
1626 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001627 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001628 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001629 export_include_dirs: [
1630 "include/myinclude",
1631 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1632 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001633 target: {
1634 host: {
1635 enabled: false,
1636 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001637 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001638 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001639 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001640 },
1641 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001642}
Paul Duffin75b902a2021-02-22 12:13:13 +00001643`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001644 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001645myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00001646.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
1647.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
1648.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 +00001649.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00001650`),
1651 )
1652}
Paul Duffin91756d22020-02-21 16:29:57 +00001653
1654func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1655 result := testSdkWithCc(t, `
1656 sdk {
1657 name: "mysdk",
1658 native_header_libs: ["mynativeheaders"],
1659 }
1660
1661 cc_library_headers {
1662 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001663 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001664 stl: "none",
1665 }
1666 `)
1667
Paul Duffin36474d32021-03-12 12:19:43 +00001668 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001669 checkAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001670// This is auto-generated. DO NOT EDIT.
1671
Spandan Dasa5e26d32024-03-06 14:04:36 +00001672apex_contributions_defaults {
1673 name: "mysdk.contributions",
1674 contents: ["prebuilt_mynativeheaders"],
1675}
1676
Paul Duffin91756d22020-02-21 16:29:57 +00001677cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001678 name: "mynativeheaders",
1679 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001680 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001681 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001682 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001683 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001684 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001685}
Paul Duffin91756d22020-02-21 16:29:57 +00001686`),
1687 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001688myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001689`),
1690 )
1691}
1692
Paul Duffin93b750e2019-11-19 19:44:10 +00001693func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport(t *testing.T) {
1694 result := android.GroupFixturePreparers(
1695 cc.PrepareForTestWithCcDefaultModules,
1696 PrepareForTestWithSdkBuildComponents,
1697 ccTestFs.AddToFixture(),
1698 prepareForTestWithNativeBridgeTarget,
Spandan Dasa5e26d32024-03-06 14:04:36 +00001699 android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
1700 android.RegisterApexContributionsBuildComponents(ctx)
1701 }),
Paul Duffin93b750e2019-11-19 19:44:10 +00001702 ).RunTestWithBp(t, `
1703 sdk {
1704 name: "mysdk",
1705 native_header_libs: ["mynativeheaders"],
1706 traits: {
1707 native_bridge_support: ["mynativeheaders"],
1708 },
1709 }
1710
1711 cc_library_headers {
1712 name: "mynativeheaders",
1713 export_include_dirs: ["myinclude"],
1714 stl: "none",
1715 system_shared_libs: [],
1716 native_bridge_supported: true,
1717 }
1718 `)
1719
1720 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001721 checkAndroidBpContents(`
Paul Duffin93b750e2019-11-19 19:44:10 +00001722// This is auto-generated. DO NOT EDIT.
1723
Spandan Dasa5e26d32024-03-06 14:04:36 +00001724apex_contributions_defaults {
1725 name: "mysdk.contributions",
1726 contents: ["prebuilt_mynativeheaders"],
1727}
1728
Paul Duffin93b750e2019-11-19 19:44:10 +00001729cc_prebuilt_library_headers {
1730 name: "mynativeheaders",
1731 prefer: false,
1732 visibility: ["//visibility:public"],
1733 apex_available: ["//apex_available:platform"],
1734 native_bridge_supported: true,
1735 stl: "none",
1736 compile_multilib: "both",
1737 system_shared_libs: [],
1738 export_include_dirs: ["include/myinclude"],
1739}
1740`),
1741 checkAllCopyRules(`
1742myinclude/Test.h -> include/myinclude/Test.h
1743`),
1744 )
1745}
1746
1747// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
1748// module that has different output files for a native bridge target requests the native bridge
1749// variants are copied into the sdk snapshot that it reports an error.
1750func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties(t *testing.T) {
1751 android.GroupFixturePreparers(
1752 cc.PrepareForTestWithCcDefaultModules,
1753 PrepareForTestWithSdkBuildComponents,
1754 ccTestFs.AddToFixture(),
1755 prepareForTestWithNativeBridgeTarget,
1756 ).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
1757 `\QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants; this is not yet supported. The properties are:
1758 export_include_dirs: [
1759 "arm64_native_bridge/include/myinclude_nativebridge",
1760 "arm64_native_bridge/include/myinclude",
1761 ],\E`)).
1762 RunTestWithBp(t, `
1763 sdk {
1764 name: "mysdk",
1765 native_header_libs: ["mynativeheaders"],
1766 traits: {
1767 native_bridge_support: ["mynativeheaders"],
1768 },
1769 }
1770
1771 cc_library_headers {
1772 name: "mynativeheaders",
1773 export_include_dirs: ["myinclude"],
1774 stl: "none",
1775 system_shared_libs: [],
1776 native_bridge_supported: true,
1777 target: {
1778 native_bridge: {
1779 export_include_dirs: ["myinclude_nativebridge"],
1780 },
1781 },
1782 }
1783 `)
1784}
1785
Paul Duffin63696222021-09-06 10:28:34 +01001786func TestSnapshotWithCcHeadersLibraryAndImageVariants(t *testing.T) {
1787 testImageVariant := func(t *testing.T, property, trait string) {
1788 result := android.GroupFixturePreparers(
1789 cc.PrepareForTestWithCcDefaultModules,
1790 PrepareForTestWithSdkBuildComponents,
1791 ccTestFs.AddToFixture(),
Spandan Dasa5e26d32024-03-06 14:04:36 +00001792 android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
1793 android.RegisterApexContributionsBuildComponents(ctx)
1794 }),
Paul Duffin63696222021-09-06 10:28:34 +01001795 ).RunTestWithBp(t, fmt.Sprintf(`
1796 sdk {
1797 name: "mysdk",
1798 native_header_libs: ["mynativeheaders"],
1799 traits: {
1800 %s: ["mynativeheaders"],
1801 },
1802 }
1803
1804 cc_library_headers {
1805 name: "mynativeheaders",
1806 export_include_dirs: ["myinclude"],
1807 stl: "none",
1808 system_shared_libs: [],
1809 %s: true,
1810 }
1811 `, trait, property))
1812
1813 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001814 checkAndroidBpContents(fmt.Sprintf(`
Paul Duffin63696222021-09-06 10:28:34 +01001815// This is auto-generated. DO NOT EDIT.
1816
Spandan Dasa5e26d32024-03-06 14:04:36 +00001817apex_contributions_defaults {
1818 name: "mysdk.contributions",
1819 contents: ["prebuilt_mynativeheaders"],
1820}
1821
Paul Duffin63696222021-09-06 10:28:34 +01001822cc_prebuilt_library_headers {
1823 name: "mynativeheaders",
1824 prefer: false,
1825 visibility: ["//visibility:public"],
1826 apex_available: ["//apex_available:platform"],
1827 %s: true,
1828 stl: "none",
1829 compile_multilib: "both",
1830 system_shared_libs: [],
1831 export_include_dirs: ["include/myinclude"],
1832}
1833`, property)),
1834 checkAllCopyRules(`
1835myinclude/Test.h -> include/myinclude/Test.h
1836`),
1837 )
1838 }
1839
Paul Duffin12a0a312021-09-15 17:25:10 +01001840 t.Run("ramdisk", func(t *testing.T) {
1841 testImageVariant(t, "ramdisk_available", "ramdisk_image_required")
1842 })
1843
Paul Duffin63696222021-09-06 10:28:34 +01001844 t.Run("recovery", func(t *testing.T) {
1845 testImageVariant(t, "recovery_available", "recovery_image_required")
1846 })
1847}
1848
Paul Duffin91756d22020-02-21 16:29:57 +00001849func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00001850 result := testSdkWithCc(t, `
1851 sdk {
1852 name: "mysdk",
1853 device_supported: false,
1854 host_supported: true,
1855 native_header_libs: ["mynativeheaders"],
1856 }
1857
1858 cc_library_headers {
1859 name: "mynativeheaders",
1860 device_supported: false,
1861 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00001862 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001863 stl: "none",
1864 }
1865 `)
1866
Paul Duffin36474d32021-03-12 12:19:43 +00001867 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001868 checkAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001869// This is auto-generated. DO NOT EDIT.
1870
Spandan Dasa5e26d32024-03-06 14:04:36 +00001871apex_contributions_defaults {
1872 name: "mysdk.contributions",
1873 contents: ["prebuilt_mynativeheaders"],
1874}
1875
Paul Duffin91756d22020-02-21 16:29:57 +00001876cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00001877 name: "mynativeheaders",
1878 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001879 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001880 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001881 device_supported: false,
1882 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00001883 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001884 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001885 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001886 target: {
1887 host: {
1888 enabled: false,
1889 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001890 linux_glibc_x86_64: {
1891 enabled: true,
1892 },
1893 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001894 enabled: true,
1895 },
1896 },
Paul Duffin91756d22020-02-21 16:29:57 +00001897}
Paul Duffin75b902a2021-02-22 12:13:13 +00001898`),
Paul Duffin91756d22020-02-21 16:29:57 +00001899 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001900myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001901`),
1902 )
1903}
Paul Duffina04c1072020-03-02 10:16:35 +00001904
1905func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001906 result := testSdkWithCc(t, `
1907 sdk {
1908 name: "mysdk",
1909 host_supported: true,
1910 native_header_libs: ["mynativeheaders"],
1911 }
1912
1913 cc_library_headers {
1914 name: "mynativeheaders",
1915 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001916 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00001917 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00001918 target: {
1919 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001920 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00001921 },
1922 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001923 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00001924 },
1925 },
1926 }
1927 `)
1928
Paul Duffin36474d32021-03-12 12:19:43 +00001929 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001930 checkAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001931// This is auto-generated. DO NOT EDIT.
1932
Spandan Dasa5e26d32024-03-06 14:04:36 +00001933apex_contributions_defaults {
1934 name: "mysdk.contributions",
1935 contents: ["prebuilt_mynativeheaders"],
1936}
1937
Paul Duffina04c1072020-03-02 10:16:35 +00001938cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00001939 name: "mynativeheaders",
1940 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001941 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001942 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001943 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001944 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001945 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001946 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00001947 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001948 host: {
1949 enabled: false,
1950 },
Paul Duffina04c1072020-03-02 10:16:35 +00001951 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001952 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00001953 },
1954 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00001955 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00001956 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001957 linux_glibc_x86_64: {
1958 enabled: true,
1959 },
1960 linux_glibc_x86: {
1961 enabled: true,
1962 },
Paul Duffina04c1072020-03-02 10:16:35 +00001963 },
Paul Duffina04c1072020-03-02 10:16:35 +00001964}
Paul Duffin75b902a2021-02-22 12:13:13 +00001965`),
Paul Duffina04c1072020-03-02 10:16:35 +00001966 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001967myinclude/Test.h -> common_os/include/myinclude/Test.h
1968myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
1969myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00001970`),
1971 )
1972}
Martin Stjernholm10566a02020-03-24 01:19:52 +00001973
1974func TestSystemSharedLibPropagation(t *testing.T) {
1975 result := testSdkWithCc(t, `
1976 sdk {
1977 name: "mysdk",
Colin Cross6b8f4252021-07-22 11:39:44 -07001978 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00001979 }
1980
1981 cc_library {
1982 name: "sslnil",
1983 host_supported: true,
1984 }
1985
1986 cc_library {
1987 name: "sslempty",
1988 system_shared_libs: [],
1989 }
1990
1991 cc_library {
1992 name: "sslnonempty",
1993 system_shared_libs: ["sslnil"],
1994 }
1995 `)
1996
Paul Duffin36474d32021-03-12 12:19:43 +00001997 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00001998 checkAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00001999// This is auto-generated. DO NOT EDIT.
2000
Spandan Dasa5e26d32024-03-06 14:04:36 +00002001apex_contributions_defaults {
2002 name: "mysdk.contributions",
2003 contents: [
2004 "prebuilt_sslnil",
2005 "prebuilt_sslempty",
2006 "prebuilt_sslnonempty",
2007 ],
2008}
2009
Martin Stjernholm10566a02020-03-24 01:19:52 +00002010cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002011 name: "sslnil",
2012 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002013 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002014 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002015 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002016 arch: {
2017 arm64: {
2018 srcs: ["arm64/lib/sslnil.so"],
2019 },
2020 arm: {
2021 srcs: ["arm/lib/sslnil.so"],
2022 },
2023 },
2024}
2025
2026cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002027 name: "sslempty",
2028 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002029 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002030 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002031 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002032 system_shared_libs: [],
2033 arch: {
2034 arm64: {
2035 srcs: ["arm64/lib/sslempty.so"],
2036 },
2037 arm: {
2038 srcs: ["arm/lib/sslempty.so"],
2039 },
2040 },
2041}
2042
2043cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002044 name: "sslnonempty",
2045 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002046 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002047 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002048 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002049 system_shared_libs: ["sslnil"],
2050 arch: {
2051 arm64: {
2052 srcs: ["arm64/lib/sslnonempty.so"],
2053 },
2054 arm: {
2055 srcs: ["arm/lib/sslnonempty.so"],
2056 },
2057 },
2058}
Colin Cross6b8f4252021-07-22 11:39:44 -07002059`))
Martin Stjernholm10566a02020-03-24 01:19:52 +00002060
2061 result = testSdkWithCc(t, `
2062 sdk {
2063 name: "mysdk",
2064 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002065 native_shared_libs: ["sslvariants"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002066 }
2067
2068 cc_library {
2069 name: "sslvariants",
2070 host_supported: true,
2071 target: {
2072 android: {
2073 system_shared_libs: [],
2074 },
2075 },
2076 }
2077 `)
2078
Paul Duffin36474d32021-03-12 12:19:43 +00002079 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002080 checkAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002081// This is auto-generated. DO NOT EDIT.
2082
Spandan Dasa5e26d32024-03-06 14:04:36 +00002083apex_contributions_defaults {
2084 name: "mysdk.contributions",
2085 contents: ["prebuilt_sslvariants"],
2086}
2087
Martin Stjernholm10566a02020-03-24 01:19:52 +00002088cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002089 name: "sslvariants",
2090 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002091 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002092 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002093 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002094 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002095 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002096 host: {
2097 enabled: false,
2098 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002099 android: {
2100 system_shared_libs: [],
2101 },
2102 android_arm64: {
2103 srcs: ["android/arm64/lib/sslvariants.so"],
2104 },
2105 android_arm: {
2106 srcs: ["android/arm/lib/sslvariants.so"],
2107 },
2108 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002109 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002110 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2111 },
2112 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002113 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002114 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2115 },
2116 },
2117}
Paul Duffin75b902a2021-02-22 12:13:13 +00002118`),
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002119 )
Martin Stjernholm10566a02020-03-24 01:19:52 +00002120}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002121
2122func TestStubsLibrary(t *testing.T) {
2123 result := testSdkWithCc(t, `
2124 sdk {
2125 name: "mysdk",
2126 native_shared_libs: ["stubslib"],
2127 }
2128
2129 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002130 name: "internaldep",
2131 }
2132
2133 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002134 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002135 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002136 stubs: {
2137 symbol_file: "some/where/stubslib.map.txt",
2138 versions: ["1", "2", "3"],
2139 },
2140 }
2141 `)
2142
Paul Duffin36474d32021-03-12 12:19:43 +00002143 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002144 checkAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002145// This is auto-generated. DO NOT EDIT.
2146
Spandan Dasa5e26d32024-03-06 14:04:36 +00002147apex_contributions_defaults {
2148 name: "mysdk.contributions",
2149 contents: ["prebuilt_stubslib"],
2150}
2151
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002152cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002153 name: "stubslib",
2154 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002155 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002156 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002157 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002158 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002159 versions: [
2160 "1",
2161 "2",
2162 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002163 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002164 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002165 },
2166 arch: {
2167 arm64: {
2168 srcs: ["arm64/lib/stubslib.so"],
2169 },
2170 arm: {
2171 srcs: ["arm/lib/stubslib.so"],
2172 },
2173 },
2174}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002175`))
2176}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002177
2178func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002179 result := testSdkWithCc(t, `
2180 sdk {
2181 name: "mysdk",
2182 host_supported: true,
2183 native_shared_libs: ["stubslib"],
2184 }
2185
2186 cc_library {
2187 name: "internaldep",
2188 host_supported: true,
2189 }
2190
2191 cc_library {
2192 name: "stubslib",
2193 host_supported: true,
2194 shared_libs: ["internaldep"],
2195 stubs: {
2196 symbol_file: "some/where/stubslib.map.txt",
2197 versions: ["1", "2", "3"],
2198 },
2199 }
2200 `)
2201
Paul Duffin36474d32021-03-12 12:19:43 +00002202 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002203 checkAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002204// This is auto-generated. DO NOT EDIT.
2205
Spandan Dasa5e26d32024-03-06 14:04:36 +00002206apex_contributions_defaults {
2207 name: "mysdk.contributions",
2208 contents: ["prebuilt_stubslib"],
2209}
2210
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002211cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002212 name: "stubslib",
2213 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002214 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002215 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002216 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002217 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002218 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002219 versions: [
2220 "1",
2221 "2",
2222 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002223 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002224 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002225 },
2226 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002227 host: {
2228 enabled: false,
2229 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002230 android_arm64: {
2231 srcs: ["android/arm64/lib/stubslib.so"],
2232 },
2233 android_arm: {
2234 srcs: ["android/arm/lib/stubslib.so"],
2235 },
2236 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002237 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002238 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2239 },
2240 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002241 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002242 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2243 },
2244 },
2245}
Paul Duffin75b902a2021-02-22 12:13:13 +00002246`),
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002247 )
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002248}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002249
2250func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002251 result := testSdkWithCc(t, `
2252 sdk {
2253 name: "mysdk",
2254 host_supported: true,
2255 native_shared_libs: ["mylib"],
2256 }
2257
2258 cc_library {
2259 name: "mylib",
2260 host_supported: true,
2261 unique_host_soname: true,
2262 }
2263 `)
2264
Paul Duffin36474d32021-03-12 12:19:43 +00002265 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002266 checkAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002267// This is auto-generated. DO NOT EDIT.
2268
Spandan Dasa5e26d32024-03-06 14:04:36 +00002269apex_contributions_defaults {
2270 name: "mysdk.contributions",
2271 contents: ["prebuilt_mylib"],
2272}
2273
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002274cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002275 name: "mylib",
2276 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002277 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002278 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002279 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002280 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002281 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002282 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002283 host: {
2284 enabled: false,
2285 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002286 android_arm64: {
2287 srcs: ["android/arm64/lib/mylib.so"],
2288 },
2289 android_arm: {
2290 srcs: ["android/arm/lib/mylib.so"],
2291 },
2292 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002293 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002294 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2295 },
2296 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002297 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002298 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2299 },
2300 },
2301}
Paul Duffin75b902a2021-02-22 12:13:13 +00002302`),
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002303 checkAllCopyRules(`
2304.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2305.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2306.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2307.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2308`),
2309 )
2310}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002311
2312func TestNoSanitizerMembers(t *testing.T) {
2313 result := testSdkWithCc(t, `
2314 sdk {
2315 name: "mysdk",
2316 native_shared_libs: ["mynativelib"],
2317 }
2318
2319 cc_library_shared {
2320 name: "mynativelib",
2321 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002322 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002323 arch: {
2324 arm64: {
2325 export_system_include_dirs: ["arm64/include"],
2326 sanitize: {
2327 hwaddress: true,
2328 },
2329 },
2330 },
2331 }
2332 `)
2333
Paul Duffin36474d32021-03-12 12:19:43 +00002334 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb01ac4b2022-05-24 20:10:05 +00002335 checkAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002336// This is auto-generated. DO NOT EDIT.
2337
Spandan Dasa5e26d32024-03-06 14:04:36 +00002338apex_contributions_defaults {
2339 name: "mysdk.contributions",
2340 contents: ["prebuilt_mynativelib"],
2341}
2342
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002343cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002344 name: "mynativelib",
2345 prefer: false,
2346 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002347 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002348 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002349 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002350 arch: {
2351 arm64: {
2352 export_system_include_dirs: ["arm64/include/arm64/include"],
2353 },
2354 arm: {
2355 srcs: ["arm/lib/mynativelib.so"],
2356 },
2357 },
2358}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002359`),
2360 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002361myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002362arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Paul Duffin1822a0a2021-03-21 12:56:33 +00002363.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
2364`),
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002365 )
2366}