Merge "Refactor LTO"
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 5da50cd..875ed34 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -141,6 +141,7 @@
"external/f2fs-tools": Bp2BuildDefaultTrue,
"external/flac": Bp2BuildDefaultTrueRecursively,
"external/fmtlib": Bp2BuildDefaultTrueRecursively,
+ "external/fsverity-utils": Bp2BuildDefaultTrueRecursively,
"external/guava": Bp2BuildDefaultTrueRecursively,
"external/google-benchmark": Bp2BuildDefaultTrueRecursively,
"external/googletest": Bp2BuildDefaultTrueRecursively,
@@ -346,6 +347,7 @@
"system/core/libprocessgroup": Bp2BuildDefaultTrue,
"system/core/libprocessgroup/cgrouprc": Bp2BuildDefaultTrue,
"system/core/libprocessgroup/cgrouprc_format": Bp2BuildDefaultTrue,
+ "system/core/libsparse": Bp2BuildDefaultTrueRecursively,
"system/core/libsuspend": Bp2BuildDefaultTrue,
"system/core/libsystem": Bp2BuildDefaultTrueRecursively,
"system/core/libsysutils": Bp2BuildDefaultTrueRecursively,
@@ -354,7 +356,9 @@
"system/core/mkbootfs": Bp2BuildDefaultTrueRecursively,
"system/core/property_service/libpropertyinfoparser": Bp2BuildDefaultTrueRecursively,
"system/core/property_service/libpropertyinfoserializer": Bp2BuildDefaultTrueRecursively,
+ "system/extras/f2fs_utils": Bp2BuildDefaultTrueRecursively,
"system/extras/toolchain-extras": Bp2BuildDefaultTrue,
+ "system/extras/verity": Bp2BuildDefaultTrueRecursively,
"system/hardware/interfaces/media": Bp2BuildDefaultTrueRecursively,
"system/incremental_delivery/incfs": Bp2BuildDefaultTrue,
"system/libartpalette": Bp2BuildDefaultTrueRecursively,
@@ -384,6 +388,7 @@
"system/memory/libion": Bp2BuildDefaultTrueRecursively,
"system/memory/libmemunreachable": Bp2BuildDefaultTrueRecursively,
"system/sepolicy/apex": Bp2BuildDefaultTrueRecursively,
+ "system/security/fsverity": Bp2BuildDefaultTrueRecursively,
"system/testing/gtest_extras": Bp2BuildDefaultTrueRecursively,
"system/timezone/apex": Bp2BuildDefaultTrueRecursively,
"system/timezone/output_data": Bp2BuildDefaultTrueRecursively,
@@ -577,12 +582,11 @@
//frameworks/base/core/java
"IDropBoxManagerService_aidl",
- //system/core/libsparse
- "libsparse",
-
//system/extras/ext4_utils
"libext4_utils",
"mke2fs_conf",
+ "mkuserimg_mke2fs",
+ "blk_alloc_to_base_fs",
//system/extras/libfec
"libfec",
@@ -590,10 +594,6 @@
//system/extras/squashfs_utils
"libsquashfs_utils",
- //system/extras/verity/fec
- "fec",
- "boot_signer",
-
//packages/apps/Car/libs/car-ui-lib/car-ui-androidx
// genrule dependencies for java_imports
"car-ui-androidx-annotation-nodeps",
@@ -837,7 +837,6 @@
"linker", // TODO(b/228316882): cc_binary uses link_crt
"versioner", // TODO(b/228313961): depends on prebuilt shared library libclang-cpp_host as a shared library, which does not supply expected providers for a shared library
- "tjbench", // TODO(b/240563612): Stem property
// requires host tools for apexer
"apexer_test", "apexer_test_host_tools", "host_apex_verifier",
@@ -1428,16 +1427,12 @@
"merge_ota",
// releasetools
- "releasetools_fsverity_metadata_generator",
"verity_utils",
"check_ota_package_signature",
"check_target_files_vintf",
"releasetools_check_target_files_vintf",
- "releasetools_verity_utils",
- "build_image",
"ota_from_target_files",
"releasetools_ota_from_target_files",
- "releasetools_build_image",
"add_img_to_target_files",
"releasetools_add_img_to_target_files",
"fsverity_metadata_generator",
@@ -1510,9 +1505,6 @@
"libadb_pairing_connection_static",
"libadb_pairing_server", "libadb_pairing_server_static",
- // TODO(b/240563612) Needing `stem` selection support for cc_binary
- "crasher",
-
// java_import[_host] issues
// tradefed prebuilts depend on libprotobuf
"prebuilt_tradefed",
diff --git a/bp2build/cc_binary_conversion_test.go b/bp2build/cc_binary_conversion_test.go
index 610a9ca..d37722b 100644
--- a/bp2build/cc_binary_conversion_test.go
+++ b/bp2build/cc_binary_conversion_test.go
@@ -1106,3 +1106,40 @@
},
})
}
+
+func TestCcBinaryStem(t *testing.T) {
+ runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{
+ description: "cc_binary with stem property",
+ blueprint: `
+cc_binary {
+ name: "foo_with_stem_simple",
+ stem: "foo",
+}
+cc_binary {
+ name: "foo_with_arch_variant_stem",
+ arch: {
+ arm: {
+ stem: "foo-arm",
+ },
+ arm64: {
+ stem: "foo-arm64",
+ },
+ },
+}
+`,
+ targets: []testBazelTarget{
+ {"cc_binary", "foo_with_stem_simple", AttrNameToString{
+ "stem": `"foo"`,
+ "local_includes": `["."]`,
+ }},
+ {"cc_binary", "foo_with_arch_variant_stem", AttrNameToString{
+ "stem": `select({
+ "//build/bazel/platforms/arch:arm": "foo-arm",
+ "//build/bazel/platforms/arch:arm64": "foo-arm64",
+ "//conditions:default": None,
+ })`,
+ "local_includes": `["."]`,
+ }},
+ },
+ })
+}
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index c2dba67..20f3bf6 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -4812,3 +4812,42 @@
},
})
}
+
+func TestCcLibraryWithStem(t *testing.T) {
+ runCcLibraryTestCase(t, Bp2buildTestCase{
+ Description: "cc_library with stem property",
+ ModuleTypeUnderTest: "cc_library_shared",
+ ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
+ Blueprint: soongCcLibraryPreamble + `
+cc_library_shared {
+ name: "foo_with_stem_simple",
+ stem: "foo",
+}
+cc_library_shared {
+ name: "foo_with_arch_variant_stem",
+ arch: {
+ arm: {
+ stem: "foo-arm",
+ },
+ arm64: {
+ stem: "foo-arm64",
+ },
+ },
+}
+`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("cc_library_shared", "foo_with_stem_simple", AttrNameToString{
+ "stem": `"foo"`,
+ "local_includes": `["."]`,
+ }),
+ MakeBazelTarget("cc_library_shared", "foo_with_arch_variant_stem", AttrNameToString{
+ "stem": `select({
+ "//build/bazel/platforms/arch:arm": "foo-arm",
+ "//build/bazel/platforms/arch:arm64": "foo-arm64",
+ "//conditions:default": None,
+ })`,
+ "local_includes": `["."]`,
+ }),
+ },
+ })
+}
diff --git a/bp2build/java_binary_host_conversion_test.go b/bp2build/java_binary_host_conversion_test.go
index e51f608..39e55c4 100644
--- a/bp2build/java_binary_host_conversion_test.go
+++ b/bp2build/java_binary_host_conversion_test.go
@@ -68,7 +68,7 @@
}),
MakeBazelTarget("java_binary", "java-binary-host-1", AttrNameToString{
"main_class": `"com.android.test.MainClass"`,
- "jvm_flags": `["-Djava.library.path=$${RUNPATH}other"]`,
+ "jvm_flags": `["-Djava.library.path=$${RUNPATH}other/jni-lib-1"]`,
"target_compatible_with": `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
"//conditions:default": [],
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 34cc574..1e83ca3 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -434,6 +434,7 @@
features bazel.StringListAttribute
+ stem bazel.StringAttribute
suffix bazel.StringAttribute
fdoProfile bazel.LabelAttribute
@@ -819,6 +820,9 @@
compilerAttrs.stubsVersions.SetSelectValue(axis, cfg, versions)
}
}
+ if stem := libraryProps.Stem; stem != nil {
+ compilerAttrs.stem.SetSelectValue(axis, cfg, stem)
+ }
if suffix := libraryProps.Suffix; suffix != nil {
compilerAttrs.suffix.SetSelectValue(axis, cfg, suffix)
}
@@ -1737,6 +1741,7 @@
type binaryLinkerAttrs struct {
Linkshared *bool
+ Stem bazel.StringAttribute
Suffix bazel.StringAttribute
}
@@ -1754,6 +1759,9 @@
// nonconfigurable attribute. Only 4 AOSP modules use this feature, defer handling
ctx.ModuleErrorf("bp2build cannot migrate a module with arch/target-specific static_executable values")
}
+ if stem := linkerProps.Stem; stem != nil {
+ attrs.Stem.SetSelectValue(axis, config, stem)
+ }
if suffix := linkerProps.Suffix; suffix != nil {
attrs.Suffix.SetSelectValue(axis, config, suffix)
}
diff --git a/cc/config/riscv64_device.go b/cc/config/riscv64_device.go
index a63d5c2..d66697c 100644
--- a/cc/config/riscv64_device.go
+++ b/cc/config/riscv64_device.go
@@ -29,12 +29,14 @@
// A temporary fix for SExtWRemoval miscompilation bug.
"-mllvm",
"-riscv-disable-sextw-removal=true",
+ "-march=rv64gc_zbb",
}
riscv64ArchVariantCflags = map[string][]string{}
riscv64Ldflags = []string{
"-Wl,--hash-style=gnu",
+ "-march=rv64gc_zbb",
}
riscv64Lldflags = append(riscv64Ldflags,
diff --git a/cc/library.go b/cc/library.go
index 98096a8..47df53e 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -408,6 +408,7 @@
sharedTargetAttrs.Stubs_symbol_file = compilerAttrs.stubsSymbolFile
}
+ sharedTargetAttrs.Stem = compilerAttrs.stem
sharedTargetAttrs.Suffix = compilerAttrs.suffix
for axis, configToProps := range m.GetArchVariantProperties(ctx, &LibraryProperties{}) {
@@ -2987,6 +2988,7 @@
Features: *features,
+ Stem: compilerAttrs.stem,
Suffix: compilerAttrs.suffix,
bazelCcHeaderAbiCheckerAttributes: bp2buildParseAbiCheckerProps(ctx, module),
@@ -3072,6 +3074,7 @@
Inject_bssl_hash bazel.BoolAttribute
+ Stem bazel.StringAttribute
Suffix bazel.StringAttribute
bazelCcHeaderAbiCheckerAttributes
diff --git a/java/java.go b/java/java.go
index a8793fe..3a80471 100644
--- a/java/java.go
+++ b/java/java.go
@@ -3104,24 +3104,15 @@
// Attribute jvm_flags
var jvmFlags bazel.StringListAttribute
if m.binaryProperties.Jni_libs != nil {
- jniLibPackages := map[string]bool{}
- for _, jniLibLabel := range android.BazelLabelForModuleDeps(ctx, m.binaryProperties.Jni_libs).Includes {
- jniLibPackage := jniLibLabel.Label
- indexOfColon := strings.Index(jniLibLabel.Label, ":")
- if indexOfColon > 0 {
- // JNI lib from other package
- jniLibPackage = jniLibLabel.Label[2:indexOfColon]
- } else if indexOfColon == 0 {
- // JNI lib in the same package of java_binary
- packageOfCurrentModule := m.GetBazelLabel(ctx, m)
- jniLibPackage = packageOfCurrentModule[2:strings.Index(packageOfCurrentModule, ":")]
- }
- if _, inMap := jniLibPackages[jniLibPackage]; !inMap {
- jniLibPackages[jniLibPackage] = true
+ jniLibPackages := []string{}
+ for _, jniLib := range m.binaryProperties.Jni_libs {
+ if jniLibModule, exists := ctx.ModuleFromName(jniLib); exists {
+ otherDir := ctx.OtherModuleDir(jniLibModule)
+ jniLibPackages = append(jniLibPackages, filepath.Join(otherDir, jniLib))
}
}
jniLibPaths := []string{}
- for jniLibPackage, _ := range jniLibPackages {
+ for _, jniLibPackage := range jniLibPackages {
// See cs/f:.*/third_party/bazel/.*java_stub_template.txt for the use of RUNPATH
jniLibPaths = append(jniLibPaths, "$${RUNPATH}"+jniLibPackage)
}
@@ -3145,9 +3136,9 @@
}
libInfo := libraryCreationInfo{
- deps: deps,
- attrs: commonAttrs,
- baseName: m.Name(),
+ deps: deps,
+ attrs: commonAttrs,
+ baseName: m.Name(),
hasKotlin: bp2BuildInfo.hasKotlin,
}
libName := createLibraryTarget(ctx, libInfo)
@@ -3189,9 +3180,9 @@
}
libInfo := libraryCreationInfo{
- deps: deps,
- attrs: commonAttrs,
- baseName: m.Name(),
+ deps: deps,
+ attrs: commonAttrs,
+ baseName: m.Name(),
hasKotlin: bp2BuildInfo.hasKotlin,
}
libName := createLibraryTarget(ctx, libInfo)
@@ -3204,9 +3195,9 @@
// libraryCreationInfo encapsulates the info needed to create java_library target from
// java_binary_host or java_test_host.
type libraryCreationInfo struct {
- deps bazel.LabelListAttribute
- attrs *javaCommonAttributes
- baseName string
+ deps bazel.LabelListAttribute
+ attrs *javaCommonAttributes
+ baseName string
hasKotlin bool
}
diff --git a/mk2rbc/mk2rbc.go b/mk2rbc/mk2rbc.go
index c0ae0c0..8225df6 100644
--- a/mk2rbc/mk2rbc.go
+++ b/mk2rbc/mk2rbc.go
@@ -870,7 +870,7 @@
}
// Safeguard against $(call inherit-product,$(PRODUCT_PATH))
- const maxMatchingFiles = 155 // temporarily increased to 155 for b/284854738
+ const maxMatchingFiles = 150
if len(matchingPaths) > maxMatchingFiles {
return []starlarkNode{ctx.newBadNode(v, "there are >%d files matching the pattern, please rewrite it", maxMatchingFiles)}
}