Merge "Add compile_multilib properties to all native prebuilts (reland)."

This commit is contained in:
Treehugger Robot
2020-07-20 15:19:33 +00:00
committed by Gerrit Code Review
4 changed files with 122 additions and 16 deletions

View File

@@ -466,8 +466,7 @@ func RegisterSdkMemberType(memberType SdkMemberType) {
// Base structure for all implementations of SdkMemberProperties.
//
// Contains common properties that apply across many different member types. These
// are not affected by the optimization to extract common values.
// Contains common properties that apply across many different member types.
type SdkMemberPropertiesBase struct {
// The number of unique os types supported by the member variants.
//
@@ -489,9 +488,7 @@ type SdkMemberPropertiesBase struct {
Os OsType `sdk:"keep"`
// The setting to use for the compile_multilib property.
//
// This property is set after optimization so there is no point in trying to optimize it.
Compile_multilib string `sdk:"keep"`
Compile_multilib string `android:"arch_variant"`
}
// The os prefix to use for any file paths in the sdk.

View File

@@ -140,10 +140,6 @@ func (p *nativeBinaryInfoProperties) PopulateFromVariant(ctx android.SdkMemberCo
}
func (p *nativeBinaryInfoProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) {
if p.Compile_multilib != "" {
propertySet.AddProperty("compile_multilib", p.Compile_multilib)
}
builder := ctx.SnapshotBuilder()
if p.outputFile != nil {
propertySet.AddProperty("srcs", []string{nativeBinaryPathFor(*p)})

View File

@@ -73,12 +73,16 @@ func TestSdkCompileMultilibOverride(t *testing.T) {
result := testSdkWithCc(t, `
sdk {
name: "mysdk",
device_supported: false,
host_supported: true,
native_shared_libs: ["sdkmember"],
compile_multilib: "64",
}
cc_library_shared {
name: "sdkmember",
device_supported: false,
host_supported: true,
srcs: ["Test.cpp"],
stl: "none",
compile_multilib: "64",
@@ -86,8 +90,52 @@ func TestSdkCompileMultilibOverride(t *testing.T) {
`)
result.CheckSnapshot("mysdk", "",
checkAndroidBpContents(`
// This is auto-generated. DO NOT EDIT.
cc_prebuilt_library_shared {
name: "mysdk_sdkmember@current",
sdk_member_name: "sdkmember",
device_supported: false,
host_supported: true,
installable: false,
stl: "none",
compile_multilib: "64",
arch: {
x86_64: {
srcs: ["x86_64/lib/sdkmember.so"],
},
},
}
cc_prebuilt_library_shared {
name: "sdkmember",
prefer: false,
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "64",
arch: {
x86_64: {
srcs: ["x86_64/lib/sdkmember.so"],
},
},
}
sdk_snapshot {
name: "mysdk@current",
device_supported: false,
host_supported: true,
native_shared_libs: ["mysdk_sdkmember@current"],
target: {
linux_glibc: {
compile_multilib: "64",
},
},
}
`),
checkAllCopyRules(`
.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> arm64/lib/sdkmember.so
.intermediates/sdkmember/linux_glibc_x86_64_shared/sdkmember.so -> x86_64/lib/sdkmember.so
`))
}
@@ -271,6 +319,7 @@ cc_prebuilt_object {
name: "mysdk_crtobj@current",
sdk_member_name: "crtobj",
stl: "none",
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/crtobj.o"],
@@ -285,6 +334,7 @@ cc_prebuilt_object {
name: "crtobj",
prefer: false,
stl: "none",
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/crtobj.o"],
@@ -378,6 +428,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "mynativelib",
installable: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -394,6 +445,7 @@ cc_prebuilt_library_shared {
name: "mynativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -621,9 +673,9 @@ cc_prebuilt_binary {
host_supported: true,
installable: false,
stl: "none",
compile_multilib: "both",
static_executable: true,
nocrt: true,
compile_multilib: "both",
arch: {
x86_64: {
srcs: ["x86_64/bin/linker"],
@@ -640,9 +692,9 @@ cc_prebuilt_binary {
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "both",
static_executable: true,
nocrt: true,
compile_multilib: "both",
arch: {
x86_64: {
srcs: ["x86_64/bin/linker"],
@@ -702,6 +754,7 @@ cc_prebuilt_library_shared {
],
installable: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -723,6 +776,7 @@ cc_prebuilt_library_shared {
"apex2",
],
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -824,6 +878,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "mynativelib",
installable: false,
stl: "none",
compile_multilib: "both",
shared_libs: [
"mysdk_myothernativelib@current",
"libc",
@@ -842,6 +897,7 @@ cc_prebuilt_library_shared {
name: "mynativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
shared_libs: [
"myothernativelib",
"libc",
@@ -861,6 +917,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "myothernativelib",
installable: false,
stl: "none",
compile_multilib: "both",
system_shared_libs: ["libm"],
arch: {
arm64: {
@@ -876,6 +933,7 @@ cc_prebuilt_library_shared {
name: "myothernativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
system_shared_libs: ["libm"],
arch: {
arm64: {
@@ -892,6 +950,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "mysystemnativelib",
installable: false,
stl: "none",
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/mysystemnativelib.so"],
@@ -906,6 +965,7 @@ cc_prebuilt_library_shared {
name: "mysystemnativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/mysystemnativelib.so"],
@@ -974,6 +1034,7 @@ cc_prebuilt_library_shared {
installable: false,
sdk_version: "minimum",
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -994,6 +1055,7 @@ cc_prebuilt_library_shared {
host_supported: true,
sdk_version: "minimum",
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1070,12 +1132,18 @@ cc_prebuilt_library_shared {
installable: false,
stl: "none",
target: {
linux_glibc: {
compile_multilib: "both",
},
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
},
linux_glibc_x86: {
srcs: ["linux_glibc/x86/lib/mynativelib.so"],
},
windows: {
compile_multilib: "64",
},
windows_x86_64: {
srcs: ["windows/x86_64/lib/mynativelib.dll"],
},
@@ -1089,12 +1157,18 @@ cc_prebuilt_library_shared {
host_supported: true,
stl: "none",
target: {
linux_glibc: {
compile_multilib: "both",
},
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
},
linux_glibc_x86: {
srcs: ["linux_glibc/x86/lib/mynativelib.so"],
},
windows: {
compile_multilib: "64",
},
windows_x86_64: {
srcs: ["windows/x86_64/lib/mynativelib.dll"],
},
@@ -1151,6 +1225,7 @@ cc_prebuilt_library_static {
sdk_member_name: "mynativelib",
installable: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1168,6 +1243,7 @@ cc_prebuilt_library_static {
name: "mynativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1236,6 +1312,7 @@ cc_prebuilt_library_static {
host_supported: true,
installable: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1255,6 +1332,7 @@ cc_prebuilt_library_static {
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1315,6 +1393,7 @@ cc_prebuilt_library {
sdk_member_name: "mynativelib",
installable: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1340,6 +1419,7 @@ cc_prebuilt_library {
name: "mynativelib",
prefer: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1416,6 +1496,7 @@ cc_prebuilt_library_static {
host_supported: true,
installable: false,
stl: "none",
compile_multilib: "64",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1431,6 +1512,7 @@ cc_prebuilt_library_static {
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "64",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1483,6 +1565,7 @@ cc_prebuilt_library_headers {
name: "mysdk_mynativeheaders@current",
sdk_member_name: "mynativeheaders",
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
}
@@ -1490,6 +1573,7 @@ cc_prebuilt_library_headers {
name: "mynativeheaders",
prefer: false,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
}
@@ -1532,6 +1616,7 @@ cc_prebuilt_library_headers {
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
}
@@ -1541,6 +1626,7 @@ cc_prebuilt_library_headers {
device_supported: false,
host_supported: true,
stl: "none",
compile_multilib: "both",
export_include_dirs: ["include/include"],
}
@@ -1590,6 +1676,7 @@ cc_prebuilt_library_headers {
sdk_member_name: "mynativeheaders",
host_supported: true,
stl: "none",
compile_multilib: "both",
export_system_include_dirs: ["common_os/include/include"],
target: {
android: {
@@ -1606,6 +1693,7 @@ cc_prebuilt_library_headers {
prefer: false,
host_supported: true,
stl: "none",
compile_multilib: "both",
export_system_include_dirs: ["common_os/include/include"],
target: {
android: {
@@ -1662,6 +1750,7 @@ cc_prebuilt_library_shared {
name: "mysdk_sslnil@current",
sdk_member_name: "sslnil",
installable: false,
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/sslnil.so"],
@@ -1675,6 +1764,7 @@ cc_prebuilt_library_shared {
cc_prebuilt_library_shared {
name: "sslnil",
prefer: false,
compile_multilib: "both",
arch: {
arm64: {
srcs: ["arm64/lib/sslnil.so"],
@@ -1689,6 +1779,7 @@ cc_prebuilt_library_shared {
name: "mysdk_sslempty@current",
sdk_member_name: "sslempty",
installable: false,
compile_multilib: "both",
system_shared_libs: [],
arch: {
arm64: {
@@ -1703,6 +1794,7 @@ cc_prebuilt_library_shared {
cc_prebuilt_library_shared {
name: "sslempty",
prefer: false,
compile_multilib: "both",
system_shared_libs: [],
arch: {
arm64: {
@@ -1718,6 +1810,7 @@ cc_prebuilt_library_shared {
name: "mysdk_sslnonempty@current",
sdk_member_name: "sslnonempty",
installable: false,
compile_multilib: "both",
system_shared_libs: ["mysdk_sslnil@current"],
arch: {
arm64: {
@@ -1732,6 +1825,7 @@ cc_prebuilt_library_shared {
cc_prebuilt_library_shared {
name: "sslnonempty",
prefer: false,
compile_multilib: "both",
system_shared_libs: ["sslnil"],
arch: {
arm64: {
@@ -1780,6 +1874,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "sslvariants",
host_supported: true,
installable: false,
compile_multilib: "both",
target: {
android: {
system_shared_libs: [],
@@ -1803,6 +1898,7 @@ cc_prebuilt_library_shared {
name: "sslvariants",
prefer: false,
host_supported: true,
compile_multilib: "both",
target: {
android: {
system_shared_libs: [],
@@ -1859,6 +1955,7 @@ cc_prebuilt_library_shared {
name: "mysdk_stubslib@current",
sdk_member_name: "stubslib",
installable: false,
compile_multilib: "both",
stubs: {
versions: ["3"],
},
@@ -1875,6 +1972,7 @@ cc_prebuilt_library_shared {
cc_prebuilt_library_shared {
name: "stubslib",
prefer: false,
compile_multilib: "both",
stubs: {
versions: ["3"],
},
@@ -1928,6 +2026,7 @@ cc_prebuilt_library_shared {
sdk_member_name: "stubslib",
host_supported: true,
installable: false,
compile_multilib: "both",
stubs: {
versions: ["3"],
},
@@ -1951,6 +2050,7 @@ cc_prebuilt_library_shared {
name: "stubslib",
prefer: false,
host_supported: true,
compile_multilib: "both",
stubs: {
versions: ["3"],
},
@@ -2003,6 +2103,7 @@ cc_prebuilt_library_shared {
host_supported: true,
installable: false,
unique_host_soname: true,
compile_multilib: "both",
target: {
android_arm64: {
srcs: ["android/arm64/lib/mylib.so"],
@@ -2024,6 +2125,7 @@ cc_prebuilt_library_shared {
prefer: false,
host_supported: true,
unique_host_soname: true,
compile_multilib: "both",
target: {
android_arm64: {
srcs: ["android/arm64/lib/mylib.so"],

View File

@@ -794,6 +794,17 @@ func (s *snapshotBuilder) isInternalMember(memberName string) bool {
return !ok
}
// Add the properties from the given SdkMemberProperties to the blueprint
// property set. This handles common properties in SdkMemberPropertiesBase and
// calls the member-specific AddToPropertySet for the rest.
func addSdkMemberPropertiesToSet(ctx *memberContext, memberProperties android.SdkMemberProperties, targetPropertySet android.BpPropertySet) {
if memberProperties.Base().Compile_multilib != "" {
targetPropertySet.AddProperty("compile_multilib", memberProperties.Base().Compile_multilib)
}
memberProperties.AddToPropertySet(ctx, targetPropertySet)
}
type sdkMemberRef struct {
memberType android.SdkMemberType
variant android.SdkAware
@@ -1009,7 +1020,7 @@ func (osInfo *osTypeSpecificInfo) addToPropertySet(ctx *memberContext, bpModule
}
// Add the os specific but arch independent properties to the module.
osInfo.Properties.AddToPropertySet(ctx, osPropertySet)
addSdkMemberPropertiesToSet(ctx, osInfo.Properties, osPropertySet)
// Add arch (and possibly os) specific sections for each set of arch (and possibly
// os) specific properties.
@@ -1111,11 +1122,11 @@ func (archInfo *archTypeSpecificInfo) optimizeProperties(ctx *memberContext, com
func (archInfo *archTypeSpecificInfo) addToPropertySet(ctx *memberContext, archPropertySet android.BpPropertySet, archOsPrefix string) {
archTypeName := archInfo.archType.Name
archTypePropertySet := archPropertySet.AddPropertySet(archOsPrefix + archTypeName)
archInfo.Properties.AddToPropertySet(ctx, archTypePropertySet)
addSdkMemberPropertiesToSet(ctx, archInfo.Properties, archTypePropertySet)
for _, linkInfo := range archInfo.linkInfos {
linkPropertySet := archTypePropertySet.AddPropertySet(linkInfo.linkType)
linkInfo.Properties.AddToPropertySet(ctx, linkPropertySet)
addSdkMemberPropertiesToSet(ctx, linkInfo.Properties, linkPropertySet)
}
}
@@ -1221,7 +1232,7 @@ func (s *sdk) createMemberSnapshot(ctx *memberContext, member *sdkMember, bpModu
extractCommonProperties(ctx.sdkMemberContext, commonValueExtractor, commonProperties, osSpecificPropertiesContainers)
// Add the common properties to the module.
commonProperties.AddToPropertySet(ctx, bpModule)
addSdkMemberPropertiesToSet(ctx, commonProperties, bpModule)
// Create a target property set into which target specific properties can be
// added.