Add stl property support for bp2build
Test: mixed_libc
Test: USE_BAZEL_ANALYSIS=1 m libbase
Change-Id: If56d4a728de3ae4022cc9dadadc9bf8b952f9eaf
diff --git a/android/bazel.go b/android/bazel.go
index 9e8d2e3..962a8f0e 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -223,13 +223,9 @@
"libbase_ndk", // http://b/186826477, cc_library, no such target '//build/bazel/platforms/os:darwin' when --platforms //build/bazel/platforms:android_x86 is added
// libcxx
"libBionicBenchmarksUtils", // cc_library_static, fatal error: 'map' file not found, from libcxx
- "fmtlib", // cc_library_static, fatal error: 'cassert' file not found, from libcxx
- "fmtlib_ndk", // cc_library_static, fatal error: 'cassert' file not found
- "liblog", // http://b/186822772: cc_library, 'sys/cdefs.h' file not found
- "libbase", // Requires liblog. http://b/186826479, cc_library, fatal error: 'memory' file not found, from libcxx.
- // Also depends on fmtlib.
+ "libbase", // Depends on fmtlib via static_libs and also whole_static_libs, which results in bazel errors.
- "libfdtrack", // depends on STL
+ "libfdtrack", // depends on liblzma and libbase
"libseccomp_policy", // depends on libbase
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 1b38a75..e3b164d 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -254,6 +254,7 @@
srcs bazel.LabelListAttribute
rtti bazel.BoolAttribute
+ stl *string
localIncludes bazel.StringListAttribute
absoluteIncludes bazel.StringListAttribute
@@ -349,6 +350,24 @@
srcs, cSrcs, asSrcs := groupSrcsByExtension(ctx, srcs)
+ var stl *string = nil
+ stlPropsByArch := module.GetArchVariantProperties(ctx, &StlProperties{})
+ for _, configToProps := range stlPropsByArch {
+ for _, props := range configToProps {
+ if stlProps, ok := props.(*StlProperties); ok {
+ if stlProps.Stl != nil {
+ if stl == nil {
+ stl = stlProps.Stl
+ } else {
+ if stl != stlProps.Stl {
+ ctx.ModuleErrorf("Unsupported conversion: module with different stl for different variants: %s and %s", *stl, stlProps.Stl)
+ }
+ }
+ }
+ }
+ }
+ }
+
return compilerAttributes{
copts: copts,
srcs: srcs,
@@ -358,6 +377,7 @@
conlyFlags: conlyFlags,
cppFlags: cppFlags,
rtti: rtti,
+ stl: stl,
localIncludes: localIncludes,
absoluteIncludes: absoluteIncludes,
}
diff --git a/cc/library.go b/cc/library.go
index 9114f14..de9d01e 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -248,6 +248,7 @@
Linkopts bazel.StringListAttribute
Use_libcrt bazel.BoolAttribute
Rtti bazel.BoolAttribute
+ Stl *string
// This is shared only.
Version_script bazel.LabelAttribute
@@ -322,6 +323,7 @@
Linkopts: linkerAttrs.linkopts,
Use_libcrt: linkerAttrs.useLibcrt,
Rtti: compilerAttrs.rtti,
+ Stl: compilerAttrs.stl,
Version_script: linkerAttrs.versionScript,
@@ -2388,6 +2390,7 @@
Linkopts: linkerAttrs.linkopts,
Use_libcrt: linkerAttrs.useLibcrt,
Rtti: compilerAttrs.rtti,
+ Stl: compilerAttrs.stl,
Export_includes: exportedIncludes.Includes,
Export_system_includes: exportedIncludes.SystemIncludes,
Local_includes: compilerAttrs.localIncludes,
@@ -2408,6 +2411,7 @@
Use_libcrt: linkerAttrs.useLibcrt,
Rtti: compilerAttrs.rtti,
+ Stl: compilerAttrs.stl,
Export_includes: exportedIncludes.Includes,
Export_system_includes: exportedIncludes.SystemIncludes,
@@ -2440,6 +2444,7 @@
Linkopts bazel.StringListAttribute
Use_libcrt bazel.BoolAttribute
Rtti bazel.BoolAttribute
+ Stl *string
Export_includes bazel.StringListAttribute
Export_system_includes bazel.StringListAttribute
@@ -2463,6 +2468,7 @@
Linkopts bazel.StringListAttribute
Use_libcrt bazel.BoolAttribute
Rtti bazel.BoolAttribute
+ Stl *string
Export_includes bazel.StringListAttribute
Export_system_includes bazel.StringListAttribute