Loading bp2build/cc_binary_conversion_test.go +3 −3 Original line number Diff line number Diff line Loading @@ -365,7 +365,7 @@ func TestCcBinaryNocrtTests(t *testing.T) { { description: "nocrt: true", soongProperty: `nocrt: true,`, bazelAttr: AttrNameToString{"link_crt": `False`}, bazelAttr: AttrNameToString{"features": `["-link_crt"]`}, }, { description: "nocrt: false", Loading Loading @@ -408,12 +408,12 @@ func TestCcBinaryNo_libcrtTests(t *testing.T) { { description: "no_libcrt: true", soongProperty: `no_libcrt: true,`, bazelAttr: AttrNameToString{"use_libcrt": `False`}, bazelAttr: AttrNameToString{"features": `["-use_libcrt"]`}, }, { description: "no_libcrt: false", soongProperty: `no_libcrt: false,`, bazelAttr: AttrNameToString{"use_libcrt": `True`}, bazelAttr: AttrNameToString{}, }, { description: "no_libcrt: not set", Loading bp2build/cc_library_conversion_test.go +28 −31 Original line number Diff line number Diff line Loading @@ -1308,7 +1308,7 @@ cc_library { func TestCCLibraryNoCrtTrue(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library - nocrt: true emits attribute", Description: "cc_library - nocrt: true disables feature", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{ Loading @@ -1323,7 +1323,7 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "link_crt": `False`, "features": `["-link_crt"]`, "srcs": `["impl.cpp"]`, }), }, Loading Loading @@ -1375,7 +1375,13 @@ cc_library { include_build_directory: false, } `, ExpectedErr: fmt.Errorf("module \"foo-lib\": nocrt is not supported for arch variants"), ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "features": `select({ "//build/bazel/platforms/arch:arm": ["-link_crt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }) } Loading @@ -1395,8 +1401,8 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "features": `["-use_libcrt"]`, "srcs": `["impl.cpp"]`, "use_libcrt": `False`, }), }) } Loading Loading @@ -1446,7 +1452,6 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `True`, }), }) } Loading Loading @@ -1475,10 +1480,10 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/arch:arm": False, "//build/bazel/platforms/arch:x86": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86": ["-use_libcrt"], "//conditions:default": [], })`, }), }) Loading Loading @@ -1512,17 +1517,15 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/os_arch:android_arm": False, "//build/bazel/platforms/os_arch:android_x86": False, "//build/bazel/platforms/os_arch:darwin_arm64": False, "//build/bazel/platforms/os_arch:darwin_x86_64": False, "//build/bazel/platforms/os_arch:linux_glibc_x86": False, "//build/bazel/platforms/os_arch:linux_musl_x86": False, "//build/bazel/platforms/os_arch:windows_x86": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86": ["-use_libcrt"], "//conditions:default": [], }) + select({ "//build/bazel/platforms/os:darwin": ["-use_libcrt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }) } Loading Loading @@ -1557,16 +1560,10 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/os_arch:android_arm": False, "//build/bazel/platforms/os_arch:android_x86_64": False, "//build/bazel/platforms/os_arch:darwin_arm64": True, "//build/bazel/platforms/os_arch:darwin_x86_64": False, "//build/bazel/platforms/os_arch:linux_bionic_x86_64": False, "//build/bazel/platforms/os_arch:linux_glibc_x86_64": False, "//build/bazel/platforms/os_arch:linux_musl_x86_64": False, "//build/bazel/platforms/os_arch:windows_x86_64": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86_64": ["-use_libcrt"], "//conditions:default": [], })`, }), }) Loading bp2build/cc_library_shared_conversion_test.go +12 −5 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ package bp2build import ( "fmt" "testing" "android/soong/android" Loading Loading @@ -405,7 +404,7 @@ cc_library_shared { func TestCcLibrarySharedNoCrtTrue(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared - nocrt: true emits attribute", Description: "cc_library_shared - nocrt: true disables feature", Filesystem: map[string]string{ "impl.cpp": "", }, Loading @@ -419,7 +418,7 @@ cc_library_shared { `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{ "link_crt": `False`, "features": `["-link_crt"]`, "srcs": `["impl.cpp"]`, }), }, Loading @@ -428,7 +427,7 @@ cc_library_shared { func TestCcLibrarySharedNoCrtFalse(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared - nocrt: false doesn't emit attribute", Description: "cc_library_shared - nocrt: false doesn't disable feature", Filesystem: map[string]string{ "impl.cpp": "", }, Loading Loading @@ -469,7 +468,15 @@ cc_library_shared { include_build_directory: false, } `, ExpectedErr: fmt.Errorf("module \"foo_shared\": nocrt is not supported for arch variants"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{ "features": `select({ "//build/bazel/platforms/arch:arm": ["-link_crt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }, }) } Loading cc/binary.go +2 −7 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ func (binary *binaryDecorator) getStem(ctx BaseModuleContext) string { // modules common to most binaries, such as bionic libraries. func (binary *binaryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps = binary.baseLinker.linkerDeps(ctx, deps) if !Bool(binary.baseLinker.Properties.Nocrt) { if binary.baseLinker.Properties.crt() { if binary.static() { deps.CrtBegin = ctx.toolchain().CrtBeginStaticBinary() deps.CrtEnd = ctx.toolchain().CrtEndStaticBinary() Loading Loading @@ -630,8 +630,6 @@ func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAtt Local_includes: baseAttrs.localIncludes, Absolute_includes: baseAttrs.absoluteIncludes, Linkopts: baseAttrs.linkopts, Link_crt: baseAttrs.linkCrt, Use_libcrt: baseAttrs.useLibcrt, Use_version_lib: baseAttrs.useVersionLib, Rtti: baseAttrs.rtti, Stl: baseAttrs.stl, Loading Loading @@ -695,9 +693,6 @@ type binaryAttributes struct { Linkopts bazel.StringListAttribute Additional_linker_inputs bazel.LabelListAttribute Link_crt bazel.BoolAttribute Use_libcrt bazel.BoolAttribute Use_version_lib bazel.BoolAttribute Rtti bazel.BoolAttribute Loading cc/bp2build.go +7 −12 Original line number Diff line number Diff line Loading @@ -965,8 +965,6 @@ type linkerAttributes struct { systemDynamicDeps bazel.LabelListAttribute usedSystemDynamicDepAsDynamicDep map[string]bool linkCrt bazel.BoolAttribute useLibcrt bazel.BoolAttribute useVersionLib bazel.BoolAttribute linkopts bazel.StringListAttribute additionalLinkerInputs bazel.LabelListAttribute Loading Loading @@ -1138,6 +1136,13 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion } } if !props.libCrt() { axisFeatures = append(axisFeatures, "-use_libcrt") } if !props.crt() { axisFeatures = append(axisFeatures, "-link_crt") } // This must happen before the addition of flags for Version Script and // Dynamic List, as these flags must be split on spaces and those must not linkerFlags = parseCommandLineFlags(linkerFlags, filterOutClangUnknownCflags) Loading @@ -1157,16 +1162,6 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion la.additionalLinkerInputs.SetSelectValue(axis, config, additionalLinkerInputs) la.linkopts.SetSelectValue(axis, config, linkerFlags) la.useLibcrt.SetSelectValue(axis, config, props.libCrt()) // it's very unlikely for nocrt to be arch variant, so bp2build doesn't support it. if props.crt() != nil { if axis == bazel.NoConfigAxis { la.linkCrt.SetSelectValue(axis, config, props.crt()) } else if axis == bazel.ArchConfigurationAxis { ctx.ModuleErrorf("nocrt is not supported for arch variants") } } if axisFeatures != nil { la.features.SetSelectValue(axis, config, axisFeatures) Loading Loading
bp2build/cc_binary_conversion_test.go +3 −3 Original line number Diff line number Diff line Loading @@ -365,7 +365,7 @@ func TestCcBinaryNocrtTests(t *testing.T) { { description: "nocrt: true", soongProperty: `nocrt: true,`, bazelAttr: AttrNameToString{"link_crt": `False`}, bazelAttr: AttrNameToString{"features": `["-link_crt"]`}, }, { description: "nocrt: false", Loading Loading @@ -408,12 +408,12 @@ func TestCcBinaryNo_libcrtTests(t *testing.T) { { description: "no_libcrt: true", soongProperty: `no_libcrt: true,`, bazelAttr: AttrNameToString{"use_libcrt": `False`}, bazelAttr: AttrNameToString{"features": `["-use_libcrt"]`}, }, { description: "no_libcrt: false", soongProperty: `no_libcrt: false,`, bazelAttr: AttrNameToString{"use_libcrt": `True`}, bazelAttr: AttrNameToString{}, }, { description: "no_libcrt: not set", Loading
bp2build/cc_library_conversion_test.go +28 −31 Original line number Diff line number Diff line Loading @@ -1308,7 +1308,7 @@ cc_library { func TestCCLibraryNoCrtTrue(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library - nocrt: true emits attribute", Description: "cc_library - nocrt: true disables feature", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{ Loading @@ -1323,7 +1323,7 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "link_crt": `False`, "features": `["-link_crt"]`, "srcs": `["impl.cpp"]`, }), }, Loading Loading @@ -1375,7 +1375,13 @@ cc_library { include_build_directory: false, } `, ExpectedErr: fmt.Errorf("module \"foo-lib\": nocrt is not supported for arch variants"), ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "features": `select({ "//build/bazel/platforms/arch:arm": ["-link_crt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }) } Loading @@ -1395,8 +1401,8 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "features": `["-use_libcrt"]`, "srcs": `["impl.cpp"]`, "use_libcrt": `False`, }), }) } Loading Loading @@ -1446,7 +1452,6 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `True`, }), }) } Loading Loading @@ -1475,10 +1480,10 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/arch:arm": False, "//build/bazel/platforms/arch:x86": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86": ["-use_libcrt"], "//conditions:default": [], })`, }), }) Loading Loading @@ -1512,17 +1517,15 @@ cc_library { } `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/os_arch:android_arm": False, "//build/bazel/platforms/os_arch:android_x86": False, "//build/bazel/platforms/os_arch:darwin_arm64": False, "//build/bazel/platforms/os_arch:darwin_x86_64": False, "//build/bazel/platforms/os_arch:linux_glibc_x86": False, "//build/bazel/platforms/os_arch:linux_musl_x86": False, "//build/bazel/platforms/os_arch:windows_x86": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86": ["-use_libcrt"], "//conditions:default": [], }) + select({ "//build/bazel/platforms/os:darwin": ["-use_libcrt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }) } Loading Loading @@ -1557,16 +1560,10 @@ cc_library { `, ExpectedBazelTargets: makeCcLibraryTargets("foo-lib", AttrNameToString{ "srcs": `["impl.cpp"]`, "use_libcrt": `select({ "//build/bazel/platforms/os_arch:android_arm": False, "//build/bazel/platforms/os_arch:android_x86_64": False, "//build/bazel/platforms/os_arch:darwin_arm64": True, "//build/bazel/platforms/os_arch:darwin_x86_64": False, "//build/bazel/platforms/os_arch:linux_bionic_x86_64": False, "//build/bazel/platforms/os_arch:linux_glibc_x86_64": False, "//build/bazel/platforms/os_arch:linux_musl_x86_64": False, "//build/bazel/platforms/os_arch:windows_x86_64": False, "//conditions:default": None, "features": `select({ "//build/bazel/platforms/arch:arm": ["-use_libcrt"], "//build/bazel/platforms/arch:x86_64": ["-use_libcrt"], "//conditions:default": [], })`, }), }) Loading
bp2build/cc_library_shared_conversion_test.go +12 −5 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ package bp2build import ( "fmt" "testing" "android/soong/android" Loading Loading @@ -405,7 +404,7 @@ cc_library_shared { func TestCcLibrarySharedNoCrtTrue(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared - nocrt: true emits attribute", Description: "cc_library_shared - nocrt: true disables feature", Filesystem: map[string]string{ "impl.cpp": "", }, Loading @@ -419,7 +418,7 @@ cc_library_shared { `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{ "link_crt": `False`, "features": `["-link_crt"]`, "srcs": `["impl.cpp"]`, }), }, Loading @@ -428,7 +427,7 @@ cc_library_shared { func TestCcLibrarySharedNoCrtFalse(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared - nocrt: false doesn't emit attribute", Description: "cc_library_shared - nocrt: false doesn't disable feature", Filesystem: map[string]string{ "impl.cpp": "", }, Loading Loading @@ -469,7 +468,15 @@ cc_library_shared { include_build_directory: false, } `, ExpectedErr: fmt.Errorf("module \"foo_shared\": nocrt is not supported for arch variants"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{ "features": `select({ "//build/bazel/platforms/arch:arm": ["-link_crt"], "//conditions:default": [], })`, "srcs": `["impl.cpp"]`, }), }, }) } Loading
cc/binary.go +2 −7 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ func (binary *binaryDecorator) getStem(ctx BaseModuleContext) string { // modules common to most binaries, such as bionic libraries. func (binary *binaryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps = binary.baseLinker.linkerDeps(ctx, deps) if !Bool(binary.baseLinker.Properties.Nocrt) { if binary.baseLinker.Properties.crt() { if binary.static() { deps.CrtBegin = ctx.toolchain().CrtBeginStaticBinary() deps.CrtEnd = ctx.toolchain().CrtEndStaticBinary() Loading Loading @@ -630,8 +630,6 @@ func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAtt Local_includes: baseAttrs.localIncludes, Absolute_includes: baseAttrs.absoluteIncludes, Linkopts: baseAttrs.linkopts, Link_crt: baseAttrs.linkCrt, Use_libcrt: baseAttrs.useLibcrt, Use_version_lib: baseAttrs.useVersionLib, Rtti: baseAttrs.rtti, Stl: baseAttrs.stl, Loading Loading @@ -695,9 +693,6 @@ type binaryAttributes struct { Linkopts bazel.StringListAttribute Additional_linker_inputs bazel.LabelListAttribute Link_crt bazel.BoolAttribute Use_libcrt bazel.BoolAttribute Use_version_lib bazel.BoolAttribute Rtti bazel.BoolAttribute Loading
cc/bp2build.go +7 −12 Original line number Diff line number Diff line Loading @@ -965,8 +965,6 @@ type linkerAttributes struct { systemDynamicDeps bazel.LabelListAttribute usedSystemDynamicDepAsDynamicDep map[string]bool linkCrt bazel.BoolAttribute useLibcrt bazel.BoolAttribute useVersionLib bazel.BoolAttribute linkopts bazel.StringListAttribute additionalLinkerInputs bazel.LabelListAttribute Loading Loading @@ -1138,6 +1136,13 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion } } if !props.libCrt() { axisFeatures = append(axisFeatures, "-use_libcrt") } if !props.crt() { axisFeatures = append(axisFeatures, "-link_crt") } // This must happen before the addition of flags for Version Script and // Dynamic List, as these flags must be split on spaces and those must not linkerFlags = parseCommandLineFlags(linkerFlags, filterOutClangUnknownCflags) Loading @@ -1157,16 +1162,6 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion la.additionalLinkerInputs.SetSelectValue(axis, config, additionalLinkerInputs) la.linkopts.SetSelectValue(axis, config, linkerFlags) la.useLibcrt.SetSelectValue(axis, config, props.libCrt()) // it's very unlikely for nocrt to be arch variant, so bp2build doesn't support it. if props.crt() != nil { if axis == bazel.NoConfigAxis { la.linkCrt.SetSelectValue(axis, config, props.crt()) } else if axis == bazel.ArchConfigurationAxis { ctx.ModuleErrorf("nocrt is not supported for arch variants") } } if axisFeatures != nil { la.features.SetSelectValue(axis, config, axisFeatures) Loading