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

Commit 01a16e82 authored by Liz Kammer's avatar Liz Kammer
Browse files

Handle target.bionic in bp2build.

Soong supports some hand-crafted target.<type> that match multiple os or
arch types to simplify configuring for similar targets. target.bionic is
used to match on both android and linux_bionic OSes for cases where they
should be handled the same way.

Test: build/bazel/ci/bp2build.sh
Change-Id: I47b6aaf3279e4d242c4fd0e12f24117eb98e0665
parent 393bffee
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1987,6 +1987,10 @@ func (m *ModuleBase) GetArchVariantProperties(ctx ArchVariantContext, propertySe
	axisToProps[bazel.OsConfigurationAxis] = osToProp
	axisToProps[bazel.OsArchConfigurationAxis] = archOsToProp

	axisToProps[bazel.BionicConfigurationAxis] = map[string]interface{}{
		"bionic": getTargetStruct(ctx, propertySet, archProperties, "Bionic"),
	}

	return axisToProps
}

+15 −0
Original line number Diff line number Diff line
@@ -91,6 +91,11 @@ var (
		conditionsDefault: ConditionsDefaultSelectKey, // The default condition of an os select map.
	}

	platformBionicMap = map[string]string{
		"bionic":          "//build/bazel/platforms/os:bionic",
		conditionsDefault: ConditionsDefaultSelectKey, // The default condition of an os select map.
	}

	platformOsArchMap = map[string]string{
		osArchAndroidArm:        "//build/bazel/platforms/os_arch:android_arm",
		osArchAndroidArm64:      "//build/bazel/platforms/os_arch:android_arm64",
@@ -117,6 +122,7 @@ const (
	arch
	os
	osArch
	bionic
	productVariables
)

@@ -126,6 +132,7 @@ func (ct configurationType) String() string {
		arch:             "arch",
		os:               "os",
		osArch:           "arch_os",
		bionic:           "bionic",
		productVariables: "product_variables",
	}[ct]
}
@@ -148,6 +155,10 @@ func (ct configurationType) validateConfig(config string) {
		if _, ok := platformOsArchMap[config]; !ok {
			panic(fmt.Errorf("Unknown os+arch: %s", config))
		}
	case bionic:
		if _, ok := platformBionicMap[config]; !ok {
			panic(fmt.Errorf("Unknown for %s: %s", ct.String(), config))
		}
	case productVariables:
		// do nothing
	default:
@@ -167,6 +178,8 @@ func (ct configurationType) SelectKey(config string) string {
		return platformOsMap[config]
	case osArch:
		return platformOsArchMap[config]
	case bionic:
		return platformBionicMap[config]
	case productVariables:
		if config == conditionsDefault {
			return ConditionsDefaultSelectKey
@@ -186,6 +199,8 @@ var (
	OsConfigurationAxis = ConfigurationAxis{configurationType: os}
	// An axis for arch+os-specific configurations
	OsArchConfigurationAxis = ConfigurationAxis{configurationType: osArch}
	// An axis for bionic os-specific configurations
	BionicConfigurationAxis = ConfigurationAxis{configurationType: bionic}
)

// ProductVariableConfigurationAxis returns an axis for the given product variable
+8 −8
Original line number Diff line number Diff line
@@ -321,7 +321,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, bionic, productVariables:
		if la.ConfigurableValues == nil {
			la.ConfigurableValues = make(configurableLabels)
		}
@@ -337,7 +337,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) Lab
	switch axis.configurationType {
	case noConfig:
		return *la.Value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, bionic, productVariables:
		return *la.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -394,7 +394,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, bionic, productVariables:
		if ba.ConfigurableValues == nil {
			ba.ConfigurableValues = make(configurableBools)
		}
@@ -410,7 +410,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, bionic, productVariables:
		if v, ok := ba.ConfigurableValues[axis][config]; ok {
			return &v
		} else {
@@ -509,7 +509,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, bionic, productVariables:
		if lla.ConfigurableValues == nil {
			lla.ConfigurableValues = make(configurableLabelLists)
		}
@@ -525,7 +525,7 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string
	switch axis.configurationType {
	case noConfig:
		return lla.Value
	case arch, os, osArch, productVariables:
	case arch, os, osArch, bionic, productVariables:
		return lla.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -682,7 +682,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, bionic, productVariables:
		if sla.ConfigurableValues == nil {
			sla.ConfigurableValues = make(configurableStringLists)
		}
@@ -698,7 +698,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, bionic, productVariables:
		return sla.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
+7 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ func TestCcLibrarySimple(t *testing.T) {
		moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
		filesystem: map[string]string{
			"android.cpp": "",
			"bionic.cpp":  "",
			"darwin.cpp":  "",
			// Refer to cc.headerExts for the supported header extensions in Soong.
			"header.h":         "",
@@ -164,6 +165,9 @@ cc_library {
        darwin: {
            srcs: ["darwin.cpp"],
        },
        bionic: {
          srcs: ["bionic.cpp"]
        },
    },
}
`,
@@ -190,6 +194,9 @@ cc_library {
        "//build/bazel/platforms/os:darwin": ["darwin.cpp"],
        "//build/bazel/platforms/os:linux": ["linux.cpp"],
        "//conditions:default": [],
    }) + select({
        "//build/bazel/platforms/os:bionic": ["bionic.cpp"],
        "//conditions:default": [],
    }),
)`}})
}