blob: cd63dac8c6adbfaafbec0ca8c2fad02c9d448c93 [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 Duffina80fdec2019-12-03 15:25:00 +0000196func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000197 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000198 sdk {
199 name: "mysdk",
200 native_shared_libs: ["sdkmember"],
201 }
202
Paul Duffina0843f62019-12-13 19:50:38 +0000203 cc_library_shared {
204 name: "sdkmember",
Colin Crossf9aabd72020-02-15 11:29:50 -0800205 system_shared_libs: [],
Martin Stjernholmcc776012020-07-07 03:22:21 +0100206 stl: "none",
207 apex_available: ["mysdkapex"],
Paul Duffina0843f62019-12-13 19:50:38 +0000208 }
209
Paul Duffina80fdec2019-12-03 15:25:00 +0000210 sdk_snapshot {
211 name: "mysdk@1",
Paul Duffin525a5902021-05-06 16:33:52 +0100212 native_shared_libs: ["sdkmember_mysdk@1"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000213 }
214
215 sdk_snapshot {
216 name: "mysdk@2",
Paul Duffin525a5902021-05-06 16:33:52 +0100217 native_shared_libs: ["sdkmember_mysdk@2"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000218 }
219
220 cc_prebuilt_library_shared {
221 name: "sdkmember",
222 srcs: ["libfoo.so"],
223 prefer: false,
224 system_shared_libs: [],
225 stl: "none",
226 }
227
228 cc_prebuilt_library_shared {
Paul Duffin525a5902021-05-06 16:33:52 +0100229 name: "sdkmember_mysdk@1",
Paul Duffina80fdec2019-12-03 15:25:00 +0000230 sdk_member_name: "sdkmember",
231 srcs: ["libfoo.so"],
232 system_shared_libs: [],
233 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000234 // TODO: remove //apex_available:platform
235 apex_available: [
236 "//apex_available:platform",
237 "myapex",
238 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000239 }
240
241 cc_prebuilt_library_shared {
Paul Duffin525a5902021-05-06 16:33:52 +0100242 name: "sdkmember_mysdk@2",
Paul Duffina80fdec2019-12-03 15:25:00 +0000243 sdk_member_name: "sdkmember",
244 srcs: ["libfoo.so"],
245 system_shared_libs: [],
246 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000247 // TODO: remove //apex_available:platform
248 apex_available: [
249 "//apex_available:platform",
250 "myapex2",
251 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000252 }
253
254 cc_library_shared {
255 name: "mycpplib",
256 srcs: ["Test.cpp"],
257 shared_libs: ["sdkmember"],
258 system_shared_libs: [],
259 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000260 apex_available: [
261 "myapex",
262 "myapex2",
263 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000264 }
265
266 apex {
267 name: "myapex",
268 native_shared_libs: ["mycpplib"],
269 uses_sdks: ["mysdk@1"],
270 key: "myapex.key",
271 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000272 updatable: false,
Paul Duffina80fdec2019-12-03 15:25:00 +0000273 }
274
275 apex {
276 name: "myapex2",
277 native_shared_libs: ["mycpplib"],
278 uses_sdks: ["mysdk@2"],
279 key: "myapex.key",
280 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000281 updatable: false,
Paul Duffina80fdec2019-12-03 15:25:00 +0000282 }
Martin Stjernholmcc776012020-07-07 03:22:21 +0100283
284 apex {
285 name: "mysdkapex",
286 native_shared_libs: ["sdkmember"],
287 key: "myapex.key",
288 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000289 updatable: false,
Martin Stjernholmcc776012020-07-07 03:22:21 +0100290 }
Paul Duffina80fdec2019-12-03 15:25:00 +0000291 `)
292
Paul Duffin525a5902021-05-06 16:33:52 +0100293 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk@1", "android_arm64_armv8-a_shared_apex10000_mysdk_1").Rule("toc").Output
294 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk@2", "android_arm64_armv8-a_shared_apex10000_mysdk_2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000295
Colin Crossaede88c2020-08-11 12:17:01 -0700296 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_1")
297 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000298
299 // Depending on the uses_sdks value, different libs are linked
300 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
301 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
302}
303
Paul Duffina0843f62019-12-13 19:50:38 +0000304// Make sure the sdk can use host specific cc libraries static/shared and both.
305func TestHostSdkWithCc(t *testing.T) {
306 testSdkWithCc(t, `
307 sdk {
308 name: "mysdk",
309 device_supported: false,
310 host_supported: true,
311 native_shared_libs: ["sdkshared"],
312 native_static_libs: ["sdkstatic"],
313 }
314
315 cc_library_host_shared {
316 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000317 stl: "none",
318 }
319
320 cc_library_host_static {
321 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000322 stl: "none",
323 }
324 `)
325}
326
327// Make sure the sdk can use cc libraries static/shared and both.
328func TestSdkWithCc(t *testing.T) {
329 testSdkWithCc(t, `
330 sdk {
331 name: "mysdk",
332 native_shared_libs: ["sdkshared", "sdkboth1"],
333 native_static_libs: ["sdkstatic", "sdkboth2"],
334 }
335
336 cc_library_shared {
337 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000338 stl: "none",
339 }
340
341 cc_library_static {
342 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000343 stl: "none",
344 }
345
346 cc_library {
347 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000348 stl: "none",
349 }
350
351 cc_library {
352 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000353 stl: "none",
354 }
355 `)
356}
357
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000358func TestSnapshotWithObject(t *testing.T) {
359 result := testSdkWithCc(t, `
360 sdk {
361 name: "mysdk",
362 native_objects: ["crtobj"],
363 }
364
365 cc_object {
366 name: "crtobj",
367 stl: "none",
Colin Cross6b8f4252021-07-22 11:39:44 -0700368 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100369 sanitize: {
370 never: true,
371 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000372 }
373 `)
374
Paul Duffin36474d32021-03-12 12:19:43 +0000375 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000376 checkUnversionedAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000377// This is auto-generated. DO NOT EDIT.
378
379cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000380 name: "crtobj",
381 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100382 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000383 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000384 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100385 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700386 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100387 sanitize: {
388 never: true,
389 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000390 arch: {
391 arm64: {
392 srcs: ["arm64/lib/crtobj.o"],
393 },
394 arm: {
395 srcs: ["arm/lib/crtobj.o"],
396 },
397 },
398}
Paul Duffin75b902a2021-02-22 12:13:13 +0000399`),
400 // Make sure that the generated sdk_snapshot uses the native_objects property.
401 checkVersionedAndroidBpContents(`
402// This is auto-generated. DO NOT EDIT.
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000403
404cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000405 name: "mysdk_crtobj@current",
406 sdk_member_name: "crtobj",
Paul Duffind99d9972020-09-29 16:00:55 +0100407 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000408 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000409 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100410 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700411 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100412 sanitize: {
413 never: true,
414 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000415 arch: {
416 arm64: {
417 srcs: ["arm64/lib/crtobj.o"],
418 },
419 arm: {
420 srcs: ["arm/lib/crtobj.o"],
421 },
422 },
423}
424
425sdk_snapshot {
426 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100427 visibility: ["//visibility:public"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000428 native_objects: ["mysdk_crtobj@current"],
429}
430`),
431 checkAllCopyRules(`
432.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
433.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
434`),
435 )
436}
437
Paul Duffinc62a5102019-12-11 18:34:15 +0000438func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
439 result := testSdkWithCc(t, `
440 sdk {
441 name: "mysdk",
442 native_shared_libs: ["mynativelib1", "mynativelib2"],
443 }
444
445 cc_library_shared {
446 name: "mynativelib1",
447 srcs: [
448 "Test.cpp",
449 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000450 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000451 stl: "none",
452 }
453
454 cc_library_shared {
455 name: "mynativelib2",
456 srcs: [
457 "Test.cpp",
458 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000459 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000460 stl: "none",
461 }
462 `)
463
Paul Duffin36474d32021-03-12 12:19:43 +0000464 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000465 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000466myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800467.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
468.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
469.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
470.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000471`),
472 )
473}
474
Paul Duffina43f9272021-02-17 10:55:25 +0000475func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
476 result := testSdkWithCc(t, `
477 sdk {
478 name: "mysdk",
479 native_shared_libs: ["mynativelib"],
480 }
481
482 cc_library_shared {
483 name: "mynativelib",
484 srcs: [
485 "Test.cpp",
486 ],
487 generated_headers: [
488 "generated_foo",
489 ],
490 export_generated_headers: [
491 "generated_foo",
492 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000493 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000494 stl: "none",
495 }
496
497 genrule {
498 name: "generated_foo",
499 cmd: "generate-foo",
500 out: [
501 "generated_foo/protos/foo/bar.h",
502 ],
503 export_include_dirs: [
504 ".",
505 "protos",
506 ],
507 }
508 `)
509
Paul Duffindb462dd2021-03-21 22:01:55 +0000510 // TODO(b/183322862): Remove this and fix the issue.
511 errorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist`)
512
Paul Duffin36474d32021-03-12 12:19:43 +0000513 CheckSnapshot(t, result, "mysdk", "",
Paul Duffina43f9272021-02-17 10:55:25 +0000514 checkUnversionedAndroidBpContents(`
515// This is auto-generated. DO NOT EDIT.
516
517cc_prebuilt_library_shared {
518 name: "mynativelib",
519 prefer: false,
520 visibility: ["//visibility:public"],
521 apex_available: ["//apex_available:platform"],
522 stl: "none",
523 compile_multilib: "both",
Paul Duffin7a7d0672021-02-17 12:17:40 +0000524 export_include_dirs: [
525 "include/myinclude",
526 "include_gen/generated_foo/gen",
527 "include_gen/generated_foo/gen/protos",
528 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000529 arch: {
530 arm64: {
531 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000532 },
533 arm: {
534 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000535 },
536 },
537}
538`),
539 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000540myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000541.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 +0000542.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000543.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000544`),
Paul Duffindb462dd2021-03-21 22:01:55 +0000545 snapshotTestErrorHandler(checkSnapshotWithoutSource, errorHandler),
546 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, errorHandler),
547 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, errorHandler),
Paul Duffina43f9272021-02-17 10:55:25 +0000548 )
549}
550
Martin Stjernholmb0249572020-09-15 02:32:35 +0100551// Verify that when the shared library has some common and some arch specific
552// properties that the generated snapshot is optimized properly. Substruct
553// handling is tested with the sanitize clauses (but note there's a lot of
554// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000555func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
556 result := testSdkWithCc(t, `
557 sdk {
558 name: "mysdk",
559 native_shared_libs: ["mynativelib"],
560 }
561
562 cc_library_shared {
563 name: "mynativelib",
564 srcs: [
565 "Test.cpp",
566 "aidl/foo/bar/Test.aidl",
567 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000568 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100569 sanitize: {
570 fuzzer: false,
571 integer_overflow: true,
572 diag: { undefined: false },
573 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000574 arch: {
575 arm64: {
576 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100577 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100578 integer_overflow: false,
579 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000580 },
581 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000582 stl: "none",
583 }
584 `)
585
Paul Duffin36474d32021-03-12 12:19:43 +0000586 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000587 checkUnversionedAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000588// This is auto-generated. DO NOT EDIT.
589
590cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000591 name: "mynativelib",
592 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100593 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000594 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000595 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100596 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000597 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100598 sanitize: {
599 fuzzer: false,
600 diag: {
601 undefined: false,
602 },
603 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000604 arch: {
605 arm64: {
606 srcs: ["arm64/lib/mynativelib.so"],
607 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100608 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100609 integer_overflow: false,
610 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000611 },
612 arm: {
613 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100614 sanitize: {
615 integer_overflow: true,
616 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000617 },
618 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000619}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000620`),
621 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000622myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000623.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000624arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800625.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000626 )
627}
628
Paul Duffin25ce04b2020-01-16 11:47:25 +0000629func TestSnapshotWithCcBinary(t *testing.T) {
630 result := testSdkWithCc(t, `
631 module_exports {
632 name: "mymodule_exports",
633 native_binaries: ["mynativebinary"],
634 }
635
636 cc_binary {
637 name: "mynativebinary",
638 srcs: [
639 "Test.cpp",
640 ],
641 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000642 }
643 `)
644
Paul Duffin36474d32021-03-12 12:19:43 +0000645 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000646 checkUnversionedAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000647// This is auto-generated. DO NOT EDIT.
648
649cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000650 name: "mynativebinary",
651 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100652 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000653 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000654 compile_multilib: "both",
655 arch: {
656 arm64: {
657 srcs: ["arm64/bin/mynativebinary"],
658 },
659 arm: {
660 srcs: ["arm/bin/mynativebinary"],
661 },
662 },
663}
Paul Duffin75b902a2021-02-22 12:13:13 +0000664`),
665 // Make sure that the generated sdk_snapshot uses the native_binaries property.
666 checkVersionedAndroidBpContents(`
667// This is auto-generated. DO NOT EDIT.
Paul Duffin25ce04b2020-01-16 11:47:25 +0000668
669cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000670 name: "mymodule_exports_mynativebinary@current",
671 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100672 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000673 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +0000674 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000675 compile_multilib: "both",
676 arch: {
677 arm64: {
678 srcs: ["arm64/bin/mynativebinary"],
679 },
680 arm: {
681 srcs: ["arm/bin/mynativebinary"],
682 },
683 },
684}
685
686module_exports_snapshot {
687 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100688 visibility: ["//visibility:public"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000689 native_binaries: ["mymodule_exports_mynativebinary@current"],
690}
691`),
692 checkAllCopyRules(`
693.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
694.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
695`),
696 )
697}
698
Paul Duffina04c1072020-03-02 10:16:35 +0000699func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000700 result := testSdkWithCc(t, `
701 module_exports {
702 name: "myexports",
703 device_supported: false,
704 host_supported: true,
705 native_binaries: ["mynativebinary"],
706 target: {
707 windows: {
708 enabled: true,
709 },
710 },
711 }
712
713 cc_binary {
714 name: "mynativebinary",
715 device_supported: false,
716 host_supported: true,
717 srcs: [
718 "Test.cpp",
719 ],
720 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000721 stl: "none",
722 target: {
723 windows: {
724 enabled: true,
725 },
726 },
727 }
728 `)
729
Paul Duffin36474d32021-03-12 12:19:43 +0000730 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000731 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000732// This is auto-generated. DO NOT EDIT.
733
734cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000735 name: "mynativebinary",
736 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100737 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000738 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000739 device_supported: false,
740 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100741 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000742 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100743 host: {
744 enabled: false,
745 },
Paul Duffina04c1072020-03-02 10:16:35 +0000746 linux_glibc: {
747 compile_multilib: "both",
748 },
749 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900750 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000751 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
752 },
753 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900754 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000755 srcs: ["linux_glibc/x86/bin/mynativebinary"],
756 },
757 windows: {
758 compile_multilib: "64",
759 },
760 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900761 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000762 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
763 },
764 },
765}
Paul Duffin75b902a2021-02-22 12:13:13 +0000766`),
767 checkVersionedAndroidBpContents(`
768// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +0000769
770cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000771 name: "myexports_mynativebinary@current",
772 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100773 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000774 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000775 device_supported: false,
776 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000777 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100778 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000779 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100780 host: {
781 enabled: false,
782 },
Paul Duffina04c1072020-03-02 10:16:35 +0000783 linux_glibc: {
784 compile_multilib: "both",
785 },
786 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900787 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000788 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
789 },
790 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900791 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000792 srcs: ["linux_glibc/x86/bin/mynativebinary"],
793 },
794 windows: {
795 compile_multilib: "64",
796 },
797 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900798 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000799 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
800 },
801 },
802}
803
804module_exports_snapshot {
805 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100806 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +0000807 device_supported: false,
808 host_supported: true,
809 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000810 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900811 windows: {
812 compile_multilib: "64",
813 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100814 host: {
815 enabled: false,
816 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900817 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100818 enabled: true,
819 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900820 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100821 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +0900822 },
823 windows_x86_64: {
824 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +0000825 },
826 },
Paul Duffina04c1072020-03-02 10:16:35 +0000827}
828`),
829 checkAllCopyRules(`
830.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
831.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
832.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
833`),
834 )
835}
836
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100837func TestSnapshotWithSingleHostOsType(t *testing.T) {
Paul Duffin89648f92021-03-20 00:36:55 +0000838 result := android.GroupFixturePreparers(
839 prepareForSdkTest,
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000840 ccTestFs.AddToFixture(),
841 cc.PrepareForTestOnLinuxBionic,
842 android.FixtureModifyConfig(func(config android.Config) {
843 config.Targets[android.LinuxBionic] = []android.Target{
844 {android.LinuxBionic, android.Arch{ArchType: android.X86_64}, android.NativeBridgeDisabled, "", "", false},
845 }
846 }),
847 ).RunTestWithBp(t, `
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100848 cc_defaults {
849 name: "mydefaults",
850 device_supported: false,
851 host_supported: true,
852 compile_multilib: "64",
853 target: {
854 host: {
855 enabled: false,
856 },
857 linux_bionic: {
858 enabled: true,
859 },
860 },
861 }
862
863 module_exports {
864 name: "myexports",
865 defaults: ["mydefaults"],
866 native_shared_libs: ["mynativelib"],
867 native_binaries: ["mynativebinary"],
868 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
869 }
870
871 cc_library {
872 name: "mynativelib",
873 defaults: ["mydefaults"],
874 srcs: [
875 "Test.cpp",
876 ],
877 stl: "none",
878 }
879
880 cc_binary {
881 name: "mynativebinary",
882 defaults: ["mydefaults"],
883 srcs: [
884 "Test.cpp",
885 ],
886 stl: "none",
887 }
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000888 `)
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100889
Paul Duffin36474d32021-03-12 12:19:43 +0000890 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000891 checkUnversionedAndroidBpContents(`
892// This is auto-generated. DO NOT EDIT.
893
894cc_prebuilt_binary {
895 name: "mynativebinary",
896 prefer: false,
897 visibility: ["//visibility:public"],
898 apex_available: ["//apex_available:platform"],
899 device_supported: false,
900 host_supported: true,
901 stl: "none",
902 compile_multilib: "64",
903 target: {
904 host: {
905 enabled: false,
906 },
907 linux_bionic_x86_64: {
908 enabled: true,
909 srcs: ["x86_64/bin/mynativebinary"],
910 },
911 },
912}
913
914cc_prebuilt_library_shared {
915 name: "mynativelib",
916 prefer: false,
917 visibility: ["//visibility:public"],
918 apex_available: ["//apex_available:platform"],
919 device_supported: false,
920 host_supported: true,
921 stl: "none",
922 compile_multilib: "64",
923 target: {
924 host: {
925 enabled: false,
926 },
927 linux_bionic_x86_64: {
928 enabled: true,
929 srcs: ["x86_64/lib/mynativelib.so"],
930 },
931 },
932}
933`),
934 checkVersionedAndroidBpContents(`
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100935// This is auto-generated. DO NOT EDIT.
936
937cc_prebuilt_binary {
938 name: "myexports_mynativebinary@current",
939 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100940 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000941 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100942 device_supported: false,
943 host_supported: true,
944 installable: false,
945 stl: "none",
946 compile_multilib: "64",
947 target: {
948 host: {
949 enabled: false,
950 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100951 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900952 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100953 srcs: ["x86_64/bin/mynativebinary"],
954 },
955 },
956}
957
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100958cc_prebuilt_library_shared {
959 name: "myexports_mynativelib@current",
960 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +0100961 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000962 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100963 device_supported: false,
964 host_supported: true,
965 installable: false,
966 stl: "none",
967 compile_multilib: "64",
968 target: {
969 host: {
970 enabled: false,
971 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100972 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900973 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100974 srcs: ["x86_64/lib/mynativelib.so"],
975 },
976 },
977}
978
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100979module_exports_snapshot {
980 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100981 visibility: ["//visibility:public"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100982 device_supported: false,
983 host_supported: true,
Paul Duffin7b0259f2021-04-24 11:34:46 +0100984 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100985 native_binaries: ["myexports_mynativebinary@current"],
986 native_shared_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100987 target: {
988 host: {
989 enabled: false,
990 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900991 linux_bionic_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100992 enabled: true,
993 },
994 },
995}
996`),
997 checkAllCopyRules(`
998.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
999.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
1000`),
1001 )
1002}
1003
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001004// Test that we support the necessary flags for the linker binary, which is
1005// special in several ways.
1006func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001007 result := testSdkWithCc(t, `
1008 module_exports {
1009 name: "mymodule_exports",
1010 host_supported: true,
1011 device_supported: false,
1012 native_binaries: ["linker"],
1013 }
1014
1015 cc_binary {
1016 name: "linker",
1017 host_supported: true,
1018 static_executable: true,
1019 nocrt: true,
1020 stl: "none",
1021 srcs: [
1022 "Test.cpp",
1023 ],
1024 compile_multilib: "both",
1025 }
1026 `)
1027
Paul Duffin36474d32021-03-12 12:19:43 +00001028 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001029 checkUnversionedAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001030// This is auto-generated. DO NOT EDIT.
1031
1032cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001033 name: "linker",
1034 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001035 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001036 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001037 device_supported: false,
1038 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001039 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001040 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001041 static_executable: true,
1042 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001043 target: {
1044 host: {
1045 enabled: false,
1046 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001047 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001048 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001049 srcs: ["x86_64/bin/linker"],
1050 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001051 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001052 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001053 srcs: ["x86/bin/linker"],
1054 },
1055 },
1056}
Paul Duffin75b902a2021-02-22 12:13:13 +00001057`),
1058 checkVersionedAndroidBpContents(`
1059// This is auto-generated. DO NOT EDIT.
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001060
1061cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001062 name: "mymodule_exports_linker@current",
1063 sdk_member_name: "linker",
Paul Duffind99d9972020-09-29 16:00:55 +01001064 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001065 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001066 device_supported: false,
1067 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001068 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001069 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001070 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001071 static_executable: true,
1072 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001073 target: {
1074 host: {
1075 enabled: false,
1076 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001077 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001078 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001079 srcs: ["x86_64/bin/linker"],
1080 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001081 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001082 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001083 srcs: ["x86/bin/linker"],
1084 },
1085 },
1086}
1087
1088module_exports_snapshot {
1089 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001090 visibility: ["//visibility:public"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001091 device_supported: false,
1092 host_supported: true,
1093 native_binaries: ["mymodule_exports_linker@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001094 target: {
1095 host: {
1096 enabled: false,
1097 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001098 linux_glibc_x86_64: {
1099 enabled: true,
1100 },
1101 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001102 enabled: true,
1103 },
1104 },
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001105}
1106`),
1107 checkAllCopyRules(`
1108.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
1109.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
1110`),
1111 )
1112}
1113
Paul Duffin9ab556f2019-12-11 18:42:17 +00001114func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001115 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001116 sdk {
1117 name: "mysdk",
1118 native_shared_libs: ["mynativelib"],
1119 }
1120
1121 cc_library_shared {
1122 name: "mynativelib",
1123 srcs: [
1124 "Test.cpp",
1125 "aidl/foo/bar/Test.aidl",
1126 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001127 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +00001128 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001129 aidl: {
1130 export_aidl_headers: true,
1131 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001132 stl: "none",
1133 }
1134 `)
1135
Paul Duffin36474d32021-03-12 12:19:43 +00001136 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001137 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001138// This is auto-generated. DO NOT EDIT.
1139
1140cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +00001141 name: "mynativelib",
1142 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001143 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001144 apex_available: [
1145 "apex1",
1146 "apex2",
1147 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001148 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001149 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001150 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001151 arch: {
1152 arm64: {
1153 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001154 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001155 },
1156 arm: {
1157 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001158 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001159 },
1160 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001161}
Paul Duffina80fdec2019-12-03 15:25:00 +00001162`),
1163 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001164myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001165.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001166.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
1167.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
1168.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 -08001169.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001170.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
1171.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
1172.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 +00001173`),
1174 )
1175}
1176
Paul Duffin13f02712020-03-06 12:30:43 +00001177func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
1178 result := testSdkWithCc(t, `
1179 sdk {
1180 name: "mysdk",
1181 native_shared_libs: [
1182 "mynativelib",
1183 "myothernativelib",
1184 "mysystemnativelib",
1185 ],
1186 }
1187
1188 cc_library {
1189 name: "mysystemnativelib",
1190 srcs: [
1191 "Test.cpp",
1192 ],
Paul Duffin13f02712020-03-06 12:30:43 +00001193 stl: "none",
1194 }
1195
1196 cc_library_shared {
1197 name: "myothernativelib",
1198 srcs: [
1199 "Test.cpp",
1200 ],
1201 system_shared_libs: [
1202 // A reference to a library that is not an sdk member. Uses libm as that
1203 // is in the default set of modules available to this test and so is available
1204 // both here and also when the generated Android.bp file is tested in
1205 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
1206 // handles references to modules that are not sdk members.
1207 "libm",
1208 ],
1209 stl: "none",
1210 }
1211
1212 cc_library {
1213 name: "mynativelib",
1214 srcs: [
1215 "Test.cpp",
1216 ],
1217 shared_libs: [
1218 // A reference to another sdk member.
1219 "myothernativelib",
1220 ],
1221 target: {
1222 android: {
1223 shared: {
1224 shared_libs: [
1225 // A reference to a library that is not an sdk member. The libc library
1226 // is used here to check that the shared_libs property is handled correctly
1227 // in a similar way to how libm is used to check system_shared_libs above.
1228 "libc",
1229 ],
1230 },
1231 },
1232 },
Paul Duffin13f02712020-03-06 12:30:43 +00001233 stl: "none",
1234 }
1235 `)
1236
Paul Duffin36474d32021-03-12 12:19:43 +00001237 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001238 checkUnversionedAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +00001239// This is auto-generated. DO NOT EDIT.
1240
1241cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001242 name: "mynativelib",
1243 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001244 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001245 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001246 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001247 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001248 shared_libs: [
1249 "myothernativelib",
1250 "libc",
1251 ],
1252 arch: {
1253 arm64: {
1254 srcs: ["arm64/lib/mynativelib.so"],
1255 },
1256 arm: {
1257 srcs: ["arm/lib/mynativelib.so"],
1258 },
1259 },
Paul Duffin13f02712020-03-06 12:30:43 +00001260}
1261
1262cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001263 name: "myothernativelib",
1264 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001265 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001266 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001267 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001268 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001269 system_shared_libs: ["libm"],
1270 arch: {
1271 arm64: {
1272 srcs: ["arm64/lib/myothernativelib.so"],
1273 },
1274 arm: {
1275 srcs: ["arm/lib/myothernativelib.so"],
1276 },
1277 },
Paul Duffin13f02712020-03-06 12:30:43 +00001278}
1279
1280cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001281 name: "mysystemnativelib",
1282 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001283 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001284 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001285 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001286 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001287 arch: {
1288 arm64: {
1289 srcs: ["arm64/lib/mysystemnativelib.so"],
1290 },
1291 arm: {
1292 srcs: ["arm/lib/mysystemnativelib.so"],
1293 },
1294 },
Paul Duffin13f02712020-03-06 12:30:43 +00001295}
Paul Duffin13f02712020-03-06 12:30:43 +00001296`),
1297 checkAllCopyRules(`
1298.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1299.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1300.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1301.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1302.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1303.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1304`),
1305 )
1306}
1307
Paul Duffin9ab556f2019-12-11 18:42:17 +00001308func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001309 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001310 sdk {
1311 name: "mysdk",
1312 device_supported: false,
1313 host_supported: true,
1314 native_shared_libs: ["mynativelib"],
1315 }
1316
1317 cc_library_shared {
1318 name: "mynativelib",
1319 device_supported: false,
1320 host_supported: true,
1321 srcs: [
1322 "Test.cpp",
1323 "aidl/foo/bar/Test.aidl",
1324 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001325 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001326 aidl: {
1327 export_aidl_headers: true,
1328 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001329 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001330 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001331 }
1332 `)
1333
Paul Duffin36474d32021-03-12 12:19:43 +00001334 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001335 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001336// This is auto-generated. DO NOT EDIT.
1337
1338cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001339 name: "mynativelib",
1340 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001341 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001342 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001343 device_supported: false,
1344 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001345 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001346 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001347 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001348 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001349 target: {
1350 host: {
1351 enabled: false,
1352 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001353 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001354 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001355 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001356 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001357 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001358 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001359 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001360 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001361 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001362 },
1363 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001364}
Paul Duffin75b902a2021-02-22 12:13:13 +00001365`),
1366 checkVersionedAndroidBpContents(`
1367// This is auto-generated. DO NOT EDIT.
Paul Duffina80fdec2019-12-03 15:25:00 +00001368
1369cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001370 name: "mysdk_mynativelib@current",
1371 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001372 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001373 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001374 device_supported: false,
1375 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001376 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001377 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001378 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001379 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001380 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001381 target: {
1382 host: {
1383 enabled: false,
1384 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001385 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001386 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001387 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001388 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001389 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001390 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001391 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001392 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001393 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001394 },
1395 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001396}
1397
1398sdk_snapshot {
1399 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001400 visibility: ["//visibility:public"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001401 device_supported: false,
1402 host_supported: true,
1403 native_shared_libs: ["mysdk_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001404 target: {
1405 host: {
1406 enabled: false,
1407 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001408 linux_glibc_x86_64: {
1409 enabled: true,
1410 },
1411 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001412 enabled: true,
1413 },
1414 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001415}
1416`),
1417 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001418myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001419.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001420.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
1421.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
1422.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 +00001423.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001424.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
1425.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
1426.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 +00001427`),
1428 )
1429}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001430
Paul Duffina04c1072020-03-02 10:16:35 +00001431func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001432 result := testSdkWithCc(t, `
1433 sdk {
1434 name: "mysdk",
1435 device_supported: false,
1436 host_supported: true,
1437 native_shared_libs: ["mynativelib"],
1438 target: {
1439 windows: {
1440 enabled: true,
1441 },
1442 },
1443 }
1444
1445 cc_library_shared {
1446 name: "mynativelib",
1447 device_supported: false,
1448 host_supported: true,
1449 srcs: [
1450 "Test.cpp",
1451 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001452 stl: "none",
1453 target: {
1454 windows: {
1455 enabled: true,
1456 },
1457 },
1458 }
1459 `)
1460
Paul Duffin36474d32021-03-12 12:19:43 +00001461 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001462 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001463// This is auto-generated. DO NOT EDIT.
1464
1465cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001466 name: "mynativelib",
1467 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001468 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001469 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001470 device_supported: false,
1471 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001472 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001473 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001474 host: {
1475 enabled: false,
1476 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001477 linux_glibc: {
1478 compile_multilib: "both",
1479 },
Paul Duffina04c1072020-03-02 10:16:35 +00001480 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001481 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001482 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1483 },
1484 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001485 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001486 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1487 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001488 windows: {
1489 compile_multilib: "64",
1490 },
Paul Duffina04c1072020-03-02 10:16:35 +00001491 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001492 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001493 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1494 },
1495 },
Paul Duffina04c1072020-03-02 10:16:35 +00001496}
Paul Duffin75b902a2021-02-22 12:13:13 +00001497`),
1498 checkVersionedAndroidBpContents(`
1499// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00001500
1501cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001502 name: "mysdk_mynativelib@current",
1503 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001504 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001505 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001506 device_supported: false,
1507 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001508 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001509 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001510 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001511 host: {
1512 enabled: false,
1513 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001514 linux_glibc: {
1515 compile_multilib: "both",
1516 },
Paul Duffina04c1072020-03-02 10:16:35 +00001517 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001518 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001519 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1520 },
1521 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001522 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001523 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1524 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001525 windows: {
1526 compile_multilib: "64",
1527 },
Paul Duffina04c1072020-03-02 10:16:35 +00001528 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001529 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001530 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1531 },
1532 },
Paul Duffina04c1072020-03-02 10:16:35 +00001533}
1534
1535sdk_snapshot {
1536 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001537 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00001538 device_supported: false,
1539 host_supported: true,
1540 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001541 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001542 windows: {
1543 compile_multilib: "64",
1544 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001545 host: {
1546 enabled: false,
1547 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001548 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001549 enabled: true,
1550 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001551 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001552 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +09001553 },
1554 windows_x86_64: {
1555 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +00001556 },
1557 },
Paul Duffina04c1072020-03-02 10:16:35 +00001558}
1559`),
1560 checkAllCopyRules(`
1561.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1562.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1563.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1564`),
1565 )
1566}
1567
Paul Duffin9ab556f2019-12-11 18:42:17 +00001568func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1569 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001570 module_exports {
1571 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001572 native_static_libs: ["mynativelib"],
1573 }
1574
1575 cc_library_static {
1576 name: "mynativelib",
1577 srcs: [
1578 "Test.cpp",
1579 "aidl/foo/bar/Test.aidl",
1580 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001581 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001582 aidl: {
1583 export_aidl_headers: true,
1584 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001585 stl: "none",
1586 }
1587 `)
1588
Paul Duffin36474d32021-03-12 12:19:43 +00001589 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001590 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001591// This is auto-generated. DO NOT EDIT.
1592
1593cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001594 name: "mynativelib",
1595 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001596 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001597 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001598 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001599 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001600 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001601 arch: {
1602 arm64: {
1603 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001604 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001605 },
1606 arm: {
1607 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001608 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001609 },
1610 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001611}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001612`),
1613 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001614myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001615.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001616.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
1617.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
1618.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 -08001619.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001620.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
1621.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
1622.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 +00001623`),
1624 )
1625}
1626
1627func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001628 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001629 module_exports {
1630 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001631 device_supported: false,
1632 host_supported: true,
1633 native_static_libs: ["mynativelib"],
1634 }
1635
1636 cc_library_static {
1637 name: "mynativelib",
1638 device_supported: false,
1639 host_supported: true,
1640 srcs: [
1641 "Test.cpp",
1642 "aidl/foo/bar/Test.aidl",
1643 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001644 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001645 aidl: {
1646 export_aidl_headers: true,
1647 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001648 stl: "none",
1649 }
1650 `)
1651
Paul Duffin36474d32021-03-12 12:19:43 +00001652 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001653 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001654// This is auto-generated. DO NOT EDIT.
1655
1656cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001657 name: "mynativelib",
1658 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001659 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001660 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001661 device_supported: false,
1662 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001663 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001664 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001665 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001666 target: {
1667 host: {
1668 enabled: false,
1669 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001670 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001671 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001672 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001673 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001674 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001675 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001676 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001677 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001678 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001679 },
1680 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001681}
Paul Duffin75b902a2021-02-22 12:13:13 +00001682`),
1683 checkVersionedAndroidBpContents(`
1684// This is auto-generated. DO NOT EDIT.
Paul Duffin9ab556f2019-12-11 18:42:17 +00001685
1686cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001687 name: "myexports_mynativelib@current",
1688 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001689 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001690 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001691 device_supported: false,
1692 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001693 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001694 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001695 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001696 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001697 target: {
1698 host: {
1699 enabled: false,
1700 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001701 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001702 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001703 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001704 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001705 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001706 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001707 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001708 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001709 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001710 },
1711 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001712}
1713
Paul Duffine6029182019-12-16 17:43:48 +00001714module_exports_snapshot {
1715 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001716 visibility: ["//visibility:public"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001717 device_supported: false,
1718 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001719 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001720 target: {
1721 host: {
1722 enabled: false,
1723 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001724 linux_glibc_x86_64: {
1725 enabled: true,
1726 },
1727 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001728 enabled: true,
1729 },
1730 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001731}
1732`),
1733 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001734myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001735.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001736.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
1737.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
1738.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 +00001739.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001740.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
1741.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
1742.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 +00001743`),
1744 )
1745}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001746
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001747func TestSnapshotWithCcLibrary(t *testing.T) {
1748 result := testSdkWithCc(t, `
1749 module_exports {
1750 name: "myexports",
1751 native_libs: ["mynativelib"],
1752 }
1753
1754 cc_library {
1755 name: "mynativelib",
1756 srcs: [
1757 "Test.cpp",
1758 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001759 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001760 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001761 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001762 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001763 }
1764 `)
1765
Paul Duffin36474d32021-03-12 12:19:43 +00001766 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001767 checkUnversionedAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001768// This is auto-generated. DO NOT EDIT.
1769
1770cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001771 name: "mynativelib",
1772 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001773 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001774 apex_available: ["//apex_available:platform"],
Paul Duffind1edbd42020-08-13 19:45:31 +01001775 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001776 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001777 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001778 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001779 arch: {
1780 arm64: {
1781 static: {
1782 srcs: ["arm64/lib/mynativelib.a"],
1783 },
1784 shared: {
1785 srcs: ["arm64/lib/mynativelib.so"],
1786 },
1787 },
1788 arm: {
1789 static: {
1790 srcs: ["arm/lib/mynativelib.a"],
1791 },
1792 shared: {
1793 srcs: ["arm/lib/mynativelib.so"],
1794 },
1795 },
1796 },
1797}
Paul Duffin75b902a2021-02-22 12:13:13 +00001798`),
1799 // Make sure that the generated sdk_snapshot uses the native_libs property.
1800 checkVersionedAndroidBpContents(`
1801// This is auto-generated. DO NOT EDIT.
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001802
1803cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001804 name: "myexports_mynativelib@current",
1805 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001806 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001807 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +00001808 installable: false,
Paul Duffind1edbd42020-08-13 19:45:31 +01001809 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001810 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001811 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001812 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001813 arch: {
1814 arm64: {
1815 static: {
1816 srcs: ["arm64/lib/mynativelib.a"],
1817 },
1818 shared: {
1819 srcs: ["arm64/lib/mynativelib.so"],
1820 },
1821 },
1822 arm: {
1823 static: {
1824 srcs: ["arm/lib/mynativelib.a"],
1825 },
1826 shared: {
1827 srcs: ["arm/lib/mynativelib.so"],
1828 },
1829 },
1830 },
1831}
1832
1833module_exports_snapshot {
1834 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001835 visibility: ["//visibility:public"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001836 native_libs: ["myexports_mynativelib@current"],
1837}
1838`),
1839 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001840myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001841.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1842.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1843.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin1822a0a2021-03-21 12:56:33 +00001844.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1845`),
1846 // TODO(b/183315522): Remove this and fix the issue.
1847 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\Qunrecognized property "arch.arm.shared.export_include_dirs"\E`)),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001848 )
1849}
1850
Paul Duffin13ad94f2020-02-19 16:19:27 +00001851func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001852 result := testSdkWithCc(t, `
1853 module_exports {
1854 name: "myexports",
1855 device_supported: false,
1856 host_supported: true,
1857 target: {
1858 host: {
1859 compile_multilib: "64",
1860 },
1861 },
1862 native_static_libs: ["mynativelib"],
1863 }
1864
1865 cc_library_static {
1866 name: "mynativelib",
1867 device_supported: false,
1868 host_supported: true,
1869 srcs: [
1870 "Test.cpp",
1871 "aidl/foo/bar/Test.aidl",
1872 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001873 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001874 aidl: {
1875 export_aidl_headers: true,
1876 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001877 stl: "none",
1878 }
1879 `)
1880
Paul Duffin36474d32021-03-12 12:19:43 +00001881 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001882 checkUnversionedAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001883// This is auto-generated. DO NOT EDIT.
1884
1885cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001886 name: "mynativelib",
1887 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001888 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001889 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001890 device_supported: false,
1891 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001892 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001893 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001894 export_include_dirs: [
1895 "include/myinclude",
1896 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1897 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001898 target: {
1899 host: {
1900 enabled: false,
1901 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001902 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001903 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001904 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001905 },
1906 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001907}
Paul Duffin75b902a2021-02-22 12:13:13 +00001908`),
1909 checkVersionedAndroidBpContents(`
1910// This is auto-generated. DO NOT EDIT.
Paul Duffin13ad94f2020-02-19 16:19:27 +00001911
1912cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001913 name: "myexports_mynativelib@current",
1914 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001915 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001916 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001917 device_supported: false,
1918 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001919 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001920 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001921 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001922 export_include_dirs: [
1923 "include/myinclude",
1924 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1925 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001926 target: {
1927 host: {
1928 enabled: false,
1929 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001930 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001931 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001932 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001933 },
1934 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001935}
1936
1937module_exports_snapshot {
1938 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001939 visibility: ["//visibility:public"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001940 device_supported: false,
1941 host_supported: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01001942 compile_multilib: "64",
Paul Duffin7b0259f2021-04-24 11:34:46 +01001943 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001944 target: {
1945 host: {
1946 enabled: false,
1947 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001948 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001949 enabled: true,
1950 },
1951 },
Paul Duffin75b902a2021-02-22 12:13:13 +00001952}
1953`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001954 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001955myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00001956.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
1957.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
1958.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 +00001959.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00001960`),
1961 )
1962}
Paul Duffin91756d22020-02-21 16:29:57 +00001963
1964func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1965 result := testSdkWithCc(t, `
1966 sdk {
1967 name: "mysdk",
1968 native_header_libs: ["mynativeheaders"],
1969 }
1970
1971 cc_library_headers {
1972 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001973 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001974 stl: "none",
1975 }
1976 `)
1977
Paul Duffin36474d32021-03-12 12:19:43 +00001978 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001979 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001980// This is auto-generated. DO NOT EDIT.
1981
1982cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001983 name: "mynativeheaders",
1984 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001985 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001986 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001987 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001988 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001989 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001990}
Paul Duffin91756d22020-02-21 16:29:57 +00001991`),
1992 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001993myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001994`),
1995 )
1996}
1997
Paul Duffin93b750e2019-11-19 19:44:10 +00001998func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport(t *testing.T) {
1999 result := android.GroupFixturePreparers(
2000 cc.PrepareForTestWithCcDefaultModules,
2001 PrepareForTestWithSdkBuildComponents,
2002 ccTestFs.AddToFixture(),
2003 prepareForTestWithNativeBridgeTarget,
2004 ).RunTestWithBp(t, `
2005 sdk {
2006 name: "mysdk",
2007 native_header_libs: ["mynativeheaders"],
2008 traits: {
2009 native_bridge_support: ["mynativeheaders"],
2010 },
2011 }
2012
2013 cc_library_headers {
2014 name: "mynativeheaders",
2015 export_include_dirs: ["myinclude"],
2016 stl: "none",
2017 system_shared_libs: [],
2018 native_bridge_supported: true,
2019 }
2020 `)
2021
2022 CheckSnapshot(t, result, "mysdk", "",
2023 checkUnversionedAndroidBpContents(`
2024// This is auto-generated. DO NOT EDIT.
2025
2026cc_prebuilt_library_headers {
2027 name: "mynativeheaders",
2028 prefer: false,
2029 visibility: ["//visibility:public"],
2030 apex_available: ["//apex_available:platform"],
2031 native_bridge_supported: true,
2032 stl: "none",
2033 compile_multilib: "both",
2034 system_shared_libs: [],
2035 export_include_dirs: ["include/myinclude"],
2036}
2037`),
2038 checkAllCopyRules(`
2039myinclude/Test.h -> include/myinclude/Test.h
2040`),
2041 )
2042}
2043
2044// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
2045// module that has different output files for a native bridge target requests the native bridge
2046// variants are copied into the sdk snapshot that it reports an error.
2047func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties(t *testing.T) {
2048 android.GroupFixturePreparers(
2049 cc.PrepareForTestWithCcDefaultModules,
2050 PrepareForTestWithSdkBuildComponents,
2051 ccTestFs.AddToFixture(),
2052 prepareForTestWithNativeBridgeTarget,
2053 ).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
2054 `\QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants; this is not yet supported. The properties are:
2055 export_include_dirs: [
2056 "arm64_native_bridge/include/myinclude_nativebridge",
2057 "arm64_native_bridge/include/myinclude",
2058 ],\E`)).
2059 RunTestWithBp(t, `
2060 sdk {
2061 name: "mysdk",
2062 native_header_libs: ["mynativeheaders"],
2063 traits: {
2064 native_bridge_support: ["mynativeheaders"],
2065 },
2066 }
2067
2068 cc_library_headers {
2069 name: "mynativeheaders",
2070 export_include_dirs: ["myinclude"],
2071 stl: "none",
2072 system_shared_libs: [],
2073 native_bridge_supported: true,
2074 target: {
2075 native_bridge: {
2076 export_include_dirs: ["myinclude_nativebridge"],
2077 },
2078 },
2079 }
2080 `)
2081}
2082
Paul Duffin63696222021-09-06 10:28:34 +01002083func TestSnapshotWithCcHeadersLibraryAndImageVariants(t *testing.T) {
2084 testImageVariant := func(t *testing.T, property, trait string) {
2085 result := android.GroupFixturePreparers(
2086 cc.PrepareForTestWithCcDefaultModules,
2087 PrepareForTestWithSdkBuildComponents,
2088 ccTestFs.AddToFixture(),
2089 ).RunTestWithBp(t, fmt.Sprintf(`
2090 sdk {
2091 name: "mysdk",
2092 native_header_libs: ["mynativeheaders"],
2093 traits: {
2094 %s: ["mynativeheaders"],
2095 },
2096 }
2097
2098 cc_library_headers {
2099 name: "mynativeheaders",
2100 export_include_dirs: ["myinclude"],
2101 stl: "none",
2102 system_shared_libs: [],
2103 %s: true,
2104 }
2105 `, trait, property))
2106
2107 CheckSnapshot(t, result, "mysdk", "",
2108 checkUnversionedAndroidBpContents(fmt.Sprintf(`
2109// This is auto-generated. DO NOT EDIT.
2110
2111cc_prebuilt_library_headers {
2112 name: "mynativeheaders",
2113 prefer: false,
2114 visibility: ["//visibility:public"],
2115 apex_available: ["//apex_available:platform"],
2116 %s: true,
2117 stl: "none",
2118 compile_multilib: "both",
2119 system_shared_libs: [],
2120 export_include_dirs: ["include/myinclude"],
2121}
2122`, property)),
2123 checkAllCopyRules(`
2124myinclude/Test.h -> include/myinclude/Test.h
2125`),
2126 )
2127 }
2128
Paul Duffin12a0a312021-09-15 17:25:10 +01002129 t.Run("ramdisk", func(t *testing.T) {
2130 testImageVariant(t, "ramdisk_available", "ramdisk_image_required")
2131 })
2132
Paul Duffin63696222021-09-06 10:28:34 +01002133 t.Run("recovery", func(t *testing.T) {
2134 testImageVariant(t, "recovery_available", "recovery_image_required")
2135 })
2136}
2137
Paul Duffin91756d22020-02-21 16:29:57 +00002138func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00002139 result := testSdkWithCc(t, `
2140 sdk {
2141 name: "mysdk",
2142 device_supported: false,
2143 host_supported: true,
2144 native_header_libs: ["mynativeheaders"],
2145 }
2146
2147 cc_library_headers {
2148 name: "mynativeheaders",
2149 device_supported: false,
2150 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00002151 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00002152 stl: "none",
2153 }
2154 `)
2155
Paul Duffin36474d32021-03-12 12:19:43 +00002156 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002157 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00002158// This is auto-generated. DO NOT EDIT.
2159
2160cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002161 name: "mynativeheaders",
2162 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002163 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002164 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002165 device_supported: false,
2166 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002167 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002168 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002169 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002170 target: {
2171 host: {
2172 enabled: false,
2173 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002174 linux_glibc_x86_64: {
2175 enabled: true,
2176 },
2177 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002178 enabled: true,
2179 },
2180 },
Paul Duffin91756d22020-02-21 16:29:57 +00002181}
Paul Duffin75b902a2021-02-22 12:13:13 +00002182`),
2183 checkVersionedAndroidBpContents(`
2184// This is auto-generated. DO NOT EDIT.
Paul Duffin91756d22020-02-21 16:29:57 +00002185
2186cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002187 name: "mysdk_mynativeheaders@current",
2188 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002189 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002190 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002191 device_supported: false,
2192 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002193 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002194 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002195 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002196 target: {
2197 host: {
2198 enabled: false,
2199 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002200 linux_glibc_x86_64: {
2201 enabled: true,
2202 },
2203 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002204 enabled: true,
2205 },
2206 },
Paul Duffin91756d22020-02-21 16:29:57 +00002207}
2208
2209sdk_snapshot {
2210 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002211 visibility: ["//visibility:public"],
Paul Duffin91756d22020-02-21 16:29:57 +00002212 device_supported: false,
2213 host_supported: true,
2214 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002215 target: {
2216 host: {
2217 enabled: false,
2218 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002219 linux_glibc_x86_64: {
2220 enabled: true,
2221 },
2222 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002223 enabled: true,
2224 },
2225 },
Paul Duffin91756d22020-02-21 16:29:57 +00002226}
2227`),
2228 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002229myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002230`),
2231 )
2232}
Paul Duffina04c1072020-03-02 10:16:35 +00002233
2234func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00002235 result := testSdkWithCc(t, `
2236 sdk {
2237 name: "mysdk",
2238 host_supported: true,
2239 native_header_libs: ["mynativeheaders"],
2240 }
2241
2242 cc_library_headers {
2243 name: "mynativeheaders",
2244 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00002245 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00002246 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002247 target: {
2248 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002249 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002250 },
2251 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002252 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002253 },
2254 },
2255 }
2256 `)
2257
Paul Duffin36474d32021-03-12 12:19:43 +00002258 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002259 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002260// This is auto-generated. DO NOT EDIT.
2261
2262cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002263 name: "mynativeheaders",
2264 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002265 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002266 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002267 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002268 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002269 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002270 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002271 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002272 host: {
2273 enabled: false,
2274 },
Paul Duffina04c1072020-03-02 10:16:35 +00002275 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002276 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002277 },
2278 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002279 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002280 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002281 linux_glibc_x86_64: {
2282 enabled: true,
2283 },
2284 linux_glibc_x86: {
2285 enabled: true,
2286 },
Paul Duffina04c1072020-03-02 10:16:35 +00002287 },
Paul Duffina04c1072020-03-02 10:16:35 +00002288}
Paul Duffin75b902a2021-02-22 12:13:13 +00002289`),
Paul Duffin75b902a2021-02-22 12:13:13 +00002290 checkVersionedAndroidBpContents(`
2291// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00002292
2293cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002294 name: "mysdk_mynativeheaders@current",
2295 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002296 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002297 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002298 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002299 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002300 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002301 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002302 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002303 host: {
2304 enabled: false,
2305 },
Paul Duffina04c1072020-03-02 10:16:35 +00002306 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002307 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002308 },
2309 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002310 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002311 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002312 linux_glibc_x86_64: {
2313 enabled: true,
2314 },
2315 linux_glibc_x86: {
2316 enabled: true,
2317 },
Paul Duffina04c1072020-03-02 10:16:35 +00002318 },
Paul Duffina04c1072020-03-02 10:16:35 +00002319}
2320
2321sdk_snapshot {
2322 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002323 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00002324 host_supported: true,
2325 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002326 target: {
2327 host: {
2328 enabled: false,
2329 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002330 linux_glibc_x86_64: {
2331 enabled: true,
2332 },
2333 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002334 enabled: true,
2335 },
2336 },
Paul Duffina04c1072020-03-02 10:16:35 +00002337}
2338`),
2339 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002340myinclude/Test.h -> common_os/include/myinclude/Test.h
2341myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2342myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002343`),
2344 )
2345}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002346
2347func TestSystemSharedLibPropagation(t *testing.T) {
2348 result := testSdkWithCc(t, `
2349 sdk {
2350 name: "mysdk",
Colin Cross6b8f4252021-07-22 11:39:44 -07002351 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002352 }
2353
2354 cc_library {
2355 name: "sslnil",
2356 host_supported: true,
2357 }
2358
2359 cc_library {
2360 name: "sslempty",
2361 system_shared_libs: [],
2362 }
2363
2364 cc_library {
2365 name: "sslnonempty",
2366 system_shared_libs: ["sslnil"],
2367 }
2368 `)
2369
Paul Duffin36474d32021-03-12 12:19:43 +00002370 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002371 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002372// This is auto-generated. DO NOT EDIT.
2373
2374cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002375 name: "sslnil",
2376 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002377 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002378 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002379 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002380 arch: {
2381 arm64: {
2382 srcs: ["arm64/lib/sslnil.so"],
2383 },
2384 arm: {
2385 srcs: ["arm/lib/sslnil.so"],
2386 },
2387 },
2388}
2389
2390cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002391 name: "sslempty",
2392 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002393 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002394 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002395 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002396 system_shared_libs: [],
2397 arch: {
2398 arm64: {
2399 srcs: ["arm64/lib/sslempty.so"],
2400 },
2401 arm: {
2402 srcs: ["arm/lib/sslempty.so"],
2403 },
2404 },
2405}
2406
2407cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002408 name: "sslnonempty",
2409 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002410 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002411 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002412 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002413 system_shared_libs: ["sslnil"],
2414 arch: {
2415 arm64: {
2416 srcs: ["arm64/lib/sslnonempty.so"],
2417 },
2418 arm: {
2419 srcs: ["arm/lib/sslnonempty.so"],
2420 },
2421 },
2422}
Colin Cross6b8f4252021-07-22 11:39:44 -07002423`))
Martin Stjernholm10566a02020-03-24 01:19:52 +00002424
2425 result = testSdkWithCc(t, `
2426 sdk {
2427 name: "mysdk",
2428 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002429 native_shared_libs: ["sslvariants"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002430 }
2431
2432 cc_library {
2433 name: "sslvariants",
2434 host_supported: true,
2435 target: {
2436 android: {
2437 system_shared_libs: [],
2438 },
2439 },
2440 }
2441 `)
2442
Paul Duffin36474d32021-03-12 12:19:43 +00002443 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002444 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002445// This is auto-generated. DO NOT EDIT.
2446
2447cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002448 name: "sslvariants",
2449 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002450 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002451 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002452 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002453 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002454 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002455 host: {
2456 enabled: false,
2457 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002458 android: {
2459 system_shared_libs: [],
2460 },
2461 android_arm64: {
2462 srcs: ["android/arm64/lib/sslvariants.so"],
2463 },
2464 android_arm: {
2465 srcs: ["android/arm/lib/sslvariants.so"],
2466 },
2467 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002468 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002469 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2470 },
2471 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002472 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002473 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2474 },
2475 },
2476}
Paul Duffin75b902a2021-02-22 12:13:13 +00002477`),
2478 checkVersionedAndroidBpContents(`
2479// This is auto-generated. DO NOT EDIT.
Martin Stjernholm10566a02020-03-24 01:19:52 +00002480
2481cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002482 name: "mysdk_sslvariants@current",
2483 sdk_member_name: "sslvariants",
Paul Duffind99d9972020-09-29 16:00:55 +01002484 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002485 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002486 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002487 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002488 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002489 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002490 host: {
2491 enabled: false,
2492 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002493 android: {
2494 system_shared_libs: [],
2495 },
2496 android_arm64: {
2497 srcs: ["android/arm64/lib/sslvariants.so"],
2498 },
2499 android_arm: {
2500 srcs: ["android/arm/lib/sslvariants.so"],
2501 },
2502 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002503 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002504 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2505 },
2506 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002507 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002508 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2509 },
2510 },
2511}
2512
2513sdk_snapshot {
2514 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002515 visibility: ["//visibility:public"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002516 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002517 native_shared_libs: ["mysdk_sslvariants@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002518 target: {
2519 host: {
2520 enabled: false,
2521 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002522 linux_glibc_x86_64: {
2523 enabled: true,
2524 },
2525 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002526 enabled: true,
2527 },
2528 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002529}
2530`))
2531}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002532
2533func TestStubsLibrary(t *testing.T) {
2534 result := testSdkWithCc(t, `
2535 sdk {
2536 name: "mysdk",
2537 native_shared_libs: ["stubslib"],
2538 }
2539
2540 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002541 name: "internaldep",
2542 }
2543
2544 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002545 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002546 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002547 stubs: {
2548 symbol_file: "some/where/stubslib.map.txt",
2549 versions: ["1", "2", "3"],
2550 },
2551 }
2552 `)
2553
Paul Duffin36474d32021-03-12 12:19:43 +00002554 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002555 checkUnversionedAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002556// This is auto-generated. DO NOT EDIT.
2557
2558cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002559 name: "stubslib",
2560 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002561 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002562 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002563 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002564 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002565 versions: [
2566 "1",
2567 "2",
2568 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002569 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002570 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002571 },
2572 arch: {
2573 arm64: {
2574 srcs: ["arm64/lib/stubslib.so"],
2575 },
2576 arm: {
2577 srcs: ["arm/lib/stubslib.so"],
2578 },
2579 },
2580}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002581`))
2582}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002583
2584func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002585 result := testSdkWithCc(t, `
2586 sdk {
2587 name: "mysdk",
2588 host_supported: true,
2589 native_shared_libs: ["stubslib"],
2590 }
2591
2592 cc_library {
2593 name: "internaldep",
2594 host_supported: true,
2595 }
2596
2597 cc_library {
2598 name: "stubslib",
2599 host_supported: true,
2600 shared_libs: ["internaldep"],
2601 stubs: {
2602 symbol_file: "some/where/stubslib.map.txt",
2603 versions: ["1", "2", "3"],
2604 },
2605 }
2606 `)
2607
Paul Duffin36474d32021-03-12 12:19:43 +00002608 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002609 checkUnversionedAndroidBpContents(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002610// This is auto-generated. DO NOT EDIT.
2611
2612cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002613 name: "stubslib",
2614 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002615 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002616 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002617 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002618 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002619 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002620 versions: [
2621 "1",
2622 "2",
2623 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002624 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002625 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002626 },
2627 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002628 host: {
2629 enabled: false,
2630 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002631 android_arm64: {
2632 srcs: ["android/arm64/lib/stubslib.so"],
2633 },
2634 android_arm: {
2635 srcs: ["android/arm/lib/stubslib.so"],
2636 },
2637 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002638 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002639 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2640 },
2641 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002642 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002643 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2644 },
2645 },
2646}
Paul Duffin75b902a2021-02-22 12:13:13 +00002647`),
2648 checkVersionedAndroidBpContents(`
2649// This is auto-generated. DO NOT EDIT.
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002650
2651cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002652 name: "mysdk_stubslib@current",
2653 sdk_member_name: "stubslib",
Paul Duffind99d9972020-09-29 16:00:55 +01002654 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002655 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002656 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002657 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002658 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002659 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002660 versions: [
2661 "1",
2662 "2",
2663 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002664 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002665 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002666 },
2667 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002668 host: {
2669 enabled: false,
2670 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002671 android_arm64: {
2672 srcs: ["android/arm64/lib/stubslib.so"],
2673 },
2674 android_arm: {
2675 srcs: ["android/arm/lib/stubslib.so"],
2676 },
2677 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002678 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002679 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2680 },
2681 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002682 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002683 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2684 },
2685 },
2686}
2687
2688sdk_snapshot {
2689 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002690 visibility: ["//visibility:public"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002691 host_supported: true,
2692 native_shared_libs: ["mysdk_stubslib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002693 target: {
2694 host: {
2695 enabled: false,
2696 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002697 linux_glibc_x86_64: {
2698 enabled: true,
2699 },
2700 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002701 enabled: true,
2702 },
2703 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002704}
2705`))
2706}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002707
2708func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002709 result := testSdkWithCc(t, `
2710 sdk {
2711 name: "mysdk",
2712 host_supported: true,
2713 native_shared_libs: ["mylib"],
2714 }
2715
2716 cc_library {
2717 name: "mylib",
2718 host_supported: true,
2719 unique_host_soname: true,
2720 }
2721 `)
2722
Paul Duffin36474d32021-03-12 12:19:43 +00002723 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002724 checkUnversionedAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002725// This is auto-generated. DO NOT EDIT.
2726
2727cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002728 name: "mylib",
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"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002732 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002733 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002734 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002735 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002736 host: {
2737 enabled: false,
2738 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002739 android_arm64: {
2740 srcs: ["android/arm64/lib/mylib.so"],
2741 },
2742 android_arm: {
2743 srcs: ["android/arm/lib/mylib.so"],
2744 },
2745 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002746 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002747 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2748 },
2749 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002750 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002751 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2752 },
2753 },
2754}
Paul Duffin75b902a2021-02-22 12:13:13 +00002755`),
2756 checkVersionedAndroidBpContents(`
2757// This is auto-generated. DO NOT EDIT.
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002758
2759cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002760 name: "mysdk_mylib@current",
2761 sdk_member_name: "mylib",
Paul Duffind99d9972020-09-29 16:00:55 +01002762 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002763 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002764 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002765 installable: false,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002766 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002767 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002768 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002769 host: {
2770 enabled: false,
2771 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002772 android_arm64: {
2773 srcs: ["android/arm64/lib/mylib.so"],
2774 },
2775 android_arm: {
2776 srcs: ["android/arm/lib/mylib.so"],
2777 },
2778 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002779 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002780 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2781 },
2782 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002783 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002784 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2785 },
2786 },
2787}
2788
2789sdk_snapshot {
2790 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002791 visibility: ["//visibility:public"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002792 host_supported: true,
2793 native_shared_libs: ["mysdk_mylib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002794 target: {
2795 host: {
2796 enabled: false,
2797 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002798 linux_glibc_x86_64: {
2799 enabled: true,
2800 },
2801 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002802 enabled: true,
2803 },
2804 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002805}
2806`),
2807 checkAllCopyRules(`
2808.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2809.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2810.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2811.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2812`),
2813 )
2814}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002815
2816func TestNoSanitizerMembers(t *testing.T) {
2817 result := testSdkWithCc(t, `
2818 sdk {
2819 name: "mysdk",
2820 native_shared_libs: ["mynativelib"],
2821 }
2822
2823 cc_library_shared {
2824 name: "mynativelib",
2825 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002826 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002827 arch: {
2828 arm64: {
2829 export_system_include_dirs: ["arm64/include"],
2830 sanitize: {
2831 hwaddress: true,
2832 },
2833 },
2834 },
2835 }
2836 `)
2837
Paul Duffin1822a0a2021-03-21 12:56:33 +00002838 // Mixing the snapshot with the source (irrespective of which one is preferred) causes a problem
2839 // due to missing variants.
2840 // TODO(b/183204176): Remove this and fix the cause.
2841 snapshotWithSourceErrorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\QReplaceDependencies could not find identical variant {os:android,image:,arch:arm64_armv8-a,sdk:,link:shared,version:} for module mynativelib\E`)
2842
Paul Duffin36474d32021-03-12 12:19:43 +00002843 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002844 checkUnversionedAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002845// This is auto-generated. DO NOT EDIT.
2846
2847cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002848 name: "mynativelib",
2849 prefer: false,
2850 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002851 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002852 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002853 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002854 arch: {
2855 arm64: {
2856 export_system_include_dirs: ["arm64/include/arm64/include"],
2857 },
2858 arm: {
2859 srcs: ["arm/lib/mynativelib.so"],
2860 },
2861 },
2862}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002863`),
2864 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002865myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002866arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Paul Duffin1822a0a2021-03-21 12:56:33 +00002867.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
2868`),
2869 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, snapshotWithSourceErrorHandler),
2870 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, snapshotWithSourceErrorHandler),
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002871 )
2872}