blob: da90c6dfcac423efc5098b8d7f9ed733cb7177ab [file] [log] [blame]
Paul Duffina80fdec2019-12-03 15:25:00 +00001// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
17import (
18 "testing"
19
Paul Duffin1356d8c2020-02-25 19:26:33 +000020 "android/soong/android"
Paul Duffina80fdec2019-12-03 15:25:00 +000021 "android/soong/cc"
22)
23
Paul Duffin4a2a29c2021-03-09 22:27:13 +000024var ccTestFs = android.MockFS{
Paul Duffin86b02a72021-02-22 11:50:04 +000025 "Test.cpp": nil,
26 "myinclude/Test.h": nil,
27 "myinclude-android/AndroidTest.h": nil,
28 "myinclude-host/HostTest.h": nil,
29 "arm64/include/Arm64Test.h": nil,
30 "libfoo.so": nil,
31 "aidl/foo/bar/Test.aidl": nil,
32 "some/where/stubslib.map.txt": nil,
Martin Stjernholm7feceb22020-07-11 04:33:29 +010033}
34
Paul Duffin93b750e2019-11-19 19:44:10 +000035// Adds a native bridge target to the configured list of targets.
36var prepareForTestWithNativeBridgeTarget = android.FixtureModifyConfig(func(config android.Config) {
37 config.Targets[android.Android] = append(config.Targets[android.Android], android.Target{
38 Os: android.Android,
39 Arch: android.Arch{
40 ArchType: android.Arm64,
41 ArchVariant: "armv8-a",
42 CpuVariant: "cpu",
43 Abi: nil,
44 ArchFeatures: nil,
45 },
46 NativeBridge: android.NativeBridgeEnabled,
47 NativeBridgeHostArchName: "x86_64",
48 NativeBridgeRelativePath: "native_bridge",
49 })
50})
51
Paul Duffin4a2a29c2021-03-09 22:27:13 +000052func testSdkWithCc(t *testing.T, bp string) *android.TestResult {
Paul Duffind835daa2019-11-30 17:49:09 +000053 t.Helper()
Martin Stjernholm7feceb22020-07-11 04:33:29 +010054 return testSdkWithFs(t, bp, ccTestFs)
Paul Duffind835daa2019-11-30 17:49:09 +000055}
56
Paul Duffina80fdec2019-12-03 15:25:00 +000057// Contains tests for SDK members provided by the cc package.
58
Martin Stjernholmcaa47d72020-07-11 04:52:24 +010059func TestSingleDeviceOsAssumption(t *testing.T) {
60 // Mock a module with DeviceSupported() == true.
61 s := &sdk{}
62 android.InitAndroidArchModule(s, android.DeviceSupported, android.MultilibCommon)
63
64 osTypes := s.getPossibleOsTypes()
65 if len(osTypes) != 1 {
66 // The snapshot generation assumes there is a single device OS. If more are
67 // added it might need to disable them by default, like it does for host
68 // OS'es.
69 t.Errorf("expected a single device OS, got %v", osTypes)
70 }
71}
72
Paul Duffina80fdec2019-12-03 15:25:00 +000073func TestSdkIsCompileMultilibBoth(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +000074 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +000075 sdk {
76 name: "mysdk",
77 native_shared_libs: ["sdkmember"],
78 }
79
80 cc_library_shared {
81 name: "sdkmember",
82 srcs: ["Test.cpp"],
Paul Duffina80fdec2019-12-03 15:25:00 +000083 stl: "none",
84 }
85 `)
86
Colin Cross7113d202019-11-20 16:39:12 -080087 armOutput := result.Module("sdkmember", "android_arm_armv7-a-neon_shared").(*cc.Module).OutputFile()
88 arm64Output := result.Module("sdkmember", "android_arm64_armv8-a_shared").(*cc.Module).OutputFile()
Paul Duffina80fdec2019-12-03 15:25:00 +000089
90 var inputs []string
Paul Duffin1356d8c2020-02-25 19:26:33 +000091 buildParams := result.Module("mysdk", android.CommonOS.Name).BuildParamsForTests()
Paul Duffina80fdec2019-12-03 15:25:00 +000092 for _, bp := range buildParams {
93 if bp.Input != nil {
94 inputs = append(inputs, bp.Input.String())
95 }
96 }
97
98 // ensure that both 32/64 outputs are inputs of the sdk snapshot
99 ensureListContains(t, inputs, armOutput.String())
100 ensureListContains(t, inputs, arm64Output.String())
101}
102
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100103func TestSdkCompileMultilibOverride(t *testing.T) {
104 result := testSdkWithCc(t, `
105 sdk {
106 name: "mysdk",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100107 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100108 native_shared_libs: ["sdkmember"],
109 compile_multilib: "64",
110 }
111
112 cc_library_shared {
113 name: "sdkmember",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100114 host_supported: true,
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100115 srcs: ["Test.cpp"],
116 stl: "none",
117 compile_multilib: "64",
118 }
119 `)
120
Paul Duffin36474d32021-03-12 12:19:43 +0000121 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000122 checkUnversionedAndroidBpContents(`
Martin Stjernholm89238f42020-07-10 00:14:03 +0100123// This is auto-generated. DO NOT EDIT.
124
125cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000126 name: "sdkmember",
127 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100128 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000129 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100130 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100131 stl: "none",
132 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100133 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100134 host: {
135 enabled: false,
136 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100137 android_arm64: {
138 srcs: ["android/arm64/lib/sdkmember.so"],
139 },
140 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900141 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100142 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100143 },
144 },
145}
Paul Duffin75b902a2021-02-22 12:13:13 +0000146`),
147 checkVersionedAndroidBpContents(`
148// This is auto-generated. DO NOT EDIT.
Martin Stjernholm89238f42020-07-10 00:14:03 +0100149
150cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +0000151 name: "mysdk_sdkmember@current",
152 sdk_member_name: "sdkmember",
Paul Duffind99d9972020-09-29 16:00:55 +0100153 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000154 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100155 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000156 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +0100157 stl: "none",
158 compile_multilib: "64",
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100159 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100160 host: {
161 enabled: false,
162 },
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100163 android_arm64: {
164 srcs: ["android/arm64/lib/sdkmember.so"],
165 },
166 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900167 enabled: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100168 srcs: ["linux_glibc/x86_64/lib/sdkmember.so"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100169 },
170 },
171}
172
173sdk_snapshot {
174 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100175 visibility: ["//visibility:public"],
Martin Stjernholm89238f42020-07-10 00:14:03 +0100176 host_supported: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100177 compile_multilib: "64",
Paul Duffin7b0259f2021-04-24 11:34:46 +0100178 native_shared_libs: ["mysdk_sdkmember@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100179 target: {
180 host: {
181 enabled: false,
182 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900183 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100184 enabled: true,
185 },
186 },
Martin Stjernholm89238f42020-07-10 00:14:03 +0100187}
188`),
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100189 checkAllCopyRules(`
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +0100190.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> android/arm64/lib/sdkmember.so
191.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> linux_glibc/x86_64/lib/sdkmember.so
Martin Stjernholm26ab8e82020-06-30 20:34:00 +0100192`))
193}
194
Paul Duffina80fdec2019-12-03 15:25:00 +0000195func TestBasicSdkWithCc(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +0000196 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +0000197 sdk {
198 name: "mysdk",
199 native_shared_libs: ["sdkmember"],
200 }
201
Paul Duffina0843f62019-12-13 19:50:38 +0000202 cc_library_shared {
203 name: "sdkmember",
Colin Crossf9aabd72020-02-15 11:29:50 -0800204 system_shared_libs: [],
Martin Stjernholmcc776012020-07-07 03:22:21 +0100205 stl: "none",
206 apex_available: ["mysdkapex"],
Paul Duffina0843f62019-12-13 19:50:38 +0000207 }
208
Paul Duffina80fdec2019-12-03 15:25:00 +0000209 sdk_snapshot {
210 name: "mysdk@1",
Paul Duffin525a5902021-05-06 16:33:52 +0100211 native_shared_libs: ["sdkmember_mysdk@1"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000212 }
213
214 sdk_snapshot {
215 name: "mysdk@2",
Paul Duffin525a5902021-05-06 16:33:52 +0100216 native_shared_libs: ["sdkmember_mysdk@2"],
Paul Duffina80fdec2019-12-03 15:25:00 +0000217 }
218
219 cc_prebuilt_library_shared {
220 name: "sdkmember",
221 srcs: ["libfoo.so"],
222 prefer: false,
223 system_shared_libs: [],
224 stl: "none",
225 }
226
227 cc_prebuilt_library_shared {
Paul Duffin525a5902021-05-06 16:33:52 +0100228 name: "sdkmember_mysdk@1",
Paul Duffina80fdec2019-12-03 15:25:00 +0000229 sdk_member_name: "sdkmember",
230 srcs: ["libfoo.so"],
231 system_shared_libs: [],
232 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000233 // TODO: remove //apex_available:platform
234 apex_available: [
235 "//apex_available:platform",
236 "myapex",
237 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000238 }
239
240 cc_prebuilt_library_shared {
Paul Duffin525a5902021-05-06 16:33:52 +0100241 name: "sdkmember_mysdk@2",
Paul Duffina80fdec2019-12-03 15:25:00 +0000242 sdk_member_name: "sdkmember",
243 srcs: ["libfoo.so"],
244 system_shared_libs: [],
245 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000246 // TODO: remove //apex_available:platform
247 apex_available: [
248 "//apex_available:platform",
249 "myapex2",
250 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000251 }
252
253 cc_library_shared {
254 name: "mycpplib",
255 srcs: ["Test.cpp"],
256 shared_libs: ["sdkmember"],
257 system_shared_libs: [],
258 stl: "none",
Anton Hanssoneec79eb2020-01-10 15:12:39 +0000259 apex_available: [
260 "myapex",
261 "myapex2",
262 ],
Paul Duffina80fdec2019-12-03 15:25:00 +0000263 }
264
265 apex {
266 name: "myapex",
267 native_shared_libs: ["mycpplib"],
268 uses_sdks: ["mysdk@1"],
269 key: "myapex.key",
270 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000271 updatable: false,
Paul Duffina80fdec2019-12-03 15:25:00 +0000272 }
273
274 apex {
275 name: "myapex2",
276 native_shared_libs: ["mycpplib"],
277 uses_sdks: ["mysdk@2"],
278 key: "myapex.key",
279 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000280 updatable: false,
Paul Duffina80fdec2019-12-03 15:25:00 +0000281 }
Martin Stjernholmcc776012020-07-07 03:22:21 +0100282
283 apex {
284 name: "mysdkapex",
285 native_shared_libs: ["sdkmember"],
286 key: "myapex.key",
287 certificate: ":myapex.cert",
Mathew Inwoodf8dcf5e2021-02-16 11:40:16 +0000288 updatable: false,
Martin Stjernholmcc776012020-07-07 03:22:21 +0100289 }
Paul Duffina80fdec2019-12-03 15:25:00 +0000290 `)
291
Paul Duffin525a5902021-05-06 16:33:52 +0100292 sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk@1", "android_arm64_armv8-a_shared_apex10000_mysdk_1").Rule("toc").Output
293 sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk@2", "android_arm64_armv8-a_shared_apex10000_mysdk_2").Rule("toc").Output
Paul Duffina80fdec2019-12-03 15:25:00 +0000294
Colin Crossaede88c2020-08-11 12:17:01 -0700295 cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_1")
296 cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_2")
Paul Duffina80fdec2019-12-03 15:25:00 +0000297
298 // Depending on the uses_sdks value, different libs are linked
299 ensureListContains(t, pathsToStrings(cpplibForMyApex.Rule("ld").Implicits), sdkMemberV1.String())
300 ensureListContains(t, pathsToStrings(cpplibForMyApex2.Rule("ld").Implicits), sdkMemberV2.String())
301}
302
Paul Duffina0843f62019-12-13 19:50:38 +0000303// Make sure the sdk can use host specific cc libraries static/shared and both.
304func TestHostSdkWithCc(t *testing.T) {
305 testSdkWithCc(t, `
306 sdk {
307 name: "mysdk",
308 device_supported: false,
309 host_supported: true,
310 native_shared_libs: ["sdkshared"],
311 native_static_libs: ["sdkstatic"],
312 }
313
314 cc_library_host_shared {
315 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000316 stl: "none",
317 }
318
319 cc_library_host_static {
320 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000321 stl: "none",
322 }
323 `)
324}
325
326// Make sure the sdk can use cc libraries static/shared and both.
327func TestSdkWithCc(t *testing.T) {
328 testSdkWithCc(t, `
329 sdk {
330 name: "mysdk",
331 native_shared_libs: ["sdkshared", "sdkboth1"],
332 native_static_libs: ["sdkstatic", "sdkboth2"],
333 }
334
335 cc_library_shared {
336 name: "sdkshared",
Paul Duffina0843f62019-12-13 19:50:38 +0000337 stl: "none",
338 }
339
340 cc_library_static {
341 name: "sdkstatic",
Paul Duffina0843f62019-12-13 19:50:38 +0000342 stl: "none",
343 }
344
345 cc_library {
346 name: "sdkboth1",
Paul Duffina0843f62019-12-13 19:50:38 +0000347 stl: "none",
348 }
349
350 cc_library {
351 name: "sdkboth2",
Paul Duffina0843f62019-12-13 19:50:38 +0000352 stl: "none",
353 }
354 `)
355}
356
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000357func TestSnapshotWithObject(t *testing.T) {
358 result := testSdkWithCc(t, `
359 sdk {
360 name: "mysdk",
361 native_objects: ["crtobj"],
362 }
363
364 cc_object {
365 name: "crtobj",
366 stl: "none",
Colin Cross6b8f4252021-07-22 11:39:44 -0700367 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100368 sanitize: {
369 never: true,
370 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000371 }
372 `)
373
Paul Duffin36474d32021-03-12 12:19:43 +0000374 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000375 checkUnversionedAndroidBpContents(`
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000376// This is auto-generated. DO NOT EDIT.
377
378cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000379 name: "crtobj",
380 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100381 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000382 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000383 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100384 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700385 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100386 sanitize: {
387 never: true,
388 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000389 arch: {
390 arm64: {
391 srcs: ["arm64/lib/crtobj.o"],
392 },
393 arm: {
394 srcs: ["arm/lib/crtobj.o"],
395 },
396 },
397}
Paul Duffin75b902a2021-02-22 12:13:13 +0000398`),
399 // Make sure that the generated sdk_snapshot uses the native_objects property.
400 checkVersionedAndroidBpContents(`
401// This is auto-generated. DO NOT EDIT.
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000402
403cc_prebuilt_object {
Paul Duffin75b902a2021-02-22 12:13:13 +0000404 name: "mysdk_crtobj@current",
405 sdk_member_name: "crtobj",
Paul Duffind99d9972020-09-29 16:00:55 +0100406 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000407 apex_available: ["//apex_available:platform"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000408 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100409 compile_multilib: "both",
Colin Cross6b8f4252021-07-22 11:39:44 -0700410 system_shared_libs: [],
Martin Stjernholmfbb486f2020-08-21 18:43:51 +0100411 sanitize: {
412 never: true,
413 },
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000414 arch: {
415 arm64: {
416 srcs: ["arm64/lib/crtobj.o"],
417 },
418 arm: {
419 srcs: ["arm/lib/crtobj.o"],
420 },
421 },
422}
423
424sdk_snapshot {
425 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100426 visibility: ["//visibility:public"],
Martin Stjernholmcd07bce2020-03-10 22:37:59 +0000427 native_objects: ["mysdk_crtobj@current"],
428}
429`),
430 checkAllCopyRules(`
431.intermediates/crtobj/android_arm64_armv8-a/crtobj.o -> arm64/lib/crtobj.o
432.intermediates/crtobj/android_arm_armv7-a-neon/crtobj.o -> arm/lib/crtobj.o
433`),
434 )
435}
436
Paul Duffinc62a5102019-12-11 18:34:15 +0000437func TestSnapshotWithCcDuplicateHeaders(t *testing.T) {
438 result := testSdkWithCc(t, `
439 sdk {
440 name: "mysdk",
441 native_shared_libs: ["mynativelib1", "mynativelib2"],
442 }
443
444 cc_library_shared {
445 name: "mynativelib1",
446 srcs: [
447 "Test.cpp",
448 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000449 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000450 stl: "none",
451 }
452
453 cc_library_shared {
454 name: "mynativelib2",
455 srcs: [
456 "Test.cpp",
457 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000458 export_include_dirs: ["myinclude"],
Paul Duffinc62a5102019-12-11 18:34:15 +0000459 stl: "none",
460 }
461 `)
462
Paul Duffin36474d32021-03-12 12:19:43 +0000463 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinc62a5102019-12-11 18:34:15 +0000464 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000465myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800466.intermediates/mynativelib1/android_arm64_armv8-a_shared/mynativelib1.so -> arm64/lib/mynativelib1.so
467.intermediates/mynativelib1/android_arm_armv7-a-neon_shared/mynativelib1.so -> arm/lib/mynativelib1.so
468.intermediates/mynativelib2/android_arm64_armv8-a_shared/mynativelib2.so -> arm64/lib/mynativelib2.so
469.intermediates/mynativelib2/android_arm_armv7-a-neon_shared/mynativelib2.so -> arm/lib/mynativelib2.so
Paul Duffinc62a5102019-12-11 18:34:15 +0000470`),
471 )
472}
473
Paul Duffina43f9272021-02-17 10:55:25 +0000474func TestSnapshotWithCcExportGeneratedHeaders(t *testing.T) {
475 result := testSdkWithCc(t, `
476 sdk {
477 name: "mysdk",
478 native_shared_libs: ["mynativelib"],
479 }
480
481 cc_library_shared {
482 name: "mynativelib",
483 srcs: [
484 "Test.cpp",
485 ],
486 generated_headers: [
487 "generated_foo",
488 ],
489 export_generated_headers: [
490 "generated_foo",
491 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000492 export_include_dirs: ["myinclude"],
Paul Duffina43f9272021-02-17 10:55:25 +0000493 stl: "none",
494 }
495
496 genrule {
497 name: "generated_foo",
498 cmd: "generate-foo",
499 out: [
500 "generated_foo/protos/foo/bar.h",
501 ],
502 export_include_dirs: [
503 ".",
504 "protos",
505 ],
506 }
507 `)
508
Paul Duffindb462dd2021-03-21 22:01:55 +0000509 // TODO(b/183322862): Remove this and fix the issue.
510 errorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`module source path "snapshot/include_gen/generated_foo/gen/protos" does not exist`)
511
Paul Duffin36474d32021-03-12 12:19:43 +0000512 CheckSnapshot(t, result, "mysdk", "",
Paul Duffina43f9272021-02-17 10:55:25 +0000513 checkUnversionedAndroidBpContents(`
514// This is auto-generated. DO NOT EDIT.
515
516cc_prebuilt_library_shared {
517 name: "mynativelib",
518 prefer: false,
519 visibility: ["//visibility:public"],
520 apex_available: ["//apex_available:platform"],
521 stl: "none",
522 compile_multilib: "both",
Paul Duffin7a7d0672021-02-17 12:17:40 +0000523 export_include_dirs: [
524 "include/myinclude",
525 "include_gen/generated_foo/gen",
526 "include_gen/generated_foo/gen/protos",
527 ],
Paul Duffina43f9272021-02-17 10:55:25 +0000528 arch: {
529 arm64: {
530 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000531 },
532 arm: {
533 srcs: ["arm/lib/mynativelib.so"],
Paul Duffina43f9272021-02-17 10:55:25 +0000534 },
535 },
536}
537`),
538 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000539myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +0000540.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 +0000541.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000542.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffina43f9272021-02-17 10:55:25 +0000543`),
Paul Duffindb462dd2021-03-21 22:01:55 +0000544 snapshotTestErrorHandler(checkSnapshotWithoutSource, errorHandler),
545 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, errorHandler),
546 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, errorHandler),
Paul Duffina43f9272021-02-17 10:55:25 +0000547 )
548}
549
Martin Stjernholmb0249572020-09-15 02:32:35 +0100550// Verify that when the shared library has some common and some arch specific
551// properties that the generated snapshot is optimized properly. Substruct
552// handling is tested with the sanitize clauses (but note there's a lot of
553// built-in logic in sanitize.go that can affect those flags).
Paul Duffina7cd8c82019-12-11 20:00:57 +0000554func TestSnapshotWithCcSharedLibraryCommonProperties(t *testing.T) {
555 result := testSdkWithCc(t, `
556 sdk {
557 name: "mysdk",
558 native_shared_libs: ["mynativelib"],
559 }
560
561 cc_library_shared {
562 name: "mynativelib",
563 srcs: [
564 "Test.cpp",
565 "aidl/foo/bar/Test.aidl",
566 ],
Paul Duffin86b02a72021-02-22 11:50:04 +0000567 export_include_dirs: ["myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100568 sanitize: {
569 fuzzer: false,
570 integer_overflow: true,
571 diag: { undefined: false },
572 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000573 arch: {
574 arm64: {
575 export_system_include_dirs: ["arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100576 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100577 integer_overflow: false,
578 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000579 },
580 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000581 stl: "none",
582 }
583 `)
584
Paul Duffin36474d32021-03-12 12:19:43 +0000585 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000586 checkUnversionedAndroidBpContents(`
Paul Duffina7cd8c82019-12-11 20:00:57 +0000587// This is auto-generated. DO NOT EDIT.
588
589cc_prebuilt_library_shared {
Paul Duffina7cd8c82019-12-11 20:00:57 +0000590 name: "mynativelib",
591 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100592 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000593 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +0000594 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +0100595 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +0000596 export_include_dirs: ["include/myinclude"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100597 sanitize: {
598 fuzzer: false,
599 diag: {
600 undefined: false,
601 },
602 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000603 arch: {
604 arm64: {
605 srcs: ["arm64/lib/mynativelib.so"],
606 export_system_include_dirs: ["arm64/include/arm64/include"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100607 sanitize: {
Martin Stjernholmb0249572020-09-15 02:32:35 +0100608 integer_overflow: false,
609 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000610 },
611 arm: {
612 srcs: ["arm/lib/mynativelib.so"],
Martin Stjernholmb0249572020-09-15 02:32:35 +0100613 sanitize: {
614 integer_overflow: true,
615 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000616 },
617 },
Paul Duffina7cd8c82019-12-11 20:00:57 +0000618}
Paul Duffina7cd8c82019-12-11 20:00:57 +0000619`),
620 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +0000621myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +0000622.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffina7cd8c82019-12-11 20:00:57 +0000623arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Colin Cross7113d202019-11-20 16:39:12 -0800624.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so`),
Paul Duffina7cd8c82019-12-11 20:00:57 +0000625 )
626}
627
Paul Duffin25ce04b2020-01-16 11:47:25 +0000628func TestSnapshotWithCcBinary(t *testing.T) {
629 result := testSdkWithCc(t, `
630 module_exports {
631 name: "mymodule_exports",
632 native_binaries: ["mynativebinary"],
633 }
634
635 cc_binary {
636 name: "mynativebinary",
637 srcs: [
638 "Test.cpp",
639 ],
640 compile_multilib: "both",
Paul Duffin25ce04b2020-01-16 11:47:25 +0000641 }
642 `)
643
Paul Duffin36474d32021-03-12 12:19:43 +0000644 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000645 checkUnversionedAndroidBpContents(`
Paul Duffin25ce04b2020-01-16 11:47:25 +0000646// This is auto-generated. DO NOT EDIT.
647
648cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000649 name: "mynativebinary",
650 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100651 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000652 apex_available: ["//apex_available:platform"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000653 compile_multilib: "both",
654 arch: {
655 arm64: {
656 srcs: ["arm64/bin/mynativebinary"],
657 },
658 arm: {
659 srcs: ["arm/bin/mynativebinary"],
660 },
661 },
662}
Paul Duffin75b902a2021-02-22 12:13:13 +0000663`),
664 // Make sure that the generated sdk_snapshot uses the native_binaries property.
665 checkVersionedAndroidBpContents(`
666// This is auto-generated. DO NOT EDIT.
Paul Duffin25ce04b2020-01-16 11:47:25 +0000667
668cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000669 name: "mymodule_exports_mynativebinary@current",
670 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100671 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000672 apex_available: ["//apex_available:platform"],
Paul Duffin75b902a2021-02-22 12:13:13 +0000673 installable: false,
Paul Duffin25ce04b2020-01-16 11:47:25 +0000674 compile_multilib: "both",
675 arch: {
676 arm64: {
677 srcs: ["arm64/bin/mynativebinary"],
678 },
679 arm: {
680 srcs: ["arm/bin/mynativebinary"],
681 },
682 },
683}
684
685module_exports_snapshot {
686 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100687 visibility: ["//visibility:public"],
Paul Duffin25ce04b2020-01-16 11:47:25 +0000688 native_binaries: ["mymodule_exports_mynativebinary@current"],
689}
690`),
691 checkAllCopyRules(`
692.intermediates/mynativebinary/android_arm64_armv8-a/mynativebinary -> arm64/bin/mynativebinary
693.intermediates/mynativebinary/android_arm_armv7-a-neon/mynativebinary -> arm/bin/mynativebinary
694`),
695 )
696}
697
Paul Duffina04c1072020-03-02 10:16:35 +0000698func TestMultipleHostOsTypesSnapshotWithCcBinary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +0000699 result := testSdkWithCc(t, `
700 module_exports {
701 name: "myexports",
702 device_supported: false,
703 host_supported: true,
704 native_binaries: ["mynativebinary"],
705 target: {
706 windows: {
707 enabled: true,
708 },
709 },
710 }
711
712 cc_binary {
713 name: "mynativebinary",
714 device_supported: false,
715 host_supported: true,
716 srcs: [
717 "Test.cpp",
718 ],
719 compile_multilib: "both",
Paul Duffina04c1072020-03-02 10:16:35 +0000720 stl: "none",
721 target: {
722 windows: {
723 enabled: true,
724 },
725 },
726 }
727 `)
728
Paul Duffin36474d32021-03-12 12:19:43 +0000729 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000730 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +0000731// This is auto-generated. DO NOT EDIT.
732
733cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000734 name: "mynativebinary",
735 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +0100736 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000737 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000738 device_supported: false,
739 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100740 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000741 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100742 host: {
743 enabled: false,
744 },
Paul Duffina04c1072020-03-02 10:16:35 +0000745 linux_glibc: {
746 compile_multilib: "both",
747 },
748 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900749 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000750 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
751 },
752 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900753 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000754 srcs: ["linux_glibc/x86/bin/mynativebinary"],
755 },
756 windows: {
757 compile_multilib: "64",
758 },
759 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900760 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000761 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
762 },
763 },
764}
Paul Duffin75b902a2021-02-22 12:13:13 +0000765`),
766 checkVersionedAndroidBpContents(`
767// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +0000768
769cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +0000770 name: "myexports_mynativebinary@current",
771 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100772 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000773 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +0000774 device_supported: false,
775 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +0000776 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +0100777 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +0000778 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100779 host: {
780 enabled: false,
781 },
Paul Duffina04c1072020-03-02 10:16:35 +0000782 linux_glibc: {
783 compile_multilib: "both",
784 },
785 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900786 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000787 srcs: ["linux_glibc/x86_64/bin/mynativebinary"],
788 },
789 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900790 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000791 srcs: ["linux_glibc/x86/bin/mynativebinary"],
792 },
793 windows: {
794 compile_multilib: "64",
795 },
796 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900797 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +0000798 srcs: ["windows/x86_64/bin/mynativebinary.exe"],
799 },
800 },
801}
802
803module_exports_snapshot {
804 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100805 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +0000806 device_supported: false,
807 host_supported: true,
808 native_binaries: ["myexports_mynativebinary@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +0000809 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900810 windows: {
811 compile_multilib: "64",
812 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100813 host: {
814 enabled: false,
815 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900816 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100817 enabled: true,
818 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900819 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100820 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +0900821 },
822 windows_x86_64: {
823 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +0000824 },
825 },
Paul Duffina04c1072020-03-02 10:16:35 +0000826}
827`),
828 checkAllCopyRules(`
829.intermediates/mynativebinary/linux_glibc_x86_64/mynativebinary -> linux_glibc/x86_64/bin/mynativebinary
830.intermediates/mynativebinary/linux_glibc_x86/mynativebinary -> linux_glibc/x86/bin/mynativebinary
831.intermediates/mynativebinary/windows_x86_64/mynativebinary.exe -> windows/x86_64/bin/mynativebinary.exe
832`),
833 )
834}
835
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100836func TestSnapshotWithSingleHostOsType(t *testing.T) {
Paul Duffin89648f92021-03-20 00:36:55 +0000837 result := android.GroupFixturePreparers(
838 prepareForSdkTest,
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000839 ccTestFs.AddToFixture(),
840 cc.PrepareForTestOnLinuxBionic,
841 android.FixtureModifyConfig(func(config android.Config) {
842 config.Targets[android.LinuxBionic] = []android.Target{
843 {android.LinuxBionic, android.Arch{ArchType: android.X86_64}, android.NativeBridgeDisabled, "", "", false},
844 }
845 }),
846 ).RunTestWithBp(t, `
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100847 cc_defaults {
848 name: "mydefaults",
849 device_supported: false,
850 host_supported: true,
851 compile_multilib: "64",
852 target: {
853 host: {
854 enabled: false,
855 },
856 linux_bionic: {
857 enabled: true,
858 },
859 },
860 }
861
862 module_exports {
863 name: "myexports",
864 defaults: ["mydefaults"],
865 native_shared_libs: ["mynativelib"],
866 native_binaries: ["mynativebinary"],
867 compile_multilib: "64", // The built-in default in sdk.go overrides mydefaults.
868 }
869
870 cc_library {
871 name: "mynativelib",
872 defaults: ["mydefaults"],
873 srcs: [
874 "Test.cpp",
875 ],
876 stl: "none",
877 }
878
879 cc_binary {
880 name: "mynativebinary",
881 defaults: ["mydefaults"],
882 srcs: [
883 "Test.cpp",
884 ],
885 stl: "none",
886 }
Paul Duffin4a2a29c2021-03-09 22:27:13 +0000887 `)
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100888
Paul Duffin36474d32021-03-12 12:19:43 +0000889 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +0000890 checkUnversionedAndroidBpContents(`
891// This is auto-generated. DO NOT EDIT.
892
893cc_prebuilt_binary {
894 name: "mynativebinary",
895 prefer: false,
896 visibility: ["//visibility:public"],
897 apex_available: ["//apex_available:platform"],
898 device_supported: false,
899 host_supported: true,
900 stl: "none",
901 compile_multilib: "64",
902 target: {
903 host: {
904 enabled: false,
905 },
906 linux_bionic_x86_64: {
907 enabled: true,
908 srcs: ["x86_64/bin/mynativebinary"],
909 },
910 },
911}
912
913cc_prebuilt_library_shared {
914 name: "mynativelib",
915 prefer: false,
916 visibility: ["//visibility:public"],
917 apex_available: ["//apex_available:platform"],
918 device_supported: false,
919 host_supported: true,
920 stl: "none",
921 compile_multilib: "64",
922 target: {
923 host: {
924 enabled: false,
925 },
926 linux_bionic_x86_64: {
927 enabled: true,
928 srcs: ["x86_64/lib/mynativelib.so"],
929 },
930 },
931}
932`),
933 checkVersionedAndroidBpContents(`
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100934// This is auto-generated. DO NOT EDIT.
935
936cc_prebuilt_binary {
937 name: "myexports_mynativebinary@current",
938 sdk_member_name: "mynativebinary",
Paul Duffind99d9972020-09-29 16:00:55 +0100939 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000940 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100941 device_supported: false,
942 host_supported: true,
943 installable: false,
944 stl: "none",
945 compile_multilib: "64",
946 target: {
947 host: {
948 enabled: false,
949 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100950 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900951 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100952 srcs: ["x86_64/bin/mynativebinary"],
953 },
954 },
955}
956
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100957cc_prebuilt_library_shared {
958 name: "myexports_mynativelib@current",
959 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +0100960 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +0000961 apex_available: ["//apex_available:platform"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100962 device_supported: false,
963 host_supported: true,
964 installable: false,
965 stl: "none",
966 compile_multilib: "64",
967 target: {
968 host: {
969 enabled: false,
970 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100971 linux_bionic_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +0900972 enabled: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100973 srcs: ["x86_64/lib/mynativelib.so"],
974 },
975 },
976}
977
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100978module_exports_snapshot {
979 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +0100980 visibility: ["//visibility:public"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100981 device_supported: false,
982 host_supported: true,
Paul Duffin7b0259f2021-04-24 11:34:46 +0100983 compile_multilib: "64",
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100984 native_binaries: ["myexports_mynativebinary@current"],
985 native_shared_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100986 target: {
987 host: {
988 enabled: false,
989 },
Jiyong Park8fe14e62020-10-19 22:47:34 +0900990 linux_bionic_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +0100991 enabled: true,
992 },
993 },
994}
995`),
996 checkAllCopyRules(`
997.intermediates/mynativebinary/linux_bionic_x86_64/mynativebinary -> x86_64/bin/mynativebinary
998.intermediates/mynativelib/linux_bionic_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
999`),
1000 )
1001}
1002
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001003// Test that we support the necessary flags for the linker binary, which is
1004// special in several ways.
1005func TestSnapshotWithCcStaticNocrtBinary(t *testing.T) {
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001006 result := testSdkWithCc(t, `
1007 module_exports {
1008 name: "mymodule_exports",
1009 host_supported: true,
1010 device_supported: false,
1011 native_binaries: ["linker"],
1012 }
1013
1014 cc_binary {
1015 name: "linker",
1016 host_supported: true,
1017 static_executable: true,
1018 nocrt: true,
1019 stl: "none",
1020 srcs: [
1021 "Test.cpp",
1022 ],
1023 compile_multilib: "both",
1024 }
1025 `)
1026
Paul Duffin36474d32021-03-12 12:19:43 +00001027 CheckSnapshot(t, result, "mymodule_exports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001028 checkUnversionedAndroidBpContents(`
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001029// This is auto-generated. DO NOT EDIT.
1030
1031cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001032 name: "linker",
1033 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001034 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001035 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001036 device_supported: false,
1037 host_supported: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001038 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001039 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001040 static_executable: true,
1041 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001042 target: {
1043 host: {
1044 enabled: false,
1045 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001046 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001047 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001048 srcs: ["x86_64/bin/linker"],
1049 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001050 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001051 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001052 srcs: ["x86/bin/linker"],
1053 },
1054 },
1055}
Paul Duffin75b902a2021-02-22 12:13:13 +00001056`),
1057 checkVersionedAndroidBpContents(`
1058// This is auto-generated. DO NOT EDIT.
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001059
1060cc_prebuilt_binary {
Paul Duffin75b902a2021-02-22 12:13:13 +00001061 name: "mymodule_exports_linker@current",
1062 sdk_member_name: "linker",
Paul Duffind99d9972020-09-29 16:00:55 +01001063 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001064 apex_available: ["//apex_available:platform"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001065 device_supported: false,
1066 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001067 installable: false,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001068 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001069 compile_multilib: "both",
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001070 static_executable: true,
1071 nocrt: true,
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001072 target: {
1073 host: {
1074 enabled: false,
1075 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001076 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001077 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001078 srcs: ["x86_64/bin/linker"],
1079 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001080 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001081 enabled: true,
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001082 srcs: ["x86/bin/linker"],
1083 },
1084 },
1085}
1086
1087module_exports_snapshot {
1088 name: "mymodule_exports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001089 visibility: ["//visibility:public"],
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001090 device_supported: false,
1091 host_supported: true,
1092 native_binaries: ["mymodule_exports_linker@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001093 target: {
1094 host: {
1095 enabled: false,
1096 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001097 linux_glibc_x86_64: {
1098 enabled: true,
1099 },
1100 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001101 enabled: true,
1102 },
1103 },
Martin Stjernholm7130fab2020-05-28 22:58:01 +01001104}
1105`),
1106 checkAllCopyRules(`
1107.intermediates/linker/linux_glibc_x86_64/linker -> x86_64/bin/linker
1108.intermediates/linker/linux_glibc_x86/linker -> x86/bin/linker
1109`),
1110 )
1111}
1112
Paul Duffin9ab556f2019-12-11 18:42:17 +00001113func TestSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001114 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001115 sdk {
1116 name: "mysdk",
1117 native_shared_libs: ["mynativelib"],
1118 }
1119
1120 cc_library_shared {
1121 name: "mynativelib",
1122 srcs: [
1123 "Test.cpp",
1124 "aidl/foo/bar/Test.aidl",
1125 ],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001126 apex_available: ["apex1", "apex2"],
Paul Duffin86b02a72021-02-22 11:50:04 +00001127 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001128 aidl: {
1129 export_aidl_headers: true,
1130 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001131 stl: "none",
1132 }
1133 `)
1134
Paul Duffin36474d32021-03-12 12:19:43 +00001135 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001136 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001137// This is auto-generated. DO NOT EDIT.
1138
1139cc_prebuilt_library_shared {
Paul Duffina80fdec2019-12-03 15:25:00 +00001140 name: "mynativelib",
1141 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001142 visibility: ["//visibility:public"],
Paul Duffinbefa4b92020-03-04 14:22:45 +00001143 apex_available: [
1144 "apex1",
1145 "apex2",
1146 ],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001147 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001148 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001149 export_include_dirs: ["include/myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001150 arch: {
1151 arm64: {
1152 srcs: ["arm64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001153 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001154 },
1155 arm: {
1156 srcs: ["arm/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001157 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001158 },
1159 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001160}
Paul Duffina80fdec2019-12-03 15:25:00 +00001161`),
1162 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001163myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001164.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001165.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
1166.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
1167.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 -08001168.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001169.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
1170.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
1171.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 +00001172`),
1173 )
1174}
1175
Paul Duffin13f02712020-03-06 12:30:43 +00001176func TestSnapshotWithCcSharedLibrarySharedLibs(t *testing.T) {
1177 result := testSdkWithCc(t, `
1178 sdk {
1179 name: "mysdk",
1180 native_shared_libs: [
1181 "mynativelib",
1182 "myothernativelib",
1183 "mysystemnativelib",
1184 ],
1185 }
1186
1187 cc_library {
1188 name: "mysystemnativelib",
1189 srcs: [
1190 "Test.cpp",
1191 ],
Paul Duffin13f02712020-03-06 12:30:43 +00001192 stl: "none",
1193 }
1194
1195 cc_library_shared {
1196 name: "myothernativelib",
1197 srcs: [
1198 "Test.cpp",
1199 ],
1200 system_shared_libs: [
1201 // A reference to a library that is not an sdk member. Uses libm as that
1202 // is in the default set of modules available to this test and so is available
1203 // both here and also when the generated Android.bp file is tested in
1204 // CheckSnapshot(). This ensures that the system_shared_libs property correctly
1205 // handles references to modules that are not sdk members.
1206 "libm",
1207 ],
1208 stl: "none",
1209 }
1210
1211 cc_library {
1212 name: "mynativelib",
1213 srcs: [
1214 "Test.cpp",
1215 ],
1216 shared_libs: [
1217 // A reference to another sdk member.
1218 "myothernativelib",
1219 ],
1220 target: {
1221 android: {
1222 shared: {
1223 shared_libs: [
1224 // A reference to a library that is not an sdk member. The libc library
1225 // is used here to check that the shared_libs property is handled correctly
1226 // in a similar way to how libm is used to check system_shared_libs above.
1227 "libc",
1228 ],
1229 },
1230 },
1231 },
Paul Duffin13f02712020-03-06 12:30:43 +00001232 stl: "none",
1233 }
1234 `)
1235
Paul Duffin36474d32021-03-12 12:19:43 +00001236 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001237 checkUnversionedAndroidBpContents(`
Paul Duffin13f02712020-03-06 12:30:43 +00001238// This is auto-generated. DO NOT EDIT.
1239
1240cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001241 name: "mynativelib",
1242 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001243 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001244 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001245 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001246 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001247 shared_libs: [
1248 "myothernativelib",
1249 "libc",
1250 ],
1251 arch: {
1252 arm64: {
1253 srcs: ["arm64/lib/mynativelib.so"],
1254 },
1255 arm: {
1256 srcs: ["arm/lib/mynativelib.so"],
1257 },
1258 },
Paul Duffin13f02712020-03-06 12:30:43 +00001259}
1260
1261cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001262 name: "myothernativelib",
1263 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001264 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001265 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001266 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001267 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001268 system_shared_libs: ["libm"],
1269 arch: {
1270 arm64: {
1271 srcs: ["arm64/lib/myothernativelib.so"],
1272 },
1273 arm: {
1274 srcs: ["arm/lib/myothernativelib.so"],
1275 },
1276 },
Paul Duffin13f02712020-03-06 12:30:43 +00001277}
1278
1279cc_prebuilt_library_shared {
Paul Duffin13f02712020-03-06 12:30:43 +00001280 name: "mysystemnativelib",
1281 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001282 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001283 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001284 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001285 compile_multilib: "both",
Paul Duffin13f02712020-03-06 12:30:43 +00001286 arch: {
1287 arm64: {
1288 srcs: ["arm64/lib/mysystemnativelib.so"],
1289 },
1290 arm: {
1291 srcs: ["arm/lib/mysystemnativelib.so"],
1292 },
1293 },
Paul Duffin13f02712020-03-06 12:30:43 +00001294}
Paul Duffin13f02712020-03-06 12:30:43 +00001295`),
1296 checkAllCopyRules(`
1297.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1298.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1299.intermediates/myothernativelib/android_arm64_armv8-a_shared/myothernativelib.so -> arm64/lib/myothernativelib.so
1300.intermediates/myothernativelib/android_arm_armv7-a-neon_shared/myothernativelib.so -> arm/lib/myothernativelib.so
1301.intermediates/mysystemnativelib/android_arm64_armv8-a_shared/mysystemnativelib.so -> arm64/lib/mysystemnativelib.so
1302.intermediates/mysystemnativelib/android_arm_armv7-a-neon_shared/mysystemnativelib.so -> arm/lib/mysystemnativelib.so
1303`),
1304 )
1305}
1306
Paul Duffin9ab556f2019-12-11 18:42:17 +00001307func TestHostSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffind835daa2019-11-30 17:49:09 +00001308 result := testSdkWithCc(t, `
Paul Duffina80fdec2019-12-03 15:25:00 +00001309 sdk {
1310 name: "mysdk",
1311 device_supported: false,
1312 host_supported: true,
1313 native_shared_libs: ["mynativelib"],
1314 }
1315
1316 cc_library_shared {
1317 name: "mynativelib",
1318 device_supported: false,
1319 host_supported: true,
1320 srcs: [
1321 "Test.cpp",
1322 "aidl/foo/bar/Test.aidl",
1323 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001324 export_include_dirs: ["myinclude"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001325 aidl: {
1326 export_aidl_headers: true,
1327 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001328 stl: "none",
Paul Duffin0c394f32020-03-05 14:09:58 +00001329 sdk_version: "minimum",
Paul Duffina80fdec2019-12-03 15:25:00 +00001330 }
1331 `)
1332
Paul Duffin36474d32021-03-12 12:19:43 +00001333 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001334 checkUnversionedAndroidBpContents(`
Paul Duffina80fdec2019-12-03 15:25:00 +00001335// This is auto-generated. DO NOT EDIT.
1336
1337cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001338 name: "mynativelib",
1339 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001340 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001341 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001342 device_supported: false,
1343 host_supported: true,
Paul Duffin0c394f32020-03-05 14:09:58 +00001344 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001345 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001346 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001347 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001348 target: {
1349 host: {
1350 enabled: false,
1351 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001352 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001353 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001354 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001355 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001356 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001357 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001358 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001359 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001360 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001361 },
1362 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001363}
Paul Duffin75b902a2021-02-22 12:13:13 +00001364`),
1365 checkVersionedAndroidBpContents(`
1366// This is auto-generated. DO NOT EDIT.
Paul Duffina80fdec2019-12-03 15:25:00 +00001367
1368cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001369 name: "mysdk_mynativelib@current",
1370 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001371 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001372 apex_available: ["//apex_available:platform"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001373 device_supported: false,
1374 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001375 installable: false,
Paul Duffin0c394f32020-03-05 14:09:58 +00001376 sdk_version: "minimum",
Paul Duffin0174d8d2020-03-11 18:42:08 +00001377 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001378 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001379 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001380 target: {
1381 host: {
1382 enabled: false,
1383 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001384 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001385 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001386 srcs: ["x86_64/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001387 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001388 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001389 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001390 enabled: true,
Paul Duffina80fdec2019-12-03 15:25:00 +00001391 srcs: ["x86/lib/mynativelib.so"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001392 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_shared/gen/aidl"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001393 },
1394 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001395}
1396
1397sdk_snapshot {
1398 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001399 visibility: ["//visibility:public"],
Paul Duffina80fdec2019-12-03 15:25:00 +00001400 device_supported: false,
1401 host_supported: true,
1402 native_shared_libs: ["mysdk_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001403 target: {
1404 host: {
1405 enabled: false,
1406 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001407 linux_glibc_x86_64: {
1408 enabled: true,
1409 },
1410 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001411 enabled: true,
1412 },
1413 },
Paul Duffina80fdec2019-12-03 15:25:00 +00001414}
1415`),
1416 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001417myinclude/Test.h -> include/myinclude/Test.h
Paul Duffina80fdec2019-12-03 15:25:00 +00001418.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> x86_64/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001419.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
1420.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
1421.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 +00001422.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> x86/lib/mynativelib.so
Paul Duffin42dd4e62021-02-22 11:35:24 +00001423.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
1424.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
1425.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 +00001426`),
1427 )
1428}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001429
Paul Duffina04c1072020-03-02 10:16:35 +00001430func TestMultipleHostOsTypesSnapshotWithCcSharedLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00001431 result := testSdkWithCc(t, `
1432 sdk {
1433 name: "mysdk",
1434 device_supported: false,
1435 host_supported: true,
1436 native_shared_libs: ["mynativelib"],
1437 target: {
1438 windows: {
1439 enabled: true,
1440 },
1441 },
1442 }
1443
1444 cc_library_shared {
1445 name: "mynativelib",
1446 device_supported: false,
1447 host_supported: true,
1448 srcs: [
1449 "Test.cpp",
1450 ],
Paul Duffina04c1072020-03-02 10:16:35 +00001451 stl: "none",
1452 target: {
1453 windows: {
1454 enabled: true,
1455 },
1456 },
1457 }
1458 `)
1459
Paul Duffin36474d32021-03-12 12:19:43 +00001460 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001461 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00001462// This is auto-generated. DO NOT EDIT.
1463
1464cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001465 name: "mynativelib",
1466 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001467 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001468 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001469 device_supported: false,
1470 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001471 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001472 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001473 host: {
1474 enabled: false,
1475 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001476 linux_glibc: {
1477 compile_multilib: "both",
1478 },
Paul Duffina04c1072020-03-02 10:16:35 +00001479 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001480 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001481 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1482 },
1483 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001484 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001485 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1486 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001487 windows: {
1488 compile_multilib: "64",
1489 },
Paul Duffina04c1072020-03-02 10:16:35 +00001490 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001491 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001492 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1493 },
1494 },
Paul Duffina04c1072020-03-02 10:16:35 +00001495}
Paul Duffin75b902a2021-02-22 12:13:13 +00001496`),
1497 checkVersionedAndroidBpContents(`
1498// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00001499
1500cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00001501 name: "mysdk_mynativelib@current",
1502 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001503 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001504 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00001505 device_supported: false,
1506 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001507 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001508 stl: "none",
Paul Duffina04c1072020-03-02 10:16:35 +00001509 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001510 host: {
1511 enabled: false,
1512 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001513 linux_glibc: {
1514 compile_multilib: "both",
1515 },
Paul Duffina04c1072020-03-02 10:16:35 +00001516 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001517 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001518 srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
1519 },
1520 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001521 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001522 srcs: ["linux_glibc/x86/lib/mynativelib.so"],
1523 },
Martin Stjernholm89238f42020-07-10 00:14:03 +01001524 windows: {
1525 compile_multilib: "64",
1526 },
Paul Duffina04c1072020-03-02 10:16:35 +00001527 windows_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001528 enabled: true,
Paul Duffina04c1072020-03-02 10:16:35 +00001529 srcs: ["windows/x86_64/lib/mynativelib.dll"],
1530 },
1531 },
Paul Duffina04c1072020-03-02 10:16:35 +00001532}
1533
1534sdk_snapshot {
1535 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001536 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00001537 device_supported: false,
1538 host_supported: true,
1539 native_shared_libs: ["mysdk_mynativelib@current"],
Paul Duffin6a7e9532020-03-20 17:50:07 +00001540 target: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001541 windows: {
1542 compile_multilib: "64",
1543 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001544 host: {
1545 enabled: false,
1546 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001547 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001548 enabled: true,
1549 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001550 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001551 enabled: true,
Jiyong Park8fe14e62020-10-19 22:47:34 +09001552 },
1553 windows_x86_64: {
1554 enabled: true,
Paul Duffin6a7e9532020-03-20 17:50:07 +00001555 },
1556 },
Paul Duffina04c1072020-03-02 10:16:35 +00001557}
1558`),
1559 checkAllCopyRules(`
1560.intermediates/mynativelib/linux_glibc_x86_64_shared/mynativelib.so -> linux_glibc/x86_64/lib/mynativelib.so
1561.intermediates/mynativelib/linux_glibc_x86_shared/mynativelib.so -> linux_glibc/x86/lib/mynativelib.so
1562.intermediates/mynativelib/windows_x86_64_shared/mynativelib.dll -> windows/x86_64/lib/mynativelib.dll
1563`),
1564 )
1565}
1566
Paul Duffin9ab556f2019-12-11 18:42:17 +00001567func TestSnapshotWithCcStaticLibrary(t *testing.T) {
1568 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001569 module_exports {
1570 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001571 native_static_libs: ["mynativelib"],
1572 }
1573
1574 cc_library_static {
1575 name: "mynativelib",
1576 srcs: [
1577 "Test.cpp",
1578 "aidl/foo/bar/Test.aidl",
1579 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001580 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001581 aidl: {
1582 export_aidl_headers: true,
1583 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001584 stl: "none",
1585 }
1586 `)
1587
Paul Duffin36474d32021-03-12 12:19:43 +00001588 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001589 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001590// This is auto-generated. DO NOT EDIT.
1591
1592cc_prebuilt_library_static {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001593 name: "mynativelib",
1594 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001595 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001596 apex_available: ["//apex_available:platform"],
Paul Duffin0174d8d2020-03-11 18:42:08 +00001597 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001598 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001599 export_include_dirs: ["include/myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001600 arch: {
1601 arm64: {
1602 srcs: ["arm64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001603 export_include_dirs: ["arm64/include_gen/mynativelib/android_arm64_armv8-a_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001604 },
1605 arm: {
1606 srcs: ["arm/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001607 export_include_dirs: ["arm/include_gen/mynativelib/android_arm_armv7-a-neon_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001608 },
1609 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001610}
Paul Duffin9ab556f2019-12-11 18:42:17 +00001611`),
1612 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001613myinclude/Test.h -> include/myinclude/Test.h
Colin Cross7113d202019-11-20 16:39:12 -08001614.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001615.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
1616.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
1617.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 -08001618.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001619.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
1620.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
1621.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 +00001622`),
1623 )
1624}
1625
1626func TestHostSnapshotWithCcStaticLibrary(t *testing.T) {
Paul Duffin9ab556f2019-12-11 18:42:17 +00001627 result := testSdkWithCc(t, `
Paul Duffine6029182019-12-16 17:43:48 +00001628 module_exports {
1629 name: "myexports",
Paul Duffin9ab556f2019-12-11 18:42:17 +00001630 device_supported: false,
1631 host_supported: true,
1632 native_static_libs: ["mynativelib"],
1633 }
1634
1635 cc_library_static {
1636 name: "mynativelib",
1637 device_supported: false,
1638 host_supported: true,
1639 srcs: [
1640 "Test.cpp",
1641 "aidl/foo/bar/Test.aidl",
1642 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001643 export_include_dirs: ["myinclude"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001644 aidl: {
1645 export_aidl_headers: true,
1646 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001647 stl: "none",
1648 }
1649 `)
1650
Paul Duffin36474d32021-03-12 12:19:43 +00001651 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001652 checkUnversionedAndroidBpContents(`
Paul Duffin9ab556f2019-12-11 18:42:17 +00001653// This is auto-generated. DO NOT EDIT.
1654
1655cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001656 name: "mynativelib",
1657 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001658 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001659 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001660 device_supported: false,
1661 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001662 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001663 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001664 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001665 target: {
1666 host: {
1667 enabled: false,
1668 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001669 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001670 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001671 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001672 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001673 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001674 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001675 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001676 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001677 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001678 },
1679 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001680}
Paul Duffin75b902a2021-02-22 12:13:13 +00001681`),
1682 checkVersionedAndroidBpContents(`
1683// This is auto-generated. DO NOT EDIT.
Paul Duffin9ab556f2019-12-11 18:42:17 +00001684
1685cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001686 name: "myexports_mynativelib@current",
1687 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001688 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001689 apex_available: ["//apex_available:platform"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001690 device_supported: false,
1691 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001692 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001693 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001694 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001695 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001696 target: {
1697 host: {
1698 enabled: false,
1699 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001700 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001701 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001702 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001703 export_include_dirs: ["x86_64/include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001704 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001705 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001706 enabled: true,
Paul Duffin9ab556f2019-12-11 18:42:17 +00001707 srcs: ["x86/lib/mynativelib.a"],
Paul Duffin42dd4e62021-02-22 11:35:24 +00001708 export_include_dirs: ["x86/include_gen/mynativelib/linux_glibc_x86_static/gen/aidl"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001709 },
1710 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001711}
1712
Paul Duffine6029182019-12-16 17:43:48 +00001713module_exports_snapshot {
1714 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001715 visibility: ["//visibility:public"],
Paul Duffin9ab556f2019-12-11 18:42:17 +00001716 device_supported: false,
1717 host_supported: true,
Paul Duffine6029182019-12-16 17:43:48 +00001718 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001719 target: {
1720 host: {
1721 enabled: false,
1722 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001723 linux_glibc_x86_64: {
1724 enabled: true,
1725 },
1726 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001727 enabled: true,
1728 },
1729 },
Paul Duffin9ab556f2019-12-11 18:42:17 +00001730}
1731`),
1732 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001733myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9ab556f2019-12-11 18:42:17 +00001734.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001735.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
1736.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
1737.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 +00001738.intermediates/mynativelib/linux_glibc_x86_static/mynativelib.a -> x86/lib/mynativelib.a
Paul Duffin42dd4e62021-02-22 11:35:24 +00001739.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
1740.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
1741.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 +00001742`),
1743 )
1744}
Paul Duffin13ad94f2020-02-19 16:19:27 +00001745
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001746func TestSnapshotWithCcLibrary(t *testing.T) {
1747 result := testSdkWithCc(t, `
1748 module_exports {
1749 name: "myexports",
1750 native_libs: ["mynativelib"],
1751 }
1752
1753 cc_library {
1754 name: "mynativelib",
1755 srcs: [
1756 "Test.cpp",
1757 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001758 export_include_dirs: ["myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001759 stl: "none",
Paul Duffind6abaa72020-09-07 16:39:22 +01001760 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001761 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001762 }
1763 `)
1764
Paul Duffin36474d32021-03-12 12:19:43 +00001765 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001766 checkUnversionedAndroidBpContents(`
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001767// This is auto-generated. DO NOT EDIT.
1768
1769cc_prebuilt_library {
Paul Duffin75b902a2021-02-22 12:13:13 +00001770 name: "mynativelib",
1771 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001772 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001773 apex_available: ["//apex_available:platform"],
Paul Duffind6abaa72020-09-07 16:39:22 +01001774 recovery_available: true,
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 Duffind6abaa72020-09-07 16:39:22 +01001809 recovery_available: true,
Paul Duffind1edbd42020-08-13 19:45:31 +01001810 vendor_available: true,
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001811 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001812 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001813 export_include_dirs: ["include/myinclude"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001814 arch: {
1815 arm64: {
1816 static: {
1817 srcs: ["arm64/lib/mynativelib.a"],
1818 },
1819 shared: {
1820 srcs: ["arm64/lib/mynativelib.so"],
1821 },
1822 },
1823 arm: {
1824 static: {
1825 srcs: ["arm/lib/mynativelib.a"],
1826 },
1827 shared: {
1828 srcs: ["arm/lib/mynativelib.so"],
1829 },
1830 },
1831 },
1832}
1833
1834module_exports_snapshot {
1835 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001836 visibility: ["//visibility:public"],
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001837 native_libs: ["myexports_mynativelib@current"],
1838}
1839`),
1840 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001841myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001842.intermediates/mynativelib/android_arm64_armv8-a_static/mynativelib.a -> arm64/lib/mynativelib.a
1843.intermediates/mynativelib/android_arm64_armv8-a_shared/mynativelib.so -> arm64/lib/mynativelib.so
1844.intermediates/mynativelib/android_arm_armv7-a-neon_static/mynativelib.a -> arm/lib/mynativelib.a
Paul Duffin1822a0a2021-03-21 12:56:33 +00001845.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
1846`),
1847 // TODO(b/183315522): Remove this and fix the issue.
1848 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\Qunrecognized property "arch.arm.shared.export_include_dirs"\E`)),
Paul Duffin9b76c0b2020-03-12 10:24:35 +00001849 )
1850}
1851
Paul Duffin13ad94f2020-02-19 16:19:27 +00001852func TestHostSnapshotWithMultiLib64(t *testing.T) {
Paul Duffin13ad94f2020-02-19 16:19:27 +00001853 result := testSdkWithCc(t, `
1854 module_exports {
1855 name: "myexports",
1856 device_supported: false,
1857 host_supported: true,
1858 target: {
1859 host: {
1860 compile_multilib: "64",
1861 },
1862 },
1863 native_static_libs: ["mynativelib"],
1864 }
1865
1866 cc_library_static {
1867 name: "mynativelib",
1868 device_supported: false,
1869 host_supported: true,
1870 srcs: [
1871 "Test.cpp",
1872 "aidl/foo/bar/Test.aidl",
1873 ],
Paul Duffin86b02a72021-02-22 11:50:04 +00001874 export_include_dirs: ["myinclude"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001875 aidl: {
1876 export_aidl_headers: true,
1877 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001878 stl: "none",
1879 }
1880 `)
1881
Paul Duffin36474d32021-03-12 12:19:43 +00001882 CheckSnapshot(t, result, "myexports", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001883 checkUnversionedAndroidBpContents(`
Paul Duffin13ad94f2020-02-19 16:19:27 +00001884// This is auto-generated. DO NOT EDIT.
1885
1886cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001887 name: "mynativelib",
1888 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001889 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001890 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001891 device_supported: false,
1892 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001893 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001894 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001895 export_include_dirs: [
1896 "include/myinclude",
1897 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1898 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001899 target: {
1900 host: {
1901 enabled: false,
1902 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001903 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001904 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001905 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001906 },
1907 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001908}
Paul Duffin75b902a2021-02-22 12:13:13 +00001909`),
1910 checkVersionedAndroidBpContents(`
1911// This is auto-generated. DO NOT EDIT.
Paul Duffin13ad94f2020-02-19 16:19:27 +00001912
1913cc_prebuilt_library_static {
Paul Duffin75b902a2021-02-22 12:13:13 +00001914 name: "myexports_mynativelib@current",
1915 sdk_member_name: "mynativelib",
Paul Duffind99d9972020-09-29 16:00:55 +01001916 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001917 apex_available: ["//apex_available:platform"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001918 device_supported: false,
1919 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00001920 installable: false,
Paul Duffin0174d8d2020-03-11 18:42:08 +00001921 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001922 compile_multilib: "64",
Paul Duffin7a7d0672021-02-17 12:17:40 +00001923 export_include_dirs: [
1924 "include/myinclude",
1925 "include_gen/mynativelib/linux_glibc_x86_64_static/gen/aidl",
1926 ],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001927 target: {
1928 host: {
1929 enabled: false,
1930 },
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001931 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09001932 enabled: true,
Paul Duffin13ad94f2020-02-19 16:19:27 +00001933 srcs: ["x86_64/lib/mynativelib.a"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001934 },
1935 },
Paul Duffin13ad94f2020-02-19 16:19:27 +00001936}
1937
1938module_exports_snapshot {
1939 name: "myexports@current",
Paul Duffind99d9972020-09-29 16:00:55 +01001940 visibility: ["//visibility:public"],
Paul Duffin13ad94f2020-02-19 16:19:27 +00001941 device_supported: false,
1942 host_supported: true,
Martin Stjernholm4cfa2c62020-07-10 19:55:36 +01001943 compile_multilib: "64",
Paul Duffin7b0259f2021-04-24 11:34:46 +01001944 native_static_libs: ["myexports_mynativelib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001945 target: {
1946 host: {
1947 enabled: false,
1948 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09001949 linux_glibc_x86_64: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01001950 enabled: true,
1951 },
1952 },
Paul Duffin75b902a2021-02-22 12:13:13 +00001953}
1954`),
Paul Duffin13ad94f2020-02-19 16:19:27 +00001955 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001956myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin7a7d0672021-02-17 12:17:40 +00001957.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
1958.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
1959.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 +00001960.intermediates/mynativelib/linux_glibc_x86_64_static/mynativelib.a -> x86_64/lib/mynativelib.a
Paul Duffin13ad94f2020-02-19 16:19:27 +00001961`),
1962 )
1963}
Paul Duffin91756d22020-02-21 16:29:57 +00001964
1965func TestSnapshotWithCcHeadersLibrary(t *testing.T) {
1966 result := testSdkWithCc(t, `
1967 sdk {
1968 name: "mysdk",
1969 native_header_libs: ["mynativeheaders"],
1970 }
1971
1972 cc_library_headers {
1973 name: "mynativeheaders",
Paul Duffin86b02a72021-02-22 11:50:04 +00001974 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001975 stl: "none",
1976 }
1977 `)
1978
Paul Duffin36474d32021-03-12 12:19:43 +00001979 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00001980 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00001981// This is auto-generated. DO NOT EDIT.
1982
1983cc_prebuilt_library_headers {
Paul Duffin91756d22020-02-21 16:29:57 +00001984 name: "mynativeheaders",
1985 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01001986 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00001987 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00001988 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01001989 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00001990 export_include_dirs: ["include/myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00001991}
Paul Duffin91756d22020-02-21 16:29:57 +00001992`),
1993 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00001994myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00001995`),
1996 )
1997}
1998
Paul Duffin93b750e2019-11-19 19:44:10 +00001999func TestSnapshotWithCcHeadersLibraryAndNativeBridgeSupport(t *testing.T) {
2000 result := android.GroupFixturePreparers(
2001 cc.PrepareForTestWithCcDefaultModules,
2002 PrepareForTestWithSdkBuildComponents,
2003 ccTestFs.AddToFixture(),
2004 prepareForTestWithNativeBridgeTarget,
2005 ).RunTestWithBp(t, `
2006 sdk {
2007 name: "mysdk",
2008 native_header_libs: ["mynativeheaders"],
2009 traits: {
2010 native_bridge_support: ["mynativeheaders"],
2011 },
2012 }
2013
2014 cc_library_headers {
2015 name: "mynativeheaders",
2016 export_include_dirs: ["myinclude"],
2017 stl: "none",
2018 system_shared_libs: [],
2019 native_bridge_supported: true,
2020 }
2021 `)
2022
2023 CheckSnapshot(t, result, "mysdk", "",
2024 checkUnversionedAndroidBpContents(`
2025// This is auto-generated. DO NOT EDIT.
2026
2027cc_prebuilt_library_headers {
2028 name: "mynativeheaders",
2029 prefer: false,
2030 visibility: ["//visibility:public"],
2031 apex_available: ["//apex_available:platform"],
2032 native_bridge_supported: true,
2033 stl: "none",
2034 compile_multilib: "both",
2035 system_shared_libs: [],
2036 export_include_dirs: ["include/myinclude"],
2037}
2038`),
2039 checkAllCopyRules(`
2040myinclude/Test.h -> include/myinclude/Test.h
2041`),
2042 )
2043}
2044
2045// TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties verifies that when a
2046// module that has different output files for a native bridge target requests the native bridge
2047// variants are copied into the sdk snapshot that it reports an error.
2048func TestSnapshotWithCcHeadersLibrary_DetectsNativeBridgeSpecificProperties(t *testing.T) {
2049 android.GroupFixturePreparers(
2050 cc.PrepareForTestWithCcDefaultModules,
2051 PrepareForTestWithSdkBuildComponents,
2052 ccTestFs.AddToFixture(),
2053 prepareForTestWithNativeBridgeTarget,
2054 ).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
2055 `\QArchitecture variant "arm64_native_bridge" of sdk member "mynativeheaders" has properties distinct from other variants; this is not yet supported. The properties are:
2056 export_include_dirs: [
2057 "arm64_native_bridge/include/myinclude_nativebridge",
2058 "arm64_native_bridge/include/myinclude",
2059 ],\E`)).
2060 RunTestWithBp(t, `
2061 sdk {
2062 name: "mysdk",
2063 native_header_libs: ["mynativeheaders"],
2064 traits: {
2065 native_bridge_support: ["mynativeheaders"],
2066 },
2067 }
2068
2069 cc_library_headers {
2070 name: "mynativeheaders",
2071 export_include_dirs: ["myinclude"],
2072 stl: "none",
2073 system_shared_libs: [],
2074 native_bridge_supported: true,
2075 target: {
2076 native_bridge: {
2077 export_include_dirs: ["myinclude_nativebridge"],
2078 },
2079 },
2080 }
2081 `)
2082}
2083
Paul Duffin91756d22020-02-21 16:29:57 +00002084func TestHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffin91756d22020-02-21 16:29:57 +00002085 result := testSdkWithCc(t, `
2086 sdk {
2087 name: "mysdk",
2088 device_supported: false,
2089 host_supported: true,
2090 native_header_libs: ["mynativeheaders"],
2091 }
2092
2093 cc_library_headers {
2094 name: "mynativeheaders",
2095 device_supported: false,
2096 host_supported: true,
Paul Duffin86b02a72021-02-22 11:50:04 +00002097 export_include_dirs: ["myinclude"],
Paul Duffin91756d22020-02-21 16:29:57 +00002098 stl: "none",
2099 }
2100 `)
2101
Paul Duffin36474d32021-03-12 12:19:43 +00002102 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002103 checkUnversionedAndroidBpContents(`
Paul Duffin91756d22020-02-21 16:29:57 +00002104// This is auto-generated. DO NOT EDIT.
2105
2106cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002107 name: "mynativeheaders",
2108 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002109 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002110 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002111 device_supported: false,
2112 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002113 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002114 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002115 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002116 target: {
2117 host: {
2118 enabled: false,
2119 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002120 linux_glibc_x86_64: {
2121 enabled: true,
2122 },
2123 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002124 enabled: true,
2125 },
2126 },
Paul Duffin91756d22020-02-21 16:29:57 +00002127}
Paul Duffin75b902a2021-02-22 12:13:13 +00002128`),
2129 checkVersionedAndroidBpContents(`
2130// This is auto-generated. DO NOT EDIT.
Paul Duffin91756d22020-02-21 16:29:57 +00002131
2132cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002133 name: "mysdk_mynativeheaders@current",
2134 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002135 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002136 apex_available: ["//apex_available:platform"],
Paul Duffin91756d22020-02-21 16:29:57 +00002137 device_supported: false,
2138 host_supported: true,
Paul Duffin91756d22020-02-21 16:29:57 +00002139 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002140 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002141 export_include_dirs: ["include/myinclude"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002142 target: {
2143 host: {
2144 enabled: false,
2145 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002146 linux_glibc_x86_64: {
2147 enabled: true,
2148 },
2149 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002150 enabled: true,
2151 },
2152 },
Paul Duffin91756d22020-02-21 16:29:57 +00002153}
2154
2155sdk_snapshot {
2156 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002157 visibility: ["//visibility:public"],
Paul Duffin91756d22020-02-21 16:29:57 +00002158 device_supported: false,
2159 host_supported: true,
2160 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002161 target: {
2162 host: {
2163 enabled: false,
2164 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002165 linux_glibc_x86_64: {
2166 enabled: true,
2167 },
2168 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002169 enabled: true,
2170 },
2171 },
Paul Duffin91756d22020-02-21 16:29:57 +00002172}
2173`),
2174 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002175myinclude/Test.h -> include/myinclude/Test.h
Paul Duffin91756d22020-02-21 16:29:57 +00002176`),
2177 )
2178}
Paul Duffina04c1072020-03-02 10:16:35 +00002179
2180func TestDeviceAndHostSnapshotWithCcHeadersLibrary(t *testing.T) {
Paul Duffina04c1072020-03-02 10:16:35 +00002181 result := testSdkWithCc(t, `
2182 sdk {
2183 name: "mysdk",
2184 host_supported: true,
2185 native_header_libs: ["mynativeheaders"],
2186 }
2187
2188 cc_library_headers {
2189 name: "mynativeheaders",
2190 host_supported: true,
Paul Duffina04c1072020-03-02 10:16:35 +00002191 stl: "none",
Paul Duffin86b02a72021-02-22 11:50:04 +00002192 export_system_include_dirs: ["myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002193 target: {
2194 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002195 export_include_dirs: ["myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002196 },
2197 host: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002198 export_include_dirs: ["myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002199 },
2200 },
2201 }
2202 `)
2203
Paul Duffin36474d32021-03-12 12:19:43 +00002204 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002205 checkUnversionedAndroidBpContents(`
Paul Duffina04c1072020-03-02 10:16:35 +00002206// This is auto-generated. DO NOT EDIT.
2207
2208cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002209 name: "mynativeheaders",
2210 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002211 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002212 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002213 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002214 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002215 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002216 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002217 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002218 host: {
2219 enabled: false,
2220 },
Paul Duffina04c1072020-03-02 10:16:35 +00002221 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002222 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002223 },
2224 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002225 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002226 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002227 linux_glibc_x86_64: {
2228 enabled: true,
2229 },
2230 linux_glibc_x86: {
2231 enabled: true,
2232 },
Paul Duffina04c1072020-03-02 10:16:35 +00002233 },
Paul Duffina04c1072020-03-02 10:16:35 +00002234}
Paul Duffin75b902a2021-02-22 12:13:13 +00002235`),
Paul Duffin75b902a2021-02-22 12:13:13 +00002236 checkVersionedAndroidBpContents(`
2237// This is auto-generated. DO NOT EDIT.
Paul Duffina04c1072020-03-02 10:16:35 +00002238
2239cc_prebuilt_library_headers {
Paul Duffin75b902a2021-02-22 12:13:13 +00002240 name: "mysdk_mynativeheaders@current",
2241 sdk_member_name: "mynativeheaders",
Paul Duffind99d9972020-09-29 16:00:55 +01002242 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002243 apex_available: ["//apex_available:platform"],
Paul Duffina04c1072020-03-02 10:16:35 +00002244 host_supported: true,
Paul Duffin0174d8d2020-03-11 18:42:08 +00002245 stl: "none",
Martin Stjernholm89238f42020-07-10 00:14:03 +01002246 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002247 export_system_include_dirs: ["common_os/include/myinclude"],
Paul Duffina04c1072020-03-02 10:16:35 +00002248 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002249 host: {
2250 enabled: false,
2251 },
Paul Duffina04c1072020-03-02 10:16:35 +00002252 android: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002253 export_include_dirs: ["android/include/myinclude-android"],
Paul Duffina04c1072020-03-02 10:16:35 +00002254 },
2255 linux_glibc: {
Paul Duffin86b02a72021-02-22 11:50:04 +00002256 export_include_dirs: ["linux_glibc/include/myinclude-host"],
Paul Duffina04c1072020-03-02 10:16:35 +00002257 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002258 linux_glibc_x86_64: {
2259 enabled: true,
2260 },
2261 linux_glibc_x86: {
2262 enabled: true,
2263 },
Paul Duffina04c1072020-03-02 10:16:35 +00002264 },
Paul Duffina04c1072020-03-02 10:16:35 +00002265}
2266
2267sdk_snapshot {
2268 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002269 visibility: ["//visibility:public"],
Paul Duffina04c1072020-03-02 10:16:35 +00002270 host_supported: true,
2271 native_header_libs: ["mysdk_mynativeheaders@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002272 target: {
2273 host: {
2274 enabled: false,
2275 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002276 linux_glibc_x86_64: {
2277 enabled: true,
2278 },
2279 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002280 enabled: true,
2281 },
2282 },
Paul Duffina04c1072020-03-02 10:16:35 +00002283}
2284`),
2285 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002286myinclude/Test.h -> common_os/include/myinclude/Test.h
2287myinclude-android/AndroidTest.h -> android/include/myinclude-android/AndroidTest.h
2288myinclude-host/HostTest.h -> linux_glibc/include/myinclude-host/HostTest.h
Paul Duffina04c1072020-03-02 10:16:35 +00002289`),
2290 )
2291}
Martin Stjernholm10566a02020-03-24 01:19:52 +00002292
2293func TestSystemSharedLibPropagation(t *testing.T) {
2294 result := testSdkWithCc(t, `
2295 sdk {
2296 name: "mysdk",
Colin Cross6b8f4252021-07-22 11:39:44 -07002297 native_shared_libs: ["sslnil", "sslempty", "sslnonempty"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002298 }
2299
2300 cc_library {
2301 name: "sslnil",
2302 host_supported: true,
2303 }
2304
2305 cc_library {
2306 name: "sslempty",
2307 system_shared_libs: [],
2308 }
2309
2310 cc_library {
2311 name: "sslnonempty",
2312 system_shared_libs: ["sslnil"],
2313 }
2314 `)
2315
Paul Duffin36474d32021-03-12 12:19:43 +00002316 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002317 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002318// This is auto-generated. DO NOT EDIT.
2319
2320cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002321 name: "sslnil",
2322 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002323 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002324 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002325 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002326 arch: {
2327 arm64: {
2328 srcs: ["arm64/lib/sslnil.so"],
2329 },
2330 arm: {
2331 srcs: ["arm/lib/sslnil.so"],
2332 },
2333 },
2334}
2335
2336cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002337 name: "sslempty",
2338 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002339 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002340 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002341 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002342 system_shared_libs: [],
2343 arch: {
2344 arm64: {
2345 srcs: ["arm64/lib/sslempty.so"],
2346 },
2347 arm: {
2348 srcs: ["arm/lib/sslempty.so"],
2349 },
2350 },
2351}
2352
2353cc_prebuilt_library_shared {
Martin Stjernholm10566a02020-03-24 01:19:52 +00002354 name: "sslnonempty",
2355 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002356 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002357 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002358 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002359 system_shared_libs: ["sslnil"],
2360 arch: {
2361 arm64: {
2362 srcs: ["arm64/lib/sslnonempty.so"],
2363 },
2364 arm: {
2365 srcs: ["arm/lib/sslnonempty.so"],
2366 },
2367 },
2368}
Colin Cross6b8f4252021-07-22 11:39:44 -07002369`))
Martin Stjernholm10566a02020-03-24 01:19:52 +00002370
2371 result = testSdkWithCc(t, `
2372 sdk {
2373 name: "mysdk",
2374 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002375 native_shared_libs: ["sslvariants"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002376 }
2377
2378 cc_library {
2379 name: "sslvariants",
2380 host_supported: true,
2381 target: {
2382 android: {
2383 system_shared_libs: [],
2384 },
2385 },
2386 }
2387 `)
2388
Paul Duffin36474d32021-03-12 12:19:43 +00002389 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002390 checkUnversionedAndroidBpContents(`
Martin Stjernholm10566a02020-03-24 01:19:52 +00002391// This is auto-generated. DO NOT EDIT.
2392
2393cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002394 name: "sslvariants",
2395 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002396 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002397 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002398 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002399 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002400 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002401 host: {
2402 enabled: false,
2403 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002404 android: {
2405 system_shared_libs: [],
2406 },
2407 android_arm64: {
2408 srcs: ["android/arm64/lib/sslvariants.so"],
2409 },
2410 android_arm: {
2411 srcs: ["android/arm/lib/sslvariants.so"],
2412 },
2413 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002414 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002415 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2416 },
2417 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002418 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002419 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2420 },
2421 },
2422}
Paul Duffin75b902a2021-02-22 12:13:13 +00002423`),
2424 checkVersionedAndroidBpContents(`
2425// This is auto-generated. DO NOT EDIT.
Martin Stjernholm10566a02020-03-24 01:19:52 +00002426
2427cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002428 name: "mysdk_sslvariants@current",
2429 sdk_member_name: "sslvariants",
Paul Duffind99d9972020-09-29 16:00:55 +01002430 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002431 apex_available: ["//apex_available:platform"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002432 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002433 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002434 compile_multilib: "both",
Martin Stjernholm10566a02020-03-24 01:19:52 +00002435 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002436 host: {
2437 enabled: false,
2438 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002439 android: {
2440 system_shared_libs: [],
2441 },
2442 android_arm64: {
2443 srcs: ["android/arm64/lib/sslvariants.so"],
2444 },
2445 android_arm: {
2446 srcs: ["android/arm/lib/sslvariants.so"],
2447 },
2448 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002449 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002450 srcs: ["linux_glibc/x86_64/lib/sslvariants.so"],
2451 },
2452 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002453 enabled: true,
Martin Stjernholm10566a02020-03-24 01:19:52 +00002454 srcs: ["linux_glibc/x86/lib/sslvariants.so"],
2455 },
2456 },
2457}
2458
2459sdk_snapshot {
2460 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002461 visibility: ["//visibility:public"],
Martin Stjernholm10566a02020-03-24 01:19:52 +00002462 host_supported: true,
Colin Cross6b8f4252021-07-22 11:39:44 -07002463 native_shared_libs: ["mysdk_sslvariants@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002464 target: {
2465 host: {
2466 enabled: false,
2467 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002468 linux_glibc_x86_64: {
2469 enabled: true,
2470 },
2471 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002472 enabled: true,
2473 },
2474 },
Martin Stjernholm10566a02020-03-24 01:19:52 +00002475}
2476`))
2477}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002478
2479func TestStubsLibrary(t *testing.T) {
2480 result := testSdkWithCc(t, `
2481 sdk {
2482 name: "mysdk",
2483 native_shared_libs: ["stubslib"],
2484 }
2485
2486 cc_library {
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002487 name: "internaldep",
2488 }
2489
2490 cc_library {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002491 name: "stubslib",
Martin Stjernholmcc330d62020-04-21 20:45:35 +01002492 shared_libs: ["internaldep"],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002493 stubs: {
2494 symbol_file: "some/where/stubslib.map.txt",
2495 versions: ["1", "2", "3"],
2496 },
2497 }
2498 `)
2499
Paul Duffin36474d32021-03-12 12:19:43 +00002500 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002501 checkUnversionedAndroidBpContents(`
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002502// This is auto-generated. DO NOT EDIT.
2503
2504cc_prebuilt_library_shared {
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002505 name: "stubslib",
2506 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002507 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002508 apex_available: ["//apex_available:platform"],
Martin Stjernholm89238f42020-07-10 00:14:03 +01002509 compile_multilib: "both",
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002510 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002511 versions: [
2512 "1",
2513 "2",
2514 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002515 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002516 ],
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002517 },
2518 arch: {
2519 arm64: {
2520 srcs: ["arm64/lib/stubslib.so"],
2521 },
2522 arm: {
2523 srcs: ["arm/lib/stubslib.so"],
2524 },
2525 },
2526}
Martin Stjernholmc5dd4f72020-04-01 20:38:01 +01002527`))
2528}
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002529
2530func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) {
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002531 result := testSdkWithCc(t, `
2532 sdk {
2533 name: "mysdk",
2534 host_supported: true,
2535 native_shared_libs: ["stubslib"],
2536 }
2537
2538 cc_library {
2539 name: "internaldep",
2540 host_supported: true,
2541 }
2542
2543 cc_library {
2544 name: "stubslib",
2545 host_supported: true,
2546 shared_libs: ["internaldep"],
2547 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(`
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002556// This is auto-generated. DO NOT EDIT.
2557
2558cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002559 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"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002563 host_supported: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002564 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002565 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002566 versions: [
2567 "1",
2568 "2",
2569 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002570 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002571 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002572 },
2573 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002574 host: {
2575 enabled: false,
2576 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002577 android_arm64: {
2578 srcs: ["android/arm64/lib/stubslib.so"],
2579 },
2580 android_arm: {
2581 srcs: ["android/arm/lib/stubslib.so"],
2582 },
2583 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002584 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002585 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2586 },
2587 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002588 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002589 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2590 },
2591 },
2592}
Paul Duffin75b902a2021-02-22 12:13:13 +00002593`),
2594 checkVersionedAndroidBpContents(`
2595// This is auto-generated. DO NOT EDIT.
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002596
2597cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002598 name: "mysdk_stubslib@current",
2599 sdk_member_name: "stubslib",
Paul Duffind99d9972020-09-29 16:00:55 +01002600 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002601 apex_available: ["//apex_available:platform"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002602 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002603 installable: false,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002604 compile_multilib: "both",
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002605 stubs: {
Martin Stjernholm618b6712020-09-24 16:53:04 +01002606 versions: [
2607 "1",
2608 "2",
2609 "3",
Jiyong Parkd4a3a132021-03-17 20:21:35 +09002610 "current",
Martin Stjernholm618b6712020-09-24 16:53:04 +01002611 ],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002612 },
2613 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002614 host: {
2615 enabled: false,
2616 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002617 android_arm64: {
2618 srcs: ["android/arm64/lib/stubslib.so"],
2619 },
2620 android_arm: {
2621 srcs: ["android/arm/lib/stubslib.so"],
2622 },
2623 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002624 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002625 srcs: ["linux_glibc/x86_64/lib/stubslib.so"],
2626 },
2627 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002628 enabled: true,
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002629 srcs: ["linux_glibc/x86/lib/stubslib.so"],
2630 },
2631 },
2632}
2633
2634sdk_snapshot {
2635 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002636 visibility: ["//visibility:public"],
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002637 host_supported: true,
2638 native_shared_libs: ["mysdk_stubslib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002639 target: {
2640 host: {
2641 enabled: false,
2642 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002643 linux_glibc_x86_64: {
2644 enabled: true,
2645 },
2646 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002647 enabled: true,
2648 },
2649 },
Paul Duffin7a1f7f32020-05-04 15:32:08 +01002650}
2651`))
2652}
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002653
2654func TestUniqueHostSoname(t *testing.T) {
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002655 result := testSdkWithCc(t, `
2656 sdk {
2657 name: "mysdk",
2658 host_supported: true,
2659 native_shared_libs: ["mylib"],
2660 }
2661
2662 cc_library {
2663 name: "mylib",
2664 host_supported: true,
2665 unique_host_soname: true,
2666 }
2667 `)
2668
Paul Duffin36474d32021-03-12 12:19:43 +00002669 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002670 checkUnversionedAndroidBpContents(`
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002671// This is auto-generated. DO NOT EDIT.
2672
2673cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002674 name: "mylib",
2675 prefer: false,
Paul Duffind99d9972020-09-29 16:00:55 +01002676 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002677 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002678 host_supported: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002679 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002680 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002681 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002682 host: {
2683 enabled: false,
2684 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002685 android_arm64: {
2686 srcs: ["android/arm64/lib/mylib.so"],
2687 },
2688 android_arm: {
2689 srcs: ["android/arm/lib/mylib.so"],
2690 },
2691 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002692 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002693 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2694 },
2695 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002696 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002697 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2698 },
2699 },
2700}
Paul Duffin75b902a2021-02-22 12:13:13 +00002701`),
2702 checkVersionedAndroidBpContents(`
2703// This is auto-generated. DO NOT EDIT.
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002704
2705cc_prebuilt_library_shared {
Paul Duffin75b902a2021-02-22 12:13:13 +00002706 name: "mysdk_mylib@current",
2707 sdk_member_name: "mylib",
Paul Duffind99d9972020-09-29 16:00:55 +01002708 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002709 apex_available: ["//apex_available:platform"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002710 host_supported: true,
Paul Duffin75b902a2021-02-22 12:13:13 +00002711 installable: false,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002712 unique_host_soname: true,
Martin Stjernholm89238f42020-07-10 00:14:03 +01002713 compile_multilib: "both",
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002714 target: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002715 host: {
2716 enabled: false,
2717 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002718 android_arm64: {
2719 srcs: ["android/arm64/lib/mylib.so"],
2720 },
2721 android_arm: {
2722 srcs: ["android/arm/lib/mylib.so"],
2723 },
2724 linux_glibc_x86_64: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002725 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002726 srcs: ["linux_glibc/x86_64/lib/mylib-host.so"],
2727 },
2728 linux_glibc_x86: {
Jiyong Park8fe14e62020-10-19 22:47:34 +09002729 enabled: true,
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002730 srcs: ["linux_glibc/x86/lib/mylib-host.so"],
2731 },
2732 },
2733}
2734
2735sdk_snapshot {
2736 name: "mysdk@current",
Paul Duffind99d9972020-09-29 16:00:55 +01002737 visibility: ["//visibility:public"],
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002738 host_supported: true,
2739 native_shared_libs: ["mysdk_mylib@current"],
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002740 target: {
2741 host: {
2742 enabled: false,
2743 },
Jiyong Park8fe14e62020-10-19 22:47:34 +09002744 linux_glibc_x86_64: {
2745 enabled: true,
2746 },
2747 linux_glibc_x86: {
Martin Stjernholmcaa47d72020-07-11 04:52:24 +01002748 enabled: true,
2749 },
2750 },
Martin Stjernholm47ed3522020-06-17 22:52:25 +01002751}
2752`),
2753 checkAllCopyRules(`
2754.intermediates/mylib/android_arm64_armv8-a_shared/mylib.so -> android/arm64/lib/mylib.so
2755.intermediates/mylib/android_arm_armv7-a-neon_shared/mylib.so -> android/arm/lib/mylib.so
2756.intermediates/mylib/linux_glibc_x86_64_shared/mylib-host.so -> linux_glibc/x86_64/lib/mylib-host.so
2757.intermediates/mylib/linux_glibc_x86_shared/mylib-host.so -> linux_glibc/x86/lib/mylib-host.so
2758`),
2759 )
2760}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002761
2762func TestNoSanitizerMembers(t *testing.T) {
2763 result := testSdkWithCc(t, `
2764 sdk {
2765 name: "mysdk",
2766 native_shared_libs: ["mynativelib"],
2767 }
2768
2769 cc_library_shared {
2770 name: "mynativelib",
2771 srcs: ["Test.cpp"],
Paul Duffin86b02a72021-02-22 11:50:04 +00002772 export_include_dirs: ["myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002773 arch: {
2774 arm64: {
2775 export_system_include_dirs: ["arm64/include"],
2776 sanitize: {
2777 hwaddress: true,
2778 },
2779 },
2780 },
2781 }
2782 `)
2783
Paul Duffin1822a0a2021-03-21 12:56:33 +00002784 // Mixing the snapshot with the source (irrespective of which one is preferred) causes a problem
2785 // due to missing variants.
2786 // TODO(b/183204176): Remove this and fix the cause.
2787 snapshotWithSourceErrorHandler := android.FixtureExpectsAtLeastOneErrorMatchingPattern(`\QReplaceDependencies could not find identical variant {os:android,image:,arch:arm64_armv8-a,sdk:,link:shared,version:} for module mynativelib\E`)
2788
Paul Duffin36474d32021-03-12 12:19:43 +00002789 CheckSnapshot(t, result, "mysdk", "",
Paul Duffin75b902a2021-02-22 12:13:13 +00002790 checkUnversionedAndroidBpContents(`
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002791// This is auto-generated. DO NOT EDIT.
2792
2793cc_prebuilt_library_shared {
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002794 name: "mynativelib",
2795 prefer: false,
2796 visibility: ["//visibility:public"],
Martin Stjernholm1e041092020-11-03 00:11:09 +00002797 apex_available: ["//apex_available:platform"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002798 compile_multilib: "both",
Paul Duffin86b02a72021-02-22 11:50:04 +00002799 export_include_dirs: ["include/myinclude"],
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002800 arch: {
2801 arm64: {
2802 export_system_include_dirs: ["arm64/include/arm64/include"],
2803 },
2804 arm: {
2805 srcs: ["arm/lib/mynativelib.so"],
2806 },
2807 },
2808}
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002809`),
2810 checkAllCopyRules(`
Paul Duffin86b02a72021-02-22 11:50:04 +00002811myinclude/Test.h -> include/myinclude/Test.h
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002812arm64/include/Arm64Test.h -> arm64/include/arm64/include/Arm64Test.h
Paul Duffin1822a0a2021-03-21 12:56:33 +00002813.intermediates/mynativelib/android_arm_armv7-a-neon_shared/mynativelib.so -> arm/lib/mynativelib.so
2814`),
2815 snapshotTestErrorHandler(checkSnapshotWithSourcePreferred, snapshotWithSourceErrorHandler),
2816 snapshotTestErrorHandler(checkSnapshotPreferredWithSource, snapshotWithSourceErrorHandler),
Martin Stjernholm59e0c7a2020-10-28 23:38:33 +00002817 )
2818}