blob: a4c7a85597d587cef884da16f41a79d091893116 [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 Duffin75b902a2021-02-22 12:13:13 +0000123 checkUnversionedAndroidBpContents(`
Martin Stjernholm89238f42020-07-10 00:14:03 +0100124// This is auto-generated. DO NOT EDIT.
125
126cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000127 name: "sdkmember",
128 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100129 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000130 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100131 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100132 stl: "none",
133 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100134 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100135 host: {
136 enabled: false,
137 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100138 android_arm64: {
139 srcs: ["android/arm64/lib/sdkmember.so"],
140 },
141 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900142 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100143 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100144 },
145 },
146}
Paul Duffin75b902a2021-02-22 12:13:13 +0000147`),
148 checkVersionedAndroidBpContents(`
149// This is auto-generated. DO NOT EDIT.
Martin Stjernholm89238f42020-07-10 00:14:03 +0100150
151cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000152 name: "mysdk_sdkmember@current",
153 sdk_member_name: "sdkmember",
Paul Duffind99d9972020-09-29 16:00:55 +0100154 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000155 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100156 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000157 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100158 stl: "none",
159 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100160 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100161 host: {
162 enabled: false,
163 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100164 android_arm64: {
165 srcs: ["android/arm64/lib/sdkmember.so"],
166 },
167 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900168 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100169 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100170 },
171 },
172}
173
174sdk_snapshot {
175 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100176 visibility: ["//visibility:public"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100177 host_supported: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100178 compile_multilib: "64",
Paul Duffin7b0259f2021-04-24 11:34:46 +0100179 native_shared_libs: ["mysdk_sdkmember@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100180 target: {
181 host: {
182 enabled: false,
183 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900184 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100185 enabled: true,
186 },
187 },
Martin Stjernholm89238f42020-07-10 00:14:03 +0100188}
189`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100190 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100191.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
192.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100193`))
194}
195
Paul Duffina0843f62019-12-13 19:50:38 +0000196// Make sure the sdk can use host specific cc libraries static/shared and both.
197func TestHostSdkWithCc(t *testing.T) {
198 testSdkWithCc(t, `
199 sdk {
200 name: "mysdk",
201 device_supported: false,
202 host_supported: true,
203 native_shared_libs: ["sdkshared"],
204 native_static_libs: ["sdkstatic"],
205 }
206
207 cc_library_host_shared {
208 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000209 stl: "none",
210 }
211
212 cc_library_host_static {
213 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000214 stl: "none",
215 }
216 `)
217}
218
219// Make sure the sdk can use cc libraries static/shared and both.
220func TestSdkWithCc(t *testing.T) {
221 testSdkWithCc(t, `
222 sdk {
223 name: "mysdk",
224 native_shared_libs: ["sdkshared", "sdkboth1"],
225 native_static_libs: ["sdkstatic", "sdkboth2"],
226 }
227
228 cc_library_shared {
229 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000230 stl: "none",
231 }
232
233 cc_library_static {
234 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000235 stl: "none",
236 }
237
238 cc_library {
239 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000240 stl: "none",
241 }
242
243 cc_library {
244 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000245 stl: "none",
246 }
247 `)
248}
249
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000250func TestSnapshotWithObject(t *testing.T) {
251 result := testSdkWithCc(t, `
252 sdk {
253 name: "mysdk",
254 native_objects: ["crtobj"],
255 }
256
257 cc_object {
258 name: "crtobj",
259 stl: "none",
Colin Cross6b8f4252021-07-22 11:39:44 -0700260 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100261 sanitize: {
262 never: true,
263 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000264 }
265 `)
266
Paul Duffin36474d32021-03-12 12:19:43 +0000267 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000268 checkUnversionedAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000269// This is auto-generated. DO NOT EDIT.
270
271cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000272 name: "crtobj",
273 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100274 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000275 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000276 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100277 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700278 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100279 sanitize: {
280 never: true,
281 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000282 arch: {
283 arm64: {
284 srcs: ["arm64/lib/crtobj.o"],
285 },
286 arm: {
287 srcs: ["arm/lib/crtobj.o"],
288 },
289 },
290}
Paul Duffin75b902a2021-02-22 12:13:13 +0000291`),
292 // Make sure that the generated sdk_snapshot uses the native_objects property.
293 checkVersionedAndroidBpContents(`
294// This is auto-generated. DO NOT EDIT.
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000295
296cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000297 name: "mysdk_crtobj@current",
298 sdk_member_name: "crtobj",
Paul Duffind99d9972020-09-29 16:00:55 +0100299 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000300 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000301 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100302 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700303 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100304 sanitize: {
305 never: true,
306 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000307 arch: {
308 arm64: {
309 srcs: ["arm64/lib/crtobj.o"],
310 },
311 arm: {
312 srcs: ["arm/lib/crtobj.o"],
313 },
314 },
315}
316
317sdk_snapshot {
318 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100319 visibility: ["//visibility:public"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000320 native_objects: ["mysdk_crtobj@current"],
321}
322`),
323 checkAllCopyRules(`
324.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
325.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
326`),
327 )
328}
329
Paul Duffinc62a5102019-12-11 18:34:15 +0000330func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
331 result := testSdkWithCc(t, `
332 sdk {
333 name: "mysdk",
334 native_shared_libs: ["mynativelib1", "mynativelib2"],
335 }
336
337 cc_library_shared {
338 name: "mynativelib1",
339 srcs: [
340 "Test.cpp",
341 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000342 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000343 stl: "none",
344 }
345
346 cc_library_shared {
347 name: "mynativelib2",
348 srcs: [
349 "Test.cpp",
350 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000351 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000352 stl: "none",
353 }
354 `)
355
Paul Duffin36474d32021-03-12 12:19:43 +0000356 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000357 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000358myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800359.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
360.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
361.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
362.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000363`),
364 )
365}
366
Paul Duffina43f9272021-02-17 10:55:25 +0000367func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
368 result := testSdkWithCc(t, `
369 sdk {
370 name: "mysdk",
371 native_shared_libs: ["mynativelib"],
372 }
373
374 cc_library_shared {
375 name: "mynativelib",
376 srcs: [
377 "Test.cpp",
378 ],
379 generated_headers: [
380 "generated_foo",
381 ],
382 export_generated_headers: [
383 "generated_foo",
384 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000385 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000386 stl: "none",
387 }
388
389 genrule {
390 name: "generated_foo",
391 cmd: "generate-foo",
392 out: [
393 "generated_foo/protos/foo/bar.h",
394 ],
395 export_include_dirs: [
396 ".",
397 "protos",
398 ],
399 }
400 `)
401
Paul Duffindb462dd2021-03-21 22:01:55 +0000402 // TODO(b/183322862): Remove this and fix the issue.
403 errorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist`)
404
Paul Duffin36474d32021-03-12 12:19:43 +0000405 CheckSnapshot(t, result, "mysdk", "",
Paul Duffina43f9272021-02-17 10:55:25 +0000406 checkUnversionedAndroidBpContents(`
407// This is auto-generated. DO NOT EDIT.
408
409cc_prebuilt_library_shared {
410 name: "mynativelib",
411 prefer: false,
412 visibility: ["//visibility:public"],
413 apex_available: ["//apex_available:platform"],
414 stl: "none",
415 compile_multilib: "both",
Paul Duffin7a7d0672021-02-17 12:17:40 +0000416 export_include_dirs: [
417 "include/myinclude",
418 "include_gen/generated_foo/gen",
419 "include_gen/generated_foo/gen/protos",
420 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000421 arch: {
422 arm64: {
423 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000424 },
425 arm: {
426 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000427 },
428 },
429}
430`),
431 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000432myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000433.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 +0000434.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000435.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000436`),
Paul Duffindb462dd2021-03-21 22:01:55 +0000437 snapshotTestErrorHandler(checkSnapshotWithoutSource, errorHandler),
438 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, errorHandler),
439 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, errorHandler),
Paul Duffina43f9272021-02-17 10:55:25 +0000440 )
441}
442
Martin Stjernholmb0249572020-09-15 02:32:35 +0100443// Verify that when the shared library has some common and some arch specific
444// properties that the generated snapshot is optimized properly. Substruct
445// handling is tested with the sanitize clauses (but note there's a lot of
446// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000447func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
448 result := testSdkWithCc(t, `
449 sdk {
450 name: "mysdk",
451 native_shared_libs: ["mynativelib"],
452 }
453
454 cc_library_shared {
455 name: "mynativelib",
456 srcs: [
457 "Test.cpp",
458 "aidl/foo/bar/Test.aidl",
459 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000460 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100461 sanitize: {
462 fuzzer: false,
463 integer_overflow: true,
464 diag: { undefined: false },
465 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000466 arch: {
467 arm64: {
468 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100469 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100470 integer_overflow: false,
471 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000472 },
473 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000474 stl: "none",
475 }
476 `)
477
Paul Duffin36474d32021-03-12 12:19:43 +0000478 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000479 checkUnversionedAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000480// This is auto-generated. DO NOT EDIT.
481
482cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000483 name: "mynativelib",
484 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100485 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000486 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000487 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100488 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000489 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100490 sanitize: {
491 fuzzer: false,
492 diag: {
493 undefined: false,
494 },
495 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000496 arch: {
497 arm64: {
498 srcs: ["arm64/lib/mynativelib.so"],
499 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100500 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100501 integer_overflow: false,
502 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000503 },
504 arm: {
505 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100506 sanitize: {
507 integer_overflow: true,
508 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000509 },
510 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000511}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000512`),
513 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000514myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000515.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000516arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800517.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000518 )
519}
520
Paul Duffin25ce04b2020-01-16 11:47:25 +0000521func TestSnapshotWithCcBinary(t *testing.T) {
522 result := testSdkWithCc(t, `
523 module_exports {
524 name: "mymodule_exports",
525 native_binaries: ["mynativebinary"],
526 }
527
528 cc_binary {
529 name: "mynativebinary",
530 srcs: [
531 "Test.cpp",
532 ],
533 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000534 }
535 `)
536
Paul Duffin36474d32021-03-12 12:19:43 +0000537 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000538 checkUnversionedAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000539// This is auto-generated. DO NOT EDIT.
540
541cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000542 name: "mynativebinary",
543 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100544 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000545 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000546 compile_multilib: "both",
547 arch: {
548 arm64: {
549 srcs: ["arm64/bin/mynativebinary"],
550 },
551 arm: {
552 srcs: ["arm/bin/mynativebinary"],
553 },
554 },
555}
Paul Duffin75b902a2021-02-22 12:13:13 +0000556`),
557 // Make sure that the generated sdk_snapshot uses the native_binaries property.
558 checkVersionedAndroidBpContents(`
559// This is auto-generated. DO NOT EDIT.
Paul Duffin25ce04b2020-01-16 11:47:25 +0000560
561cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000562 name: "mymodule_exports_mynativebinary@current",
563 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100564 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000565 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +0000566 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000567 compile_multilib: "both",
568 arch: {
569 arm64: {
570 srcs: ["arm64/bin/mynativebinary"],
571 },
572 arm: {
573 srcs: ["arm/bin/mynativebinary"],
574 },
575 },
576}
577
578module_exports_snapshot {
579 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100580 visibility: ["//visibility:public"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000581 native_binaries: ["mymodule_exports_mynativebinary@current"],
582}
583`),
584 checkAllCopyRules(`
585.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
586.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
587`),
588 )
589}
590
Paul Duffina04c1072020-03-02 10:16:35 +0000591func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000592 result := testSdkWithCc(t, `
593 module_exports {
594 name: "myexports",
595 device_supported: false,
596 host_supported: true,
597 native_binaries: ["mynativebinary"],
598 target: {
599 windows: {
600 enabled: true,
601 },
602 },
603 }
604
605 cc_binary {
606 name: "mynativebinary",
607 device_supported: false,
608 host_supported: true,
609 srcs: [
610 "Test.cpp",
611 ],
612 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000613 stl: "none",
614 target: {
615 windows: {
616 enabled: true,
617 },
618 },
619 }
620 `)
621
Paul Duffin36474d32021-03-12 12:19:43 +0000622 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000623 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000624// This is auto-generated. DO NOT EDIT.
625
626cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000627 name: "mynativebinary",
628 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100629 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000630 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000631 device_supported: false,
632 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100633 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000634 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100635 host: {
636 enabled: false,
637 },
Paul Duffina04c1072020-03-02 10:16:35 +0000638 linux_glibc: {
639 compile_multilib: "both",
640 },
641 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900642 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000643 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
644 },
645 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900646 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000647 srcs: ["linux_glibc/x86/bin/mynativebinary"],
648 },
649 windows: {
650 compile_multilib: "64",
651 },
652 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900653 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000654 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
655 },
656 },
657}
Paul Duffin75b902a2021-02-22 12:13:13 +0000658`),
659 checkVersionedAndroidBpContents(`
660// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +0000661
662cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000663 name: "myexports_mynativebinary@current",
664 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100665 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000666 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000667 device_supported: false,
668 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000669 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100670 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000671 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100672 host: {
673 enabled: false,
674 },
Paul Duffina04c1072020-03-02 10:16:35 +0000675 linux_glibc: {
676 compile_multilib: "both",
677 },
678 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900679 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000680 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
681 },
682 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900683 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000684 srcs: ["linux_glibc/x86/bin/mynativebinary"],
685 },
686 windows: {
687 compile_multilib: "64",
688 },
689 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900690 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000691 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
692 },
693 },
694}
695
696module_exports_snapshot {
697 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100698 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +0000699 device_supported: false,
700 host_supported: true,
701 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000702 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900703 windows: {
704 compile_multilib: "64",
705 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100706 host: {
707 enabled: false,
708 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900709 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100710 enabled: true,
711 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900712 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100713 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +0900714 },
715 windows_x86_64: {
716 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +0000717 },
718 },
Paul Duffina04c1072020-03-02 10:16:35 +0000719}
720`),
721 checkAllCopyRules(`
722.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
723.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
724.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
725`),
726 )
727}
728
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100729func TestSnapshotWithSingleHostOsType(t *testing.T) {
Paul Duffin89648f92021-03-20 00:36:55 +0000730 result := android.GroupFixturePreparers(
731 prepareForSdkTest,
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000732 ccTestFs.AddToFixture(),
733 cc.PrepareForTestOnLinuxBionic,
734 android.FixtureModifyConfig(func(config android.Config) {
735 config.Targets[android.LinuxBionic] = []android.Target{
736 {android.LinuxBionic, android.Arch{ArchType: android.X86_64}, android.NativeBridgeDisabled, "", "", false},
737 }
738 }),
739 ).RunTestWithBp(t, `
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100740 cc_defaults {
741 name: "mydefaults",
742 device_supported: false,
743 host_supported: true,
744 compile_multilib: "64",
745 target: {
746 host: {
747 enabled: false,
748 },
749 linux_bionic: {
750 enabled: true,
751 },
752 },
753 }
754
755 module_exports {
756 name: "myexports",
757 defaults: ["mydefaults"],
758 native_shared_libs: ["mynativelib"],
759 native_binaries: ["mynativebinary"],
760 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
761 }
762
763 cc_library {
764 name: "mynativelib",
765 defaults: ["mydefaults"],
766 srcs: [
767 "Test.cpp",
768 ],
769 stl: "none",
770 }
771
772 cc_binary {
773 name: "mynativebinary",
774 defaults: ["mydefaults"],
775 srcs: [
776 "Test.cpp",
777 ],
778 stl: "none",
779 }
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000780 `)
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100781
Paul Duffin36474d32021-03-12 12:19:43 +0000782 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000783 checkUnversionedAndroidBpContents(`
784// This is auto-generated. DO NOT EDIT.
785
786cc_prebuilt_binary {
787 name: "mynativebinary",
788 prefer: false,
789 visibility: ["//visibility:public"],
790 apex_available: ["//apex_available:platform"],
791 device_supported: false,
792 host_supported: true,
793 stl: "none",
794 compile_multilib: "64",
795 target: {
796 host: {
797 enabled: false,
798 },
799 linux_bionic_x86_64: {
800 enabled: true,
801 srcs: ["x86_64/bin/mynativebinary"],
802 },
803 },
804}
805
806cc_prebuilt_library_shared {
807 name: "mynativelib",
808 prefer: false,
809 visibility: ["//visibility:public"],
810 apex_available: ["//apex_available:platform"],
811 device_supported: false,
812 host_supported: true,
813 stl: "none",
814 compile_multilib: "64",
815 target: {
816 host: {
817 enabled: false,
818 },
819 linux_bionic_x86_64: {
820 enabled: true,
821 srcs: ["x86_64/lib/mynativelib.so"],
822 },
823 },
824}
825`),
826 checkVersionedAndroidBpContents(`
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100827// This is auto-generated. DO NOT EDIT.
828
829cc_prebuilt_binary {
830 name: "myexports_mynativebinary@current",
831 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100832 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000833 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100834 device_supported: false,
835 host_supported: true,
836 installable: false,
837 stl: "none",
838 compile_multilib: "64",
839 target: {
840 host: {
841 enabled: false,
842 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100843 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900844 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100845 srcs: ["x86_64/bin/mynativebinary"],
846 },
847 },
848}
849
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100850cc_prebuilt_library_shared {
851 name: "myexports_mynativelib@current",
852 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +0100853 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000854 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100855 device_supported: false,
856 host_supported: true,
857 installable: false,
858 stl: "none",
859 compile_multilib: "64",
860 target: {
861 host: {
862 enabled: false,
863 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100864 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900865 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100866 srcs: ["x86_64/lib/mynativelib.so"],
867 },
868 },
869}
870
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100871module_exports_snapshot {
872 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100873 visibility: ["//visibility:public"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100874 device_supported: false,
875 host_supported: true,
Paul Duffin7b0259f2021-04-24 11:34:46 +0100876 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100877 native_binaries: ["myexports_mynativebinary@current"],
878 native_shared_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100879 target: {
880 host: {
881 enabled: false,
882 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900883 linux_bionic_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100884 enabled: true,
885 },
886 },
887}
888`),
889 checkAllCopyRules(`
890.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
891.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
892`),
893 )
894}
895
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100896// Test that we support the necessary flags for the linker binary, which is
897// special in several ways.
898func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100899 result := testSdkWithCc(t, `
900 module_exports {
901 name: "mymodule_exports",
902 host_supported: true,
903 device_supported: false,
904 native_binaries: ["linker"],
905 }
906
907 cc_binary {
908 name: "linker",
909 host_supported: true,
910 static_executable: true,
911 nocrt: true,
912 stl: "none",
913 srcs: [
914 "Test.cpp",
915 ],
916 compile_multilib: "both",
917 }
918 `)
919
Paul Duffin36474d32021-03-12 12:19:43 +0000920 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000921 checkUnversionedAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100922// This is auto-generated. DO NOT EDIT.
923
924cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000925 name: "linker",
926 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100927 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000928 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100929 device_supported: false,
930 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100931 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100932 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100933 static_executable: true,
934 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100935 target: {
936 host: {
937 enabled: false,
938 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100939 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900940 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100941 srcs: ["x86_64/bin/linker"],
942 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100943 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900944 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100945 srcs: ["x86/bin/linker"],
946 },
947 },
948}
Paul Duffin75b902a2021-02-22 12:13:13 +0000949`),
950 checkVersionedAndroidBpContents(`
951// This is auto-generated. DO NOT EDIT.
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100952
953cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000954 name: "mymodule_exports_linker@current",
955 sdk_member_name: "linker",
Paul Duffind99d9972020-09-29 16:00:55 +0100956 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000957 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100958 device_supported: false,
959 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000960 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100961 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100962 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100963 static_executable: true,
964 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100965 target: {
966 host: {
967 enabled: false,
968 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100969 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900970 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100971 srcs: ["x86_64/bin/linker"],
972 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100973 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900974 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100975 srcs: ["x86/bin/linker"],
976 },
977 },
978}
979
980module_exports_snapshot {
981 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100982 visibility: ["//visibility:public"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100983 device_supported: false,
984 host_supported: true,
985 native_binaries: ["mymodule_exports_linker@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100986 target: {
987 host: {
988 enabled: false,
989 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900990 linux_glibc_x86_64: {
991 enabled: true,
992 },
993 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100994 enabled: true,
995 },
996 },
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100997}
998`),
999 checkAllCopyRules(`
1000.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
1001.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
1002`),
1003 )
1004}
1005
Paul Duffin9ab556f2019-12-11 18:42:17 +00001006func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001007 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001008 sdk {
1009 name: "mysdk",
1010 native_shared_libs: ["mynativelib"],
1011 }
1012
1013 cc_library_shared {
1014 name: "mynativelib",
1015 srcs: [
1016 "Test.cpp",
1017 "aidl/foo/bar/Test.aidl",
1018 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001019 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +00001020 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001021 aidl: {
1022 export_aidl_headers: true,
1023 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001024 stl: "none",
1025 }
1026 `)
1027
Paul Duffin36474d32021-03-12 12:19:43 +00001028 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001029 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001030// This is auto-generated. DO NOT EDIT.
1031
1032cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +00001033 name: "mynativelib",
1034 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001035 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001036 apex_available: [
1037 "apex1",
1038 "apex2",
1039 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001040 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001041 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001042 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001043 arch: {
1044 arm64: {
1045 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001046 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001047 },
1048 arm: {
1049 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001050 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001051 },
1052 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001053}
Paul Duffina80fdec2019-12-03 15:25:00 +00001054`),
1055 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001056myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001057.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001058.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
1059.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
1060.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 -08001061.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001062.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
1063.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
1064.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 +00001065`),
1066 )
1067}
1068
Paul Duffin13f02712020-03-06 12:30:43 +00001069func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
1070 result := testSdkWithCc(t, `
1071 sdk {
1072 name: "mysdk",
1073 native_shared_libs: [
1074 "mynativelib",
1075 "myothernativelib",
1076 "mysystemnativelib",
1077 ],
1078 }
1079
1080 cc_library {
1081 name: "mysystemnativelib",
1082 srcs: [
1083 "Test.cpp",
1084 ],
Paul Duffin13f02712020-03-06 12:30:43 +00001085 stl: "none",
1086 }
1087
1088 cc_library_shared {
1089 name: "myothernativelib",
1090 srcs: [
1091 "Test.cpp",
1092 ],
1093 system_shared_libs: [
1094 // A reference to a library that is not an sdk member. Uses libm as that
1095 // is in the default set of modules available to this test and so is available
1096 // both here and also when the generated Android.bp file is tested in
1097 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
1098 // handles references to modules that are not sdk members.
1099 "libm",
1100 ],
1101 stl: "none",
1102 }
1103
1104 cc_library {
1105 name: "mynativelib",
1106 srcs: [
1107 "Test.cpp",
1108 ],
1109 shared_libs: [
1110 // A reference to another sdk member.
1111 "myothernativelib",
1112 ],
1113 target: {
1114 android: {
1115 shared: {
1116 shared_libs: [
1117 // A reference to a library that is not an sdk member. The libc library
1118 // is used here to check that the shared_libs property is handled correctly
1119 // in a similar way to how libm is used to check system_shared_libs above.
1120 "libc",
1121 ],
1122 },
1123 },
1124 },
Paul Duffin13f02712020-03-06 12:30:43 +00001125 stl: "none",
1126 }
1127 `)
1128
Paul Duffin36474d32021-03-12 12:19:43 +00001129 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001130 checkUnversionedAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +00001131// This is auto-generated. DO NOT EDIT.
1132
1133cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001134 name: "mynativelib",
1135 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001136 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001137 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001138 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001139 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001140 shared_libs: [
1141 "myothernativelib",
1142 "libc",
1143 ],
1144 arch: {
1145 arm64: {
1146 srcs: ["arm64/lib/mynativelib.so"],
1147 },
1148 arm: {
1149 srcs: ["arm/lib/mynativelib.so"],
1150 },
1151 },
Paul Duffin13f02712020-03-06 12:30:43 +00001152}
1153
1154cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001155 name: "myothernativelib",
1156 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001157 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001158 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001159 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001160 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001161 system_shared_libs: ["libm"],
1162 arch: {
1163 arm64: {
1164 srcs: ["arm64/lib/myothernativelib.so"],
1165 },
1166 arm: {
1167 srcs: ["arm/lib/myothernativelib.so"],
1168 },
1169 },
Paul Duffin13f02712020-03-06 12:30:43 +00001170}
1171
1172cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001173 name: "mysystemnativelib",
1174 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001175 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001176 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001177 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001178 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001179 arch: {
1180 arm64: {
1181 srcs: ["arm64/lib/mysystemnativelib.so"],
1182 },
1183 arm: {
1184 srcs: ["arm/lib/mysystemnativelib.so"],
1185 },
1186 },
Paul Duffin13f02712020-03-06 12:30:43 +00001187}
Paul Duffin13f02712020-03-06 12:30:43 +00001188`),
1189 checkAllCopyRules(`
1190.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1191.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1192.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1193.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1194.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1195.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1196`),
1197 )
1198}
1199
Paul Duffin9ab556f2019-12-11 18:42:17 +00001200func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001201 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001202 sdk {
1203 name: "mysdk",
1204 device_supported: false,
1205 host_supported: true,
1206 native_shared_libs: ["mynativelib"],
1207 }
1208
1209 cc_library_shared {
1210 name: "mynativelib",
1211 device_supported: false,
1212 host_supported: true,
1213 srcs: [
1214 "Test.cpp",
1215 "aidl/foo/bar/Test.aidl",
1216 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001217 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001218 aidl: {
1219 export_aidl_headers: true,
1220 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001221 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001222 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001223 }
1224 `)
1225
Paul Duffin36474d32021-03-12 12:19:43 +00001226 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001227 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001228// This is auto-generated. DO NOT EDIT.
1229
1230cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001231 name: "mynativelib",
1232 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001233 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001234 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001235 device_supported: false,
1236 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001237 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001238 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001239 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001240 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001241 target: {
1242 host: {
1243 enabled: false,
1244 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001245 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001246 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001247 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001248 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001249 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001250 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001251 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001252 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001253 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001254 },
1255 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001256}
Paul Duffin75b902a2021-02-22 12:13:13 +00001257`),
1258 checkVersionedAndroidBpContents(`
1259// This is auto-generated. DO NOT EDIT.
Paul Duffina80fdec2019-12-03 15:25:00 +00001260
1261cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001262 name: "mysdk_mynativelib@current",
1263 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001264 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001265 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001266 device_supported: false,
1267 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001268 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001269 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001270 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001271 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001272 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001273 target: {
1274 host: {
1275 enabled: false,
1276 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001277 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001278 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001279 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001280 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001281 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001282 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001283 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001284 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001285 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001286 },
1287 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001288}
1289
1290sdk_snapshot {
1291 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001292 visibility: ["//visibility:public"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001293 device_supported: false,
1294 host_supported: true,
1295 native_shared_libs: ["mysdk_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001296 target: {
1297 host: {
1298 enabled: false,
1299 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001300 linux_glibc_x86_64: {
1301 enabled: true,
1302 },
1303 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001304 enabled: true,
1305 },
1306 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001307}
1308`),
1309 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001310myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001311.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001312.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
1313.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
1314.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 +00001315.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001316.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
1317.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
1318.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 +00001319`),
1320 )
1321}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001322
Paul Duffina04c1072020-03-02 10:16:35 +00001323func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001324 result := testSdkWithCc(t, `
1325 sdk {
1326 name: "mysdk",
1327 device_supported: false,
1328 host_supported: true,
1329 native_shared_libs: ["mynativelib"],
1330 target: {
1331 windows: {
1332 enabled: true,
1333 },
1334 },
1335 }
1336
1337 cc_library_shared {
1338 name: "mynativelib",
1339 device_supported: false,
1340 host_supported: true,
1341 srcs: [
1342 "Test.cpp",
1343 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001344 stl: "none",
1345 target: {
1346 windows: {
1347 enabled: true,
1348 },
1349 },
1350 }
1351 `)
1352
Paul Duffin36474d32021-03-12 12:19:43 +00001353 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001354 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001355// This is auto-generated. DO NOT EDIT.
1356
1357cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001358 name: "mynativelib",
1359 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001360 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001361 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001362 device_supported: false,
1363 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001364 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001365 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001366 host: {
1367 enabled: false,
1368 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001369 linux_glibc: {
1370 compile_multilib: "both",
1371 },
Paul Duffina04c1072020-03-02 10:16:35 +00001372 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001373 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001374 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1375 },
1376 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001377 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001378 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1379 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001380 windows: {
1381 compile_multilib: "64",
1382 },
Paul Duffina04c1072020-03-02 10:16:35 +00001383 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001384 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001385 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1386 },
1387 },
Paul Duffina04c1072020-03-02 10:16:35 +00001388}
Paul Duffin75b902a2021-02-22 12:13:13 +00001389`),
1390 checkVersionedAndroidBpContents(`
1391// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00001392
1393cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001394 name: "mysdk_mynativelib@current",
1395 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001396 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001397 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001398 device_supported: false,
1399 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001400 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001401 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001402 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001403 host: {
1404 enabled: false,
1405 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001406 linux_glibc: {
1407 compile_multilib: "both",
1408 },
Paul Duffina04c1072020-03-02 10:16:35 +00001409 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001410 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001411 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1412 },
1413 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001414 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001415 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1416 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001417 windows: {
1418 compile_multilib: "64",
1419 },
Paul Duffina04c1072020-03-02 10:16:35 +00001420 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001421 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001422 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1423 },
1424 },
Paul Duffina04c1072020-03-02 10:16:35 +00001425}
1426
1427sdk_snapshot {
1428 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001429 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00001430 device_supported: false,
1431 host_supported: true,
1432 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001433 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001434 windows: {
1435 compile_multilib: "64",
1436 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001437 host: {
1438 enabled: false,
1439 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001440 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001441 enabled: true,
1442 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001443 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001444 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +09001445 },
1446 windows_x86_64: {
1447 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +00001448 },
1449 },
Paul Duffina04c1072020-03-02 10:16:35 +00001450}
1451`),
1452 checkAllCopyRules(`
1453.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1454.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1455.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1456`),
1457 )
1458}
1459
Paul Duffin9ab556f2019-12-11 18:42:17 +00001460func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1461 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001462 module_exports {
1463 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001464 native_static_libs: ["mynativelib"],
1465 }
1466
1467 cc_library_static {
1468 name: "mynativelib",
1469 srcs: [
1470 "Test.cpp",
1471 "aidl/foo/bar/Test.aidl",
1472 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001473 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001474 aidl: {
1475 export_aidl_headers: true,
1476 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001477 stl: "none",
1478 }
1479 `)
1480
Paul Duffin36474d32021-03-12 12:19:43 +00001481 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001482 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001483// This is auto-generated. DO NOT EDIT.
1484
1485cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001486 name: "mynativelib",
1487 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001488 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001489 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001490 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001491 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001492 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001493 arch: {
1494 arm64: {
1495 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001496 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001497 },
1498 arm: {
1499 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001500 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001501 },
1502 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001503}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001504`),
1505 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001506myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001507.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001508.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
1509.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
1510.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 -08001511.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001512.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
1513.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
1514.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 +00001515`),
1516 )
1517}
1518
1519func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001520 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001521 module_exports {
1522 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001523 device_supported: false,
1524 host_supported: true,
1525 native_static_libs: ["mynativelib"],
1526 }
1527
1528 cc_library_static {
1529 name: "mynativelib",
1530 device_supported: false,
1531 host_supported: true,
1532 srcs: [
1533 "Test.cpp",
1534 "aidl/foo/bar/Test.aidl",
1535 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001536 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001537 aidl: {
1538 export_aidl_headers: true,
1539 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001540 stl: "none",
1541 }
1542 `)
1543
Paul Duffin36474d32021-03-12 12:19:43 +00001544 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001545 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001546// This is auto-generated. DO NOT EDIT.
1547
1548cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001549 name: "mynativelib",
1550 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001551 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001552 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001553 device_supported: false,
1554 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001555 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001556 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001557 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001558 target: {
1559 host: {
1560 enabled: false,
1561 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001562 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001563 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001564 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001565 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001566 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001567 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001568 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001569 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001570 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001571 },
1572 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001573}
Paul Duffin75b902a2021-02-22 12:13:13 +00001574`),
1575 checkVersionedAndroidBpContents(`
1576// This is auto-generated. DO NOT EDIT.
Paul Duffin9ab556f2019-12-11 18:42:17 +00001577
1578cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001579 name: "myexports_mynativelib@current",
1580 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001581 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001582 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001583 device_supported: false,
1584 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001585 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001586 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001587 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001588 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001589 target: {
1590 host: {
1591 enabled: false,
1592 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001593 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001594 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001595 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001596 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001597 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001598 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001599 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001600 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001601 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001602 },
1603 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001604}
1605
Paul Duffine6029182019-12-16 17:43:48 +00001606module_exports_snapshot {
1607 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001608 visibility: ["//visibility:public"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001609 device_supported: false,
1610 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001611 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001612 target: {
1613 host: {
1614 enabled: false,
1615 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001616 linux_glibc_x86_64: {
1617 enabled: true,
1618 },
1619 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001620 enabled: true,
1621 },
1622 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001623}
1624`),
1625 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001626myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001627.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001628.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
1629.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
1630.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 +00001631.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001632.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
1633.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
1634.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 +00001635`),
1636 )
1637}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001638
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001639func TestSnapshotWithCcLibrary(t *testing.T) {
1640 result := testSdkWithCc(t, `
1641 module_exports {
1642 name: "myexports",
1643 native_libs: ["mynativelib"],
1644 }
1645
1646 cc_library {
1647 name: "mynativelib",
1648 srcs: [
1649 "Test.cpp",
1650 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001651 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001652 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001653 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001654 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001655 }
1656 `)
1657
Paul Duffin36474d32021-03-12 12:19:43 +00001658 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001659 checkUnversionedAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001660// This is auto-generated. DO NOT EDIT.
1661
1662cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001663 name: "mynativelib",
1664 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001665 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001666 apex_available: ["//apex_available:platform"],
Paul Duffind1edbd42020-08-13 19:45:31 +01001667 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001668 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001669 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001670 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001671 arch: {
1672 arm64: {
1673 static: {
1674 srcs: ["arm64/lib/mynativelib.a"],
1675 },
1676 shared: {
1677 srcs: ["arm64/lib/mynativelib.so"],
1678 },
1679 },
1680 arm: {
1681 static: {
1682 srcs: ["arm/lib/mynativelib.a"],
1683 },
1684 shared: {
1685 srcs: ["arm/lib/mynativelib.so"],
1686 },
1687 },
1688 },
1689}
Paul Duffin75b902a2021-02-22 12:13:13 +00001690`),
1691 // Make sure that the generated sdk_snapshot uses the native_libs property.
1692 checkVersionedAndroidBpContents(`
1693// This is auto-generated. DO NOT EDIT.
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001694
1695cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001696 name: "myexports_mynativelib@current",
1697 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001698 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001699 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +00001700 installable: false,
Paul Duffind1edbd42020-08-13 19:45:31 +01001701 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001702 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001703 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001704 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001705 arch: {
1706 arm64: {
1707 static: {
1708 srcs: ["arm64/lib/mynativelib.a"],
1709 },
1710 shared: {
1711 srcs: ["arm64/lib/mynativelib.so"],
1712 },
1713 },
1714 arm: {
1715 static: {
1716 srcs: ["arm/lib/mynativelib.a"],
1717 },
1718 shared: {
1719 srcs: ["arm/lib/mynativelib.so"],
1720 },
1721 },
1722 },
1723}
1724
1725module_exports_snapshot {
1726 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001727 visibility: ["//visibility:public"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001728 native_libs: ["myexports_mynativelib@current"],
1729}
1730`),
1731 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001732myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001733.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1734.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1735.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin1822a0a2021-03-21 12:56:33 +00001736.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1737`),
1738 // TODO(b/183315522): Remove this and fix the issue.
1739 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\Qunrecognized property "arch.arm.shared.export_include_dirs"\E`)),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001740 )
1741}
1742
Liz Kammer96320df2022-05-12 20:40:00 -04001743func TestSnapshotSameLibraryWithNativeLibsAndNativeSharedLib(t *testing.T) {
1744 result := testSdkWithCc(t, `
1745 module_exports {
1746 host_supported: true,
1747 name: "myexports",
1748 target: {
1749 android: {
1750 native_shared_libs: [
1751 "mynativelib",
1752 ],
1753 },
1754 not_windows: {
1755 native_libs: [
1756 "mynativelib",
1757 ],
1758 },
1759 },
1760 }
1761
1762 cc_library {
1763 name: "mynativelib",
1764 host_supported: true,
1765 srcs: [
1766 "Test.cpp",
1767 ],
1768 stl: "none",
1769 recovery_available: true,
1770 vendor_available: true,
1771 }
1772 `)
1773
1774 CheckSnapshot(t, result, "myexports", "",
1775 checkUnversionedAndroidBpContents(`
1776// This is auto-generated. DO NOT EDIT.
1777
1778cc_prebuilt_library {
1779 name: "mynativelib",
1780 prefer: false,
1781 visibility: ["//visibility:public"],
1782 apex_available: ["//apex_available:platform"],
1783 host_supported: true,
1784 vendor_available: true,
1785 stl: "none",
1786 compile_multilib: "both",
1787 target: {
1788 host: {
1789 enabled: false,
1790 },
1791 android_arm64: {
1792 shared: {
1793 srcs: ["android/arm64/lib/mynativelib.so"],
1794 },
1795 static: {
1796 enabled: false,
1797 },
1798 },
1799 android_arm: {
1800 shared: {
1801 srcs: ["android/arm/lib/mynativelib.so"],
1802 },
1803 static: {
1804 enabled: false,
1805 },
1806 },
1807 linux_glibc_x86_64: {
1808 enabled: true,
1809 static: {
1810 srcs: ["linux_glibc/x86_64/lib/mynativelib.a"],
1811 },
1812 shared: {
1813 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1814 },
1815 },
1816 linux_glibc_x86: {
1817 enabled: true,
1818 static: {
1819 srcs: ["linux_glibc/x86/lib/mynativelib.a"],
1820 },
1821 shared: {
1822 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1823 },
1824 },
1825 },
1826}
1827`),
1828 checkAllCopyRules(`
1829.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1830.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1831.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> linux_glibc/x86_64/lib/mynativelib.a
1832.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1833.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> linux_glibc/x86/lib/mynativelib.a
1834.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1835`),
1836 )
1837}
1838
1839func TestSnapshotSameLibraryWithAndroidNativeLibsAndHostNativeSharedLib(t *testing.T) {
1840 result := testSdkWithCc(t, `
1841 module_exports {
1842 host_supported: true,
1843 name: "myexports",
1844 target: {
1845 android: {
1846 native_libs: [
1847 "mynativelib",
1848 ],
1849 },
1850 not_windows: {
1851 native_shared_libs: [
1852 "mynativelib",
1853 ],
1854 },
1855 },
1856 }
1857
1858 cc_library {
1859 name: "mynativelib",
1860 host_supported: true,
1861 srcs: [
1862 "Test.cpp",
1863 ],
1864 stl: "none",
1865 recovery_available: true,
1866 vendor_available: true,
1867 }
1868 `)
1869
1870 CheckSnapshot(t, result, "myexports", "",
1871 checkUnversionedAndroidBpContents(`
1872// This is auto-generated. DO NOT EDIT.
1873
1874cc_prebuilt_library {
1875 name: "mynativelib",
1876 prefer: false,
1877 visibility: ["//visibility:public"],
1878 apex_available: ["//apex_available:platform"],
1879 host_supported: true,
1880 vendor_available: true,
1881 stl: "none",
1882 compile_multilib: "both",
1883 target: {
1884 host: {
1885 enabled: false,
1886 },
1887 android_arm64: {
1888 static: {
1889 srcs: ["android/arm64/lib/mynativelib.a"],
1890 },
1891 shared: {
1892 srcs: ["android/arm64/lib/mynativelib.so"],
1893 },
1894 },
1895 android_arm: {
1896 static: {
1897 srcs: ["android/arm/lib/mynativelib.a"],
1898 },
1899 shared: {
1900 srcs: ["android/arm/lib/mynativelib.so"],
1901 },
1902 },
1903 linux_glibc_x86_64: {
1904 enabled: true,
1905 shared: {
1906 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1907 },
1908 static: {
1909 enabled: false,
1910 },
1911 },
1912 linux_glibc_x86: {
1913 enabled: true,
1914 shared: {
1915 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1916 },
1917 static: {
1918 enabled: false,
1919 },
1920 },
1921 },
1922}
1923`),
1924 checkAllCopyRules(`
1925.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> android/arm64/lib/mynativelib.a
1926.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> android/arm64/lib/mynativelib.so
1927.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> android/arm/lib/mynativelib.a
1928.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> android/arm/lib/mynativelib.so
1929.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1930.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1931`),
1932 )
1933}
1934
1935func TestSnapshotSameLibraryWithNativeStaticLibsAndNativeSharedLib(t *testing.T) {
1936 testSdkError(t, "Incompatible member types", `
1937 module_exports {
1938 host_supported: true,
1939 name: "myexports",
1940 target: {
1941 android: {
1942 native_shared_libs: [
1943 "mynativelib",
1944 ],
1945 },
1946 not_windows: {
1947 native_static_libs: [
1948 "mynativelib",
1949 ],
1950 },
1951 },
1952 }
1953
1954 cc_library {
1955 name: "mynativelib",
1956 host_supported: true,
1957 srcs: [
1958 ],
1959 stl: "none",
1960 recovery_available: true,
1961 vendor_available: true,
1962 }
1963 `)
1964}
1965
Paul Duffin13ad94f2020-02-19 16:19:27 +00001966func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001967 result := testSdkWithCc(t, `
1968 module_exports {
1969 name: "myexports",
1970 device_supported: false,
1971 host_supported: true,
1972 target: {
1973 host: {
1974 compile_multilib: "64",
1975 },
1976 },
1977 native_static_libs: ["mynativelib"],
1978 }
1979
1980 cc_library_static {
1981 name: "mynativelib",
1982 device_supported: false,
1983 host_supported: true,
1984 srcs: [
1985 "Test.cpp",
1986 "aidl/foo/bar/Test.aidl",
1987 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001988 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001989 aidl: {
1990 export_aidl_headers: true,
1991 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001992 stl: "none",
1993 }
1994 `)
1995
Paul Duffin36474d32021-03-12 12:19:43 +00001996 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001997 checkUnversionedAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001998// This is auto-generated. DO NOT EDIT.
1999
2000cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00002001 name: "mynativelib",
2002 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002003 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002004 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00002005 device_supported: false,
2006 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002007 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002008 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00002009 export_include_dirs: [
2010 "include/myinclude",
2011 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
2012 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002013 target: {
2014 host: {
2015 enabled: false,
2016 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002017 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002018 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00002019 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00002020 },
2021 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00002022}
Paul Duffin75b902a2021-02-22 12:13:13 +00002023`),
2024 checkVersionedAndroidBpContents(`
2025// This is auto-generated. DO NOT EDIT.
Paul Duffin13ad94f2020-02-19 16:19:27 +00002026
2027cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00002028 name: "myexports_mynativelib@current",
2029 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01002030 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002031 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00002032 device_supported: false,
2033 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002034 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002035 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002036 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00002037 export_include_dirs: [
2038 "include/myinclude",
2039 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
2040 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002041 target: {
2042 host: {
2043 enabled: false,
2044 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002045 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002046 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00002047 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00002048 },
2049 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00002050}
2051
2052module_exports_snapshot {
2053 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002054 visibility: ["//visibility:public"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00002055 device_supported: false,
2056 host_supported: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01002057 compile_multilib: "64",
Paul Duffin7b0259f2021-04-24 11:34:46 +01002058 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002059 target: {
2060 host: {
2061 enabled: false,
2062 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002063 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002064 enabled: true,
2065 },
2066 },
Paul Duffin75b902a2021-02-22 12:13:13 +00002067}
2068`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00002069 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002070myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00002071.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
2072.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
2073.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 +00002074.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00002075`),
2076 )
2077}
Paul Duffin91756d22020-02-21 16:29:57 +00002078
2079func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
2080 result := testSdkWithCc(t, `
2081 sdk {
2082 name: "mysdk",
2083 native_header_libs: ["mynativeheaders"],
2084 }
2085
2086 cc_library_headers {
2087 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00002088 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00002089 stl: "none",
2090 }
2091 `)
2092
Paul Duffin36474d32021-03-12 12:19:43 +00002093 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002094 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00002095// This is auto-generated. DO NOT EDIT.
2096
2097cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00002098 name: "mynativeheaders",
2099 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002100 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002101 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002102 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002103 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002104 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00002105}
Paul Duffin91756d22020-02-21 16:29:57 +00002106`),
2107 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002108myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002109`),
2110 )
2111}
2112
Paul Duffin93b750e2019-11-19 19:44:10 +00002113func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport(t *testing.T) {
2114 result := android.GroupFixturePreparers(
2115 cc.PrepareForTestWithCcDefaultModules,
2116 PrepareForTestWithSdkBuildComponents,
2117 ccTestFs.AddToFixture(),
2118 prepareForTestWithNativeBridgeTarget,
2119 ).RunTestWithBp(t, `
2120 sdk {
2121 name: "mysdk",
2122 native_header_libs: ["mynativeheaders"],
2123 traits: {
2124 native_bridge_support: ["mynativeheaders"],
2125 },
2126 }
2127
2128 cc_library_headers {
2129 name: "mynativeheaders",
2130 export_include_dirs: ["myinclude"],
2131 stl: "none",
2132 system_shared_libs: [],
2133 native_bridge_supported: true,
2134 }
2135 `)
2136
2137 CheckSnapshot(t, result, "mysdk", "",
2138 checkUnversionedAndroidBpContents(`
2139// This is auto-generated. DO NOT EDIT.
2140
2141cc_prebuilt_library_headers {
2142 name: "mynativeheaders",
2143 prefer: false,
2144 visibility: ["//visibility:public"],
2145 apex_available: ["//apex_available:platform"],
2146 native_bridge_supported: true,
2147 stl: "none",
2148 compile_multilib: "both",
2149 system_shared_libs: [],
2150 export_include_dirs: ["include/myinclude"],
2151}
2152`),
2153 checkAllCopyRules(`
2154myinclude/Test.h -> include/myinclude/Test.h
2155`),
2156 )
2157}
2158
2159// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
2160// module that has different output files for a native bridge target requests the native bridge
2161// variants are copied into the sdk snapshot that it reports an error.
2162func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties(t *testing.T) {
2163 android.GroupFixturePreparers(
2164 cc.PrepareForTestWithCcDefaultModules,
2165 PrepareForTestWithSdkBuildComponents,
2166 ccTestFs.AddToFixture(),
2167 prepareForTestWithNativeBridgeTarget,
2168 ).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
2169 `\QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants; this is not yet supported. The properties are:
2170 export_include_dirs: [
2171 "arm64_native_bridge/include/myinclude_nativebridge",
2172 "arm64_native_bridge/include/myinclude",
2173 ],\E`)).
2174 RunTestWithBp(t, `
2175 sdk {
2176 name: "mysdk",
2177 native_header_libs: ["mynativeheaders"],
2178 traits: {
2179 native_bridge_support: ["mynativeheaders"],
2180 },
2181 }
2182
2183 cc_library_headers {
2184 name: "mynativeheaders",
2185 export_include_dirs: ["myinclude"],
2186 stl: "none",
2187 system_shared_libs: [],
2188 native_bridge_supported: true,
2189 target: {
2190 native_bridge: {
2191 export_include_dirs: ["myinclude_nativebridge"],
2192 },
2193 },
2194 }
2195 `)
2196}
2197
Paul Duffin63696222021-09-06 10:28:34 +01002198func TestSnapshotWithCcHeadersLibraryAndImageVariants(t *testing.T) {
2199 testImageVariant := func(t *testing.T, property, trait string) {
2200 result := android.GroupFixturePreparers(
2201 cc.PrepareForTestWithCcDefaultModules,
2202 PrepareForTestWithSdkBuildComponents,
2203 ccTestFs.AddToFixture(),
2204 ).RunTestWithBp(t, fmt.Sprintf(`
2205 sdk {
2206 name: "mysdk",
2207 native_header_libs: ["mynativeheaders"],
2208 traits: {
2209 %s: ["mynativeheaders"],
2210 },
2211 }
2212
2213 cc_library_headers {
2214 name: "mynativeheaders",
2215 export_include_dirs: ["myinclude"],
2216 stl: "none",
2217 system_shared_libs: [],
2218 %s: true,
2219 }
2220 `, trait, property))
2221
2222 CheckSnapshot(t, result, "mysdk", "",
2223 checkUnversionedAndroidBpContents(fmt.Sprintf(`
2224// This is auto-generated. DO NOT EDIT.
2225
2226cc_prebuilt_library_headers {
2227 name: "mynativeheaders",
2228 prefer: false,
2229 visibility: ["//visibility:public"],
2230 apex_available: ["//apex_available:platform"],
2231 %s: true,
2232 stl: "none",
2233 compile_multilib: "both",
2234 system_shared_libs: [],
2235 export_include_dirs: ["include/myinclude"],
2236}
2237`, property)),
2238 checkAllCopyRules(`
2239myinclude/Test.h -> include/myinclude/Test.h
2240`),
2241 )
2242 }
2243
Paul Duffin12a0a312021-09-15 17:25:10 +01002244 t.Run("ramdisk", func(t *testing.T) {
2245 testImageVariant(t, "ramdisk_available", "ramdisk_image_required")
2246 })
2247
Paul Duffin63696222021-09-06 10:28:34 +01002248 t.Run("recovery", func(t *testing.T) {
2249 testImageVariant(t, "recovery_available", "recovery_image_required")
2250 })
2251}
2252
Paul Duffin91756d22020-02-21 16:29:57 +00002253func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00002254 result := testSdkWithCc(t, `
2255 sdk {
2256 name: "mysdk",
2257 device_supported: false,
2258 host_supported: true,
2259 native_header_libs: ["mynativeheaders"],
2260 }
2261
2262 cc_library_headers {
2263 name: "mynativeheaders",
2264 device_supported: false,
2265 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00002266 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00002267 stl: "none",
2268 }
2269 `)
2270
Paul Duffin36474d32021-03-12 12:19:43 +00002271 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002272 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00002273// This is auto-generated. DO NOT EDIT.
2274
2275cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002276 name: "mynativeheaders",
2277 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002278 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002279 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002280 device_supported: false,
2281 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002282 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002283 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002284 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002285 target: {
2286 host: {
2287 enabled: false,
2288 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002289 linux_glibc_x86_64: {
2290 enabled: true,
2291 },
2292 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002293 enabled: true,
2294 },
2295 },
Paul Duffin91756d22020-02-21 16:29:57 +00002296}
Paul Duffin75b902a2021-02-22 12:13:13 +00002297`),
2298 checkVersionedAndroidBpContents(`
2299// This is auto-generated. DO NOT EDIT.
Paul Duffin91756d22020-02-21 16:29:57 +00002300
2301cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002302 name: "mysdk_mynativeheaders@current",
2303 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002304 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002305 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002306 device_supported: false,
2307 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002308 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002309 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002310 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002311 target: {
2312 host: {
2313 enabled: false,
2314 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002315 linux_glibc_x86_64: {
2316 enabled: true,
2317 },
2318 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002319 enabled: true,
2320 },
2321 },
Paul Duffin91756d22020-02-21 16:29:57 +00002322}
2323
2324sdk_snapshot {
2325 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002326 visibility: ["//visibility:public"],
Paul Duffin91756d22020-02-21 16:29:57 +00002327 device_supported: false,
2328 host_supported: true,
2329 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002330 target: {
2331 host: {
2332 enabled: false,
2333 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002334 linux_glibc_x86_64: {
2335 enabled: true,
2336 },
2337 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002338 enabled: true,
2339 },
2340 },
Paul Duffin91756d22020-02-21 16:29:57 +00002341}
2342`),
2343 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002344myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002345`),
2346 )
2347}
Paul Duffina04c1072020-03-02 10:16:35 +00002348
2349func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00002350 result := testSdkWithCc(t, `
2351 sdk {
2352 name: "mysdk",
2353 host_supported: true,
2354 native_header_libs: ["mynativeheaders"],
2355 }
2356
2357 cc_library_headers {
2358 name: "mynativeheaders",
2359 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00002360 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00002361 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002362 target: {
2363 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002364 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002365 },
2366 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002367 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002368 },
2369 },
2370 }
2371 `)
2372
Paul Duffin36474d32021-03-12 12:19:43 +00002373 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002374 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002375// This is auto-generated. DO NOT EDIT.
2376
2377cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002378 name: "mynativeheaders",
2379 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002380 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002381 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002382 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002383 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002384 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002385 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002386 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002387 host: {
2388 enabled: false,
2389 },
Paul Duffina04c1072020-03-02 10:16:35 +00002390 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002391 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002392 },
2393 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002394 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002395 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002396 linux_glibc_x86_64: {
2397 enabled: true,
2398 },
2399 linux_glibc_x86: {
2400 enabled: true,
2401 },
Paul Duffina04c1072020-03-02 10:16:35 +00002402 },
Paul Duffina04c1072020-03-02 10:16:35 +00002403}
Paul Duffin75b902a2021-02-22 12:13:13 +00002404`),
Paul Duffin75b902a2021-02-22 12:13:13 +00002405 checkVersionedAndroidBpContents(`
2406// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00002407
2408cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002409 name: "mysdk_mynativeheaders@current",
2410 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002411 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002412 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002413 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002414 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002415 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002416 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002417 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002418 host: {
2419 enabled: false,
2420 },
Paul Duffina04c1072020-03-02 10:16:35 +00002421 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002422 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002423 },
2424 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002425 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002426 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002427 linux_glibc_x86_64: {
2428 enabled: true,
2429 },
2430 linux_glibc_x86: {
2431 enabled: true,
2432 },
Paul Duffina04c1072020-03-02 10:16:35 +00002433 },
Paul Duffina04c1072020-03-02 10:16:35 +00002434}
2435
2436sdk_snapshot {
2437 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002438 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00002439 host_supported: true,
2440 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002441 target: {
2442 host: {
2443 enabled: false,
2444 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002445 linux_glibc_x86_64: {
2446 enabled: true,
2447 },
2448 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002449 enabled: true,
2450 },
2451 },
Paul Duffina04c1072020-03-02 10:16:35 +00002452}
2453`),
2454 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002455myinclude/Test.h -> common_os/include/myinclude/Test.h
2456myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2457myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002458`),
2459 )
2460}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002461
2462func TestSystemSharedLibPropagation(t *testing.T) {
2463 result := testSdkWithCc(t, `
2464 sdk {
2465 name: "mysdk",
Colin Cross6b8f4252021-07-22 11:39:44 -07002466 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002467 }
2468
2469 cc_library {
2470 name: "sslnil",
2471 host_supported: true,
2472 }
2473
2474 cc_library {
2475 name: "sslempty",
2476 system_shared_libs: [],
2477 }
2478
2479 cc_library {
2480 name: "sslnonempty",
2481 system_shared_libs: ["sslnil"],
2482 }
2483 `)
2484
Paul Duffin36474d32021-03-12 12:19:43 +00002485 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002486 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002487// This is auto-generated. DO NOT EDIT.
2488
2489cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002490 name: "sslnil",
2491 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002492 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002493 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002494 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002495 arch: {
2496 arm64: {
2497 srcs: ["arm64/lib/sslnil.so"],
2498 },
2499 arm: {
2500 srcs: ["arm/lib/sslnil.so"],
2501 },
2502 },
2503}
2504
2505cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002506 name: "sslempty",
2507 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002508 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002509 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002510 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002511 system_shared_libs: [],
2512 arch: {
2513 arm64: {
2514 srcs: ["arm64/lib/sslempty.so"],
2515 },
2516 arm: {
2517 srcs: ["arm/lib/sslempty.so"],
2518 },
2519 },
2520}
2521
2522cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002523 name: "sslnonempty",
2524 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002525 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002526 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002527 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002528 system_shared_libs: ["sslnil"],
2529 arch: {
2530 arm64: {
2531 srcs: ["arm64/lib/sslnonempty.so"],
2532 },
2533 arm: {
2534 srcs: ["arm/lib/sslnonempty.so"],
2535 },
2536 },
2537}
Colin Cross6b8f4252021-07-22 11:39:44 -07002538`))
Martin Stjernholm10566a02020-03-24 01:19:52 +00002539
2540 result = testSdkWithCc(t, `
2541 sdk {
2542 name: "mysdk",
2543 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002544 native_shared_libs: ["sslvariants"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002545 }
2546
2547 cc_library {
2548 name: "sslvariants",
2549 host_supported: true,
2550 target: {
2551 android: {
2552 system_shared_libs: [],
2553 },
2554 },
2555 }
2556 `)
2557
Paul Duffin36474d32021-03-12 12:19:43 +00002558 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002559 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002560// This is auto-generated. DO NOT EDIT.
2561
2562cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002563 name: "sslvariants",
2564 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002565 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002566 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002567 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002568 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002569 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002570 host: {
2571 enabled: false,
2572 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002573 android: {
2574 system_shared_libs: [],
2575 },
2576 android_arm64: {
2577 srcs: ["android/arm64/lib/sslvariants.so"],
2578 },
2579 android_arm: {
2580 srcs: ["android/arm/lib/sslvariants.so"],
2581 },
2582 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002583 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002584 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2585 },
2586 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002587 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002588 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2589 },
2590 },
2591}
Paul Duffin75b902a2021-02-22 12:13:13 +00002592`),
2593 checkVersionedAndroidBpContents(`
2594// This is auto-generated. DO NOT EDIT.
Martin Stjernholm10566a02020-03-24 01:19:52 +00002595
2596cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002597 name: "mysdk_sslvariants@current",
2598 sdk_member_name: "sslvariants",
Paul Duffind99d9972020-09-29 16:00:55 +01002599 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002600 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002601 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002602 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002603 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002604 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002605 host: {
2606 enabled: false,
2607 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002608 android: {
2609 system_shared_libs: [],
2610 },
2611 android_arm64: {
2612 srcs: ["android/arm64/lib/sslvariants.so"],
2613 },
2614 android_arm: {
2615 srcs: ["android/arm/lib/sslvariants.so"],
2616 },
2617 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002618 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002619 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2620 },
2621 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002622 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002623 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2624 },
2625 },
2626}
2627
2628sdk_snapshot {
2629 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002630 visibility: ["//visibility:public"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002631 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002632 native_shared_libs: ["mysdk_sslvariants@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002633 target: {
2634 host: {
2635 enabled: false,
2636 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002637 linux_glibc_x86_64: {
2638 enabled: true,
2639 },
2640 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002641 enabled: true,
2642 },
2643 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002644}
2645`))
2646}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002647
2648func TestStubsLibrary(t *testing.T) {
2649 result := testSdkWithCc(t, `
2650 sdk {
2651 name: "mysdk",
2652 native_shared_libs: ["stubslib"],
2653 }
2654
2655 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002656 name: "internaldep",
2657 }
2658
2659 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002660 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002661 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002662 stubs: {
2663 symbol_file: "some/where/stubslib.map.txt",
2664 versions: ["1", "2", "3"],
2665 },
2666 }
2667 `)
2668
Paul Duffin36474d32021-03-12 12:19:43 +00002669 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002670 checkUnversionedAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002671// This is auto-generated. DO NOT EDIT.
2672
2673cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002674 name: "stubslib",
2675 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002676 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002677 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002678 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002679 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002680 versions: [
2681 "1",
2682 "2",
2683 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002684 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002685 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002686 },
2687 arch: {
2688 arm64: {
2689 srcs: ["arm64/lib/stubslib.so"],
2690 },
2691 arm: {
2692 srcs: ["arm/lib/stubslib.so"],
2693 },
2694 },
2695}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002696`))
2697}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002698
2699func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002700 result := testSdkWithCc(t, `
2701 sdk {
2702 name: "mysdk",
2703 host_supported: true,
2704 native_shared_libs: ["stubslib"],
2705 }
2706
2707 cc_library {
2708 name: "internaldep",
2709 host_supported: true,
2710 }
2711
2712 cc_library {
2713 name: "stubslib",
2714 host_supported: true,
2715 shared_libs: ["internaldep"],
2716 stubs: {
2717 symbol_file: "some/where/stubslib.map.txt",
2718 versions: ["1", "2", "3"],
2719 },
2720 }
2721 `)
2722
Paul Duffin36474d32021-03-12 12:19:43 +00002723 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002724 checkUnversionedAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002725// This is auto-generated. DO NOT EDIT.
2726
2727cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002728 name: "stubslib",
2729 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002730 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002731 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002732 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002733 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002734 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002735 versions: [
2736 "1",
2737 "2",
2738 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002739 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002740 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002741 },
2742 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002743 host: {
2744 enabled: false,
2745 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002746 android_arm64: {
2747 srcs: ["android/arm64/lib/stubslib.so"],
2748 },
2749 android_arm: {
2750 srcs: ["android/arm/lib/stubslib.so"],
2751 },
2752 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002753 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002754 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2755 },
2756 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002757 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002758 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2759 },
2760 },
2761}
Paul Duffin75b902a2021-02-22 12:13:13 +00002762`),
2763 checkVersionedAndroidBpContents(`
2764// This is auto-generated. DO NOT EDIT.
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002765
2766cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002767 name: "mysdk_stubslib@current",
2768 sdk_member_name: "stubslib",
Paul Duffind99d9972020-09-29 16:00:55 +01002769 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002770 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002771 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002772 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002773 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002774 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002775 versions: [
2776 "1",
2777 "2",
2778 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002779 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002780 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002781 },
2782 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002783 host: {
2784 enabled: false,
2785 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002786 android_arm64: {
2787 srcs: ["android/arm64/lib/stubslib.so"],
2788 },
2789 android_arm: {
2790 srcs: ["android/arm/lib/stubslib.so"],
2791 },
2792 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002793 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002794 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2795 },
2796 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002797 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002798 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2799 },
2800 },
2801}
2802
2803sdk_snapshot {
2804 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002805 visibility: ["//visibility:public"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002806 host_supported: true,
2807 native_shared_libs: ["mysdk_stubslib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002808 target: {
2809 host: {
2810 enabled: false,
2811 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002812 linux_glibc_x86_64: {
2813 enabled: true,
2814 },
2815 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002816 enabled: true,
2817 },
2818 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002819}
2820`))
2821}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002822
2823func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002824 result := testSdkWithCc(t, `
2825 sdk {
2826 name: "mysdk",
2827 host_supported: true,
2828 native_shared_libs: ["mylib"],
2829 }
2830
2831 cc_library {
2832 name: "mylib",
2833 host_supported: true,
2834 unique_host_soname: true,
2835 }
2836 `)
2837
Paul Duffin36474d32021-03-12 12:19:43 +00002838 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002839 checkUnversionedAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002840// This is auto-generated. DO NOT EDIT.
2841
2842cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002843 name: "mylib",
2844 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002845 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002846 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002847 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002848 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002849 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002850 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002851 host: {
2852 enabled: false,
2853 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002854 android_arm64: {
2855 srcs: ["android/arm64/lib/mylib.so"],
2856 },
2857 android_arm: {
2858 srcs: ["android/arm/lib/mylib.so"],
2859 },
2860 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002861 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002862 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2863 },
2864 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002865 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002866 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2867 },
2868 },
2869}
Paul Duffin75b902a2021-02-22 12:13:13 +00002870`),
2871 checkVersionedAndroidBpContents(`
2872// This is auto-generated. DO NOT EDIT.
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002873
2874cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002875 name: "mysdk_mylib@current",
2876 sdk_member_name: "mylib",
Paul Duffind99d9972020-09-29 16:00:55 +01002877 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002878 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002879 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002880 installable: false,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002881 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002882 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002883 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002884 host: {
2885 enabled: false,
2886 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002887 android_arm64: {
2888 srcs: ["android/arm64/lib/mylib.so"],
2889 },
2890 android_arm: {
2891 srcs: ["android/arm/lib/mylib.so"],
2892 },
2893 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002894 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002895 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2896 },
2897 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002898 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002899 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2900 },
2901 },
2902}
2903
2904sdk_snapshot {
2905 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002906 visibility: ["//visibility:public"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002907 host_supported: true,
2908 native_shared_libs: ["mysdk_mylib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002909 target: {
2910 host: {
2911 enabled: false,
2912 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002913 linux_glibc_x86_64: {
2914 enabled: true,
2915 },
2916 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002917 enabled: true,
2918 },
2919 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002920}
2921`),
2922 checkAllCopyRules(`
2923.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2924.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2925.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2926.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2927`),
2928 )
2929}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002930
2931func TestNoSanitizerMembers(t *testing.T) {
2932 result := testSdkWithCc(t, `
2933 sdk {
2934 name: "mysdk",
2935 native_shared_libs: ["mynativelib"],
2936 }
2937
2938 cc_library_shared {
2939 name: "mynativelib",
2940 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002941 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002942 arch: {
2943 arm64: {
2944 export_system_include_dirs: ["arm64/include"],
2945 sanitize: {
2946 hwaddress: true,
2947 },
2948 },
2949 },
2950 }
2951 `)
2952
Paul Duffin36474d32021-03-12 12:19:43 +00002953 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002954 checkUnversionedAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002955// This is auto-generated. DO NOT EDIT.
2956
2957cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002958 name: "mynativelib",
2959 prefer: false,
2960 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002961 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002962 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002963 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002964 arch: {
2965 arm64: {
2966 export_system_include_dirs: ["arm64/include/arm64/include"],
2967 },
2968 arm: {
2969 srcs: ["arm/lib/mynativelib.so"],
2970 },
2971 },
2972}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002973`),
2974 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002975myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002976arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Paul Duffin1822a0a2021-03-21 12:56:33 +00002977.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
2978`),
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002979 )
2980}