Add check for handcrafted BUILD file in bp2build

ag/20469925 added a handcrafted BUILD file (allowlisted in ag/20597986)
to internal master. ag/c/platform/build/soong/+/20583593/12/cc/bp2build.go#818 generates references to the targets in the BUILD file. However in tm-dev, the BUILD file doesn't exist while the .afdo files do.

One solution is to cherry-pick the BUILD file to tm-dev. However, tm-dev doesn't have vendor/google/build/soong/bp2build_allowlist.go to check in the BUILD file in bp2build.

This CL adds a check that the BUILD file exists to avoid the failure as in https://android-build.googleplex.com/builds/pending/P45724500/aosp_cf_x86_64_phone-userdebug/latest/view/logs/build_error.log in tm-qpr-dev-plus-aosp branch.

Bug: 253540178
Test: go test
Change-Id: I47fb853015ca230afe3cefe1d37728bf714624be
Merged-In: I47fb853015ca230afe3cefe1d37728bf714624be
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 598e350..3cd0b1a 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -811,21 +811,25 @@
 	m *Module,
 ) *bazel.Label {
 	for _, project := range globalAfdoProfileProjects {
-		// We handcraft a BUILD file with fdo_profile targets that use the existing profiles in the project
-		// This implementation is assuming that every afdo profile in globalAfdoProfileProjects already has
-		// an associated fdo_profile target declared in the same package.
-		// TODO(b/260714900): Handle arch-specific afdo profiles (e.g. `<module-name>-arm<64>.afdo`)
-		path := android.ExistentPathForSource(ctx, project, m.Name()+".afdo")
-		if path.Valid() {
-			// FIXME: Some profiles only exist internally and are not released to AOSP.
-			// When generated BUILD files are checked in, we'll run into merge conflict.
-			// The cc_library_shared target in AOSP won't have reference to an fdo_profile target because
-			// the profile doesn't exist. Internally, the same cc_library_shared target will
-			// have reference to the fdo_profile.
-			// For more context, see b/258682955#comment2
-			fdoProfileLabel := "//" + strings.TrimSuffix(project, "/") + ":" + m.Name()
-			return &bazel.Label{
-				Label: fdoProfileLabel,
+		// Ensure handcrafted BUILD file exists in the project
+		BUILDPath := android.ExistentPathForSource(ctx, project, "BUILD")
+		if BUILDPath.Valid() {
+			// We handcraft a BUILD file with fdo_profile targets that use the existing profiles in the project
+			// This implementation is assuming that every afdo profile in globalAfdoProfileProjects already has
+			// an associated fdo_profile target declared in the same package.
+			// TODO(b/260714900): Handle arch-specific afdo profiles (e.g. `<module-name>-arm<64>.afdo`)
+			path := android.ExistentPathForSource(ctx, project, m.Name()+".afdo")
+			if path.Valid() {
+				// FIXME: Some profiles only exist internally and are not released to AOSP.
+				// When generated BUILD files are checked in, we'll run into merge conflict.
+				// The cc_library_shared target in AOSP won't have reference to an fdo_profile target because
+				// the profile doesn't exist. Internally, the same cc_library_shared target will
+				// have reference to the fdo_profile.
+				// For more context, see b/258682955#comment2
+				fdoProfileLabel := "//" + strings.TrimSuffix(project, "/") + ":" + m.Name()
+				return &bazel.Label{
+					Label: fdoProfileLabel,
+				}
 			}
 		}
 	}