Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 537112c6 authored by Wei Li's avatar Wei Li Committed by Gerrit Code Review
Browse files

Merge "Add bp2build converter for cc library stubs and use the stub library...

Merge "Add bp2build converter for cc library stubs and use the stub library target of a library while linking it in APEXs."
parents f273470a 81852ca9
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -524,6 +524,24 @@ var (

		// '//bionic/libc:libc_bp2build_cc_library_static' is duplicated in the 'deps' attribute of rule
		"toybox-static",

		// Do not convert the following modules because of duplicate labels checking in Bazel.
		// See b/241283350. They should be removed from this list once the bug is fixed.
		"libartpalette",
		"libartbase",
		"libdexfile",
		"libartbased",
		"libdexfile_static",
		"libartbase-testing",
		"libartbased-testing",
		"libdexfile_support",
		"libunwindstack",
		"libunwindstack_local",
		"libfdtrack",
		"libc_malloc_debug",
		"libutilscallstack",
		"libunwindstack_utils",
		"unwind_for_offline",
	}

	Bp2buildCcLibraryStaticOnlyList = []string{}
+22 −3
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ const (
	archX86_64 = "x86_64"

	// OsType names in arch.go
	osAndroid     = "android"
	OsAndroid     = "android"
	osDarwin      = "darwin"
	osLinux       = "linux_glibc"
	osLinuxMusl   = "linux_musl"
@@ -64,6 +64,9 @@ const (
	ConditionsDefaultSelectKey = "//conditions:default"

	productVariableBazelPackage = "//build/bazel/product_variables"

	AndroidAndInApex  = "android-in_apex"
	AndroidAndNonApex = "android-non_apex"
)

var (
@@ -85,7 +88,7 @@ var (
	// A map of target operating systems to the Bazel label of the
	// constraint_value for the @platforms//os:os constraint_setting
	platformOsMap = map[string]string{
		osAndroid:                  "//build/bazel/platforms/os:android",
		OsAndroid:                  "//build/bazel/platforms/os:android",
		osDarwin:                   "//build/bazel/platforms/os:darwin",
		osLinux:                    "//build/bazel/platforms/os:linux",
		osLinuxMusl:                "//build/bazel/platforms/os:linux_musl",
@@ -120,7 +123,7 @@ var (
	// TODO(cparsons): Source from arch.go; this task is nontrivial, as it currently results
	// in a cyclic dependency.
	osToArchMap = map[string][]string{
		osAndroid:     {archArm, archArm64, archX86, archX86_64},
		OsAndroid:     {archArm, archArm64, archX86, archX86_64},
		osLinux:       {archX86, archX86_64},
		osLinuxMusl:   {archX86, archX86_64},
		osDarwin:      {archArm64, archX86_64},
@@ -128,6 +131,12 @@ var (
		// TODO(cparsons): According to arch.go, this should contain archArm, archArm64, as well.
		osWindows: {archX86, archX86_64},
	}

	osAndInApexMap = map[string]string{
		AndroidAndInApex:           "//build/bazel/rules/apex:android-in_apex",
		AndroidAndNonApex:          "//build/bazel/rules/apex:android-non_apex",
		ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
	}
)

// basic configuration types
@@ -139,6 +148,7 @@ const (
	os
	osArch
	productVariables
	osAndInApex
)

func osArchString(os string, arch string) string {
@@ -152,6 +162,7 @@ func (ct configurationType) String() string {
		os:               "os",
		osArch:           "arch_os",
		productVariables: "product_variables",
		osAndInApex:      "os_in_apex",
	}[ct]
}

@@ -175,6 +186,10 @@ func (ct configurationType) validateConfig(config string) {
		}
	case productVariables:
		// do nothing
	case osAndInApex:
		if _, ok := osAndInApexMap[config]; !ok {
			panic(fmt.Errorf("Unknown os+in_apex config: %s", config))
		}
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct))
	}
@@ -198,6 +213,8 @@ func (ca ConfigurationAxis) SelectKey(config string) string {
			return ConditionsDefaultSelectKey
		}
		return fmt.Sprintf("%s:%s", productVariableBazelPackage, config)
	case osAndInApex:
		return osAndInApexMap[config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType))
	}
@@ -212,6 +229,8 @@ var (
	OsConfigurationAxis = ConfigurationAxis{configurationType: os}
	// An axis for arch+os-specific configurations
	OsArchConfigurationAxis = ConfigurationAxis{configurationType: osArch}
	// An axis for os+in_apex-specific configurations
	OsAndInApexAxis = ConfigurationAxis{configurationType: osAndInApex}
)

// ProductVariableConfigurationAxis returns an axis for the given product variable
+9 −9
Original line number Diff line number Diff line
@@ -332,7 +332,7 @@ func (la *LabelAttribute) SetSelectValue(axis ConfigurationAxis, config string,
	switch axis.configurationType {
	case noConfig:
		la.Value = &value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		if la.ConfigurableValues == nil {
			la.ConfigurableValues = make(configurableLabels)
		}
@@ -348,7 +348,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) *La
	switch axis.configurationType {
	case noConfig:
		return la.Value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		return la.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -424,7 +424,7 @@ func (ba *BoolAttribute) SetSelectValue(axis ConfigurationAxis, config string, v
	switch axis.configurationType {
	case noConfig:
		ba.Value = value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		if ba.ConfigurableValues == nil {
			ba.ConfigurableValues = make(configurableBools)
		}
@@ -540,7 +540,7 @@ func (ba BoolAttribute) SelectValue(axis ConfigurationAxis, config string) *bool
	switch axis.configurationType {
	case noConfig:
		return ba.Value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		if v, ok := ba.ConfigurableValues[axis][config]; ok {
			return &v
		} else {
@@ -676,7 +676,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str
	switch axis.configurationType {
	case noConfig:
		lla.Value = list
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		if lla.ConfigurableValues == nil {
			lla.ConfigurableValues = make(configurableLabelLists)
		}
@@ -692,8 +692,8 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string
	switch axis.configurationType {
	case noConfig:
		return lla.Value
	case arch, os, osArch, productVariables:
		return lla.ConfigurableValues[axis][config]
	case arch, os, osArch, productVariables, osAndInApex:
		return (lla.ConfigurableValues[axis][config])
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
	}
@@ -1189,7 +1189,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st
	switch axis.configurationType {
	case noConfig:
		sla.Value = list
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		if sla.ConfigurableValues == nil {
			sla.ConfigurableValues = make(configurableStringLists)
		}
@@ -1205,7 +1205,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin
	switch axis.configurationType {
	case noConfig:
		return sla.Value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, productVariables, osAndInApex:
		return sla.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
+37 −11
Original line number Diff line number Diff line
@@ -1301,10 +1301,10 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string {
		"additional_linker_inputs": true,
		"linkopts":                 true,
		"strip":                    true,
		"stubs_symbol_file":        true,
		"stubs_versions":           true,
		"inject_bssl_hash":         true,
		"has_stubs":                true,
	}

	sharedAttrs := AttrNameToString{}
	staticAttrs := AttrNameToString{}
	for key, val := range attrs {
@@ -1321,6 +1321,26 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string {
	return []string{staticTarget, sharedTarget}
}

func makeCcStubSuiteTargets(name string, attrs AttrNameToString) string {
	if _, hasStubs := attrs["stubs_symbol_file"]; !hasStubs {
		return ""
	}
	STUB_SUITE_ATTRS := map[string]string{
		"stubs_symbol_file": "symbol_file",
		"stubs_versions":    "versions",
		"soname":            "soname",
		"source_library":    "source_library",
	}

	stubSuiteAttrs := AttrNameToString{}
	for key, _ := range attrs {
		if _, stubSuiteAttr := STUB_SUITE_ATTRS[key]; stubSuiteAttr {
			stubSuiteAttrs[STUB_SUITE_ATTRS[key]] = attrs[key]
		}
	}
	return makeBazelTarget("cc_stub_suite", name+"_stub_libs", stubSuiteAttrs)
}

func TestCCLibraryNoLibCrtFalse(t *testing.T) {
	runCcLibraryTestCase(t, Bp2buildTestCase{
		ModuleTypeUnderTest:        "cc_library",
@@ -2424,6 +2444,19 @@ func TestCcLibraryStaticDisabledForSomeArch(t *testing.T) {
}

func TestCcLibraryStubs(t *testing.T) {
	expectedBazelTargets := makeCcLibraryTargets("a", AttrNameToString{
		"has_stubs": `True`,
	})
	expectedBazelTargets = append(expectedBazelTargets, makeCcStubSuiteTargets("a", AttrNameToString{
		"soname":            `"a.so"`,
		"source_library":    `":a"`,
		"stubs_symbol_file": `"a.map.txt"`,
		"stubs_versions": `[
        "28",
        "29",
        "current",
    ]`,
	}))
	runCcLibraryTestCase(t, Bp2buildTestCase{
		Description:                "cc_library stubs",
		ModuleTypeUnderTest:        "cc_library",
@@ -2440,14 +2473,7 @@ cc_library {
`,
		},
		Blueprint:            soongCcLibraryPreamble,
		ExpectedBazelTargets: makeCcLibraryTargets("a", AttrNameToString{
			"stubs_symbol_file": `"a.map.txt"`,
			"stubs_versions": `[
        "28",
        "29",
        "current",
    ]`,
		}),
		ExpectedBazelTargets: expectedBazelTargets,
	},
	)
}
+1 −6
Original line number Diff line number Diff line
@@ -485,12 +485,7 @@ cc_library_shared {
		},
		Blueprint: soongCcLibraryPreamble,
		ExpectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", AttrNameToString{
			"stubs_symbol_file": `"a.map.txt"`,
			"stubs_versions": `[
        "28",
        "29",
        "current",
    ]`,
			"has_stubs": `True`,
		}),
		},
	},
Loading