bp2build converter for cc libraries containing yacc
For cc_libraries containing .y/.yy srcs, we will generate an additional
cc_yacc_static_library target. This target will produce an .a file that
will be statically linked to the parent target.
Test: go test ./bp2build
Bug: 281546029
Change-Id: I094ba56f0a95869e5bc1e1d38b83c777192b7ddd
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 776129f..4ff5254 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -4523,3 +4523,59 @@
},
)
}
+
+func TestCcLibraryYaccConversion(t *testing.T) {
+ runCcLibraryTestCase(t, Bp2buildTestCase{
+ Description: "cc_library is built from .y/.yy files",
+ ModuleTypeUnderTest: "cc_library",
+ ModuleTypeUnderTestFactory: cc.LibraryFactory,
+ Blueprint: soongCcLibraryPreamble + `cc_library {
+ name: "a",
+ srcs: [
+ "a.cpp",
+ "a.yy",
+ ],
+ shared_libs: ["sharedlib"],
+ static_libs: ["staticlib"],
+ yacc: {
+ flags: ["someYaccFlag"],
+ gen_location_hh: true,
+ gen_position_hh: true,
+ },
+}
+cc_library_static {
+ name: "staticlib",
+ bazel_module: { bp2build_available: false },
+}
+cc_library {
+ name: "sharedlib",
+ bazel_module: { bp2build_available: false },
+}
+`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("cc_yacc_static_library", "a_yacc", AttrNameToString{
+ "src": `"a.yy"`,
+ "implementation_deps": `[":staticlib"]`,
+ "implementation_dynamic_deps": `[":sharedlib"]`,
+ "flags": `["someYaccFlag"]`,
+ "gen_location_hh": "True",
+ "gen_position_hh": "True",
+ "local_includes": `["."]`,
+ }),
+ MakeBazelTarget("cc_library_shared", "a", AttrNameToString{
+ "srcs": `["a.cpp"]`,
+ "implementation_deps": `[":staticlib"]`,
+ "implementation_dynamic_deps": `[":sharedlib"]`,
+ "implementation_whole_archive_deps": `[":a_yacc"]`,
+ "local_includes": `["."]`,
+ }),
+ MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{
+ "srcs": `["a.cpp"]`,
+ "implementation_deps": `[":staticlib"]`,
+ "implementation_dynamic_deps": `[":sharedlib"]`,
+ "implementation_whole_archive_deps": `[":a_yacc"]`,
+ "local_includes": `["."]`,
+ }),
+ },
+ })
+}