bp2build: split as, c, and cpp srcs for cc_library
This CL adds support for cc_library to correctly split c, as and cpp
srcs in shared/static nested props, as well as splitting
the *filegroup* deps in those props, where each filegroup is expanded
into its own c, cpp and as srcs filegroups. This ensures that the
correct sources go into cc_library_static's underlying cc_libraries for
c, cpp and as sources respectively.
See the bp2build conversion test for a better visualization.
Bug: 183064430
Test: TH
Change-Id: I29add5140672d042adff65527d8b65f4a5f0a05b
diff --git a/cc/library.go b/cc/library.go
index 5e70c51..cdac01c 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -221,25 +221,29 @@
// For bp2build conversion.
type bazelCcLibraryAttributes struct {
// Attributes pertaining to both static and shared variants.
- Srcs bazel.LabelListAttribute
+ Srcs bazel.LabelListAttribute
+ Srcs_c bazel.LabelListAttribute
+ Srcs_as bazel.LabelListAttribute
+
+ Copts bazel.StringListAttribute
+ Cppflags bazel.StringListAttribute
+ Conlyflags bazel.StringListAttribute
+ Asflags bazel.StringListAttribute
+
Hdrs bazel.LabelListAttribute
Deps bazel.LabelListAttribute
Implementation_deps bazel.LabelListAttribute
Dynamic_deps bazel.LabelListAttribute
Whole_archive_deps bazel.LabelListAttribute
- Copts bazel.StringListAttribute
Includes bazel.StringListAttribute
Linkopts bazel.StringListAttribute
- Cppflags bazel.StringListAttribute
- Srcs_c bazel.LabelListAttribute
- Conlyflags bazel.StringListAttribute
- Srcs_as bazel.LabelListAttribute
- Asflags bazel.StringListAttribute
-
// Attributes pertaining to shared variant.
- Shared_copts bazel.StringListAttribute
- Shared_srcs bazel.LabelListAttribute
+ Shared_srcs bazel.LabelListAttribute
+ Shared_srcs_c bazel.LabelListAttribute
+ Shared_srcs_as bazel.LabelListAttribute
+ Shared_copts bazel.StringListAttribute
+
Exported_deps_for_shared bazel.LabelListAttribute
Static_deps_for_shared bazel.LabelListAttribute
Dynamic_deps_for_shared bazel.LabelListAttribute
@@ -248,8 +252,11 @@
Version_script bazel.LabelAttribute
// Attributes pertaining to static variant.
- Static_copts bazel.StringListAttribute
- Static_srcs bazel.LabelListAttribute
+ Static_srcs bazel.LabelListAttribute
+ Static_srcs_c bazel.LabelListAttribute
+ Static_srcs_as bazel.LabelListAttribute
+ Static_copts bazel.StringListAttribute
+
Exported_deps_for_static bazel.LabelListAttribute
Static_deps_for_static bazel.LabelListAttribute
Dynamic_deps_for_static bazel.LabelListAttribute
@@ -302,29 +309,35 @@
srcs.Append(compilerAttrs.srcs)
attrs := &bazelCcLibraryAttributes{
- Srcs: srcs,
+ Srcs: srcs,
+ Srcs_c: compilerAttrs.cSrcs,
+ Srcs_as: compilerAttrs.asSrcs,
+
+ Copts: compilerAttrs.copts,
+ Cppflags: compilerAttrs.cppFlags,
+ Conlyflags: compilerAttrs.conlyFlags,
+ Asflags: compilerAttrs.asFlags,
+
Implementation_deps: linkerAttrs.deps,
Deps: linkerAttrs.exportedDeps,
Dynamic_deps: linkerAttrs.dynamicDeps,
Whole_archive_deps: linkerAttrs.wholeArchiveDeps,
- Copts: compilerAttrs.copts,
Includes: exportedIncludes,
Linkopts: linkerAttrs.linkopts,
- Cppflags: compilerAttrs.cppFlags,
- Srcs_c: compilerAttrs.cSrcs,
- Conlyflags: compilerAttrs.conlyFlags,
- Srcs_as: compilerAttrs.asSrcs,
- Asflags: compilerAttrs.asFlags,
- Shared_copts: sharedAttrs.copts,
Shared_srcs: sharedAttrs.srcs,
+ Shared_srcs_c: sharedAttrs.srcs_c,
+ Shared_srcs_as: sharedAttrs.srcs_as,
+ Shared_copts: sharedAttrs.copts,
Static_deps_for_shared: sharedAttrs.staticDeps,
Whole_archive_deps_for_shared: sharedAttrs.wholeArchiveDeps,
Dynamic_deps_for_shared: sharedAttrs.dynamicDeps,
Version_script: linkerAttrs.versionScript,
- Static_copts: staticAttrs.copts,
Static_srcs: staticAttrs.srcs,
+ Static_srcs_c: staticAttrs.srcs_c,
+ Static_srcs_as: staticAttrs.srcs_as,
+ Static_copts: staticAttrs.copts,
Static_deps_for_static: staticAttrs.staticDeps,
Whole_archive_deps_for_static: staticAttrs.wholeArchiveDeps,
Dynamic_deps_for_static: staticAttrs.dynamicDeps,