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

Commit 22fadd81 authored by Christopher Parsons's avatar Christopher Parsons Committed by Automerger Merge Worker
Browse files

Merge "bp2build: Handle target.linux" am: d6558d15 am: 86a0c430

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1843713

Change-Id: I73808b4e0ed102c4345a4ef31a2488942f7e3c9b
parents 3f13df71 86a0c430
Loading
Loading
Loading
Loading
+24 −9
Original line number Diff line number Diff line
@@ -2005,16 +2005,37 @@ func (m *ModuleBase) GetArchVariantProperties(ctx ArchVariantContext, propertySe

	osToProp := ArchVariantProperties{}
	archOsToProp := ArchVariantProperties{}

	var linuxStructs, bionicStructs []reflect.Value
	var ok bool

	linuxStructs, ok = getTargetStructs(ctx, archProperties, "Linux")
	if !ok {
		linuxStructs = make([]reflect.Value, 0)
	}
	bionicStructs, ok = getTargetStructs(ctx, archProperties, "Bionic")
	if !ok {
		bionicStructs = make([]reflect.Value, 0)
	}

	// For android, linux, ...
	for _, os := range osTypeList {
		if os == CommonOS {
			// It looks like this OS value is not used in Blueprint files
			continue
		}
		osStructs, ok := getTargetStructs(ctx, archProperties, os.Field)
		osStructs := make([]reflect.Value, 0)
		osSpecificStructs, ok := getTargetStructs(ctx, archProperties, os.Field)
		if ok {
			osToProp[os.Name] = mergeStructs(ctx, osStructs, propertySet)
			osStructs = append(osStructs, osSpecificStructs...)
		}
		if os.Linux() {
			osStructs = append(osStructs, linuxStructs...)
		}
		if os.Bionic() {
			osStructs = append(osStructs, bionicStructs...)
		}
		osToProp[os.Name] = mergeStructs(ctx, osStructs, propertySet)

		// For arm, x86, ...
		for _, arch := range osArchTypeMap[os] {
@@ -2048,15 +2069,9 @@ func (m *ModuleBase) GetArchVariantProperties(ctx ArchVariantContext, propertySe
			archOsToProp[targetName] = mergeStructs(ctx, osArchStructs, propertySet)
		}
	}

	axisToProps[bazel.OsConfigurationAxis] = osToProp
	axisToProps[bazel.OsArchConfigurationAxis] = archOsToProp

	bionicStructs, ok := getTargetStructs(ctx, archProperties, "Bionic")
	if ok {
		axisToProps[bazel.BionicConfigurationAxis] = map[string]interface{}{
			"bionic": mergeStructs(ctx, bionicStructs, propertySet)}
	}

	return axisToProps
}

+0 −21
Original line number Diff line number Diff line
@@ -223,9 +223,6 @@ var (
		"libc_malloc_debug",           // http://b/186824339, cc_library_static, depends on //system/libbase:libbase (http://b/186823646)
		"libc_malloc_debug_backtrace", // http://b/186824112, cc_library_static, depends on //external/libcxxabi:libc++demangle (http://b/186823773)

		//"libcutils",         // http://b/186827426, cc_library, depends on //system/core/libprocessgroup:libprocessgroup_headers (http://b/186826841)
		//"libcutils_sockets", // http://b/186826853, cc_library, depends on //system/libbase:libbase (http://b/186826479)

		"liblinker_debuggerd_stub", // http://b/186824327, cc_library_static, depends on //external/zlib:libz (http://b/186823782)
		//                                                               also depends on //system/libziparchive:libziparchive (http://b/186823656)
		//                                                               also depends on //system/logging/liblog:liblog (http://b/186822772)
@@ -285,24 +282,6 @@ var (
		"libadb_protos_static",         // b/200601772: Requires cc_library proto support
		"libadb_protos",                // b/200601772: Requires cc_library proto support
		"libapp_processes_protos_lite", // b/200601772: Requires cc_library proto support

		"libbase", // TODO(cparsons): Breaks libandroidfw. Investigate.

		// The below items depend on libbase.
		"libadb_pairing_auth",
		"libadb_pairing_auth_static",
		"libadb_sysdeps",
		"libadb_tls_connection",
		"libadb_tls_connection_static",
		"libadbconnection_client",
		"libadbconnection_server",
		"libadbd_auth",
		"libadbd_fs",
		"libcutils",
		"libcutils_sockets",
		"libdiagnose_usb",
		// ---

	}

	// Per-module denylist of cc_library modules to only generate the static
+0 −15
Original line number Diff line number Diff line
@@ -91,11 +91,6 @@ var (
		ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, // The default condition of an os select map.
	}

	platformBionicMap = map[string]string{
		"bionic":                   "//build/bazel/platforms/os:bionic",
		ConditionsDefaultConfigKey: 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",
@@ -122,7 +117,6 @@ const (
	arch
	os
	osArch
	bionic
	productVariables
)

@@ -132,7 +126,6 @@ func (ct configurationType) String() string {
		arch:             "arch",
		os:               "os",
		osArch:           "arch_os",
		bionic:           "bionic",
		productVariables: "product_variables",
	}[ct]
}
@@ -155,10 +148,6 @@ 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:
@@ -178,8 +167,6 @@ func (ct configurationType) SelectKey(config string) string {
		return platformOsMap[config]
	case osArch:
		return platformOsArchMap[config]
	case bionic:
		return platformBionicMap[config]
	case productVariables:
		if config == ConditionsDefaultConfigKey {
			return ConditionsDefaultSelectKey
@@ -199,8 +186,6 @@ 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
@@ -264,7 +264,7 @@ func (la *LabelAttribute) SetSelectValue(axis ConfigurationAxis, config string,
	switch axis.configurationType {
	case noConfig:
		la.Value = &value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		if la.ConfigurableValues == nil {
			la.ConfigurableValues = make(configurableLabels)
		}
@@ -280,7 +280,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) Lab
	switch axis.configurationType {
	case noConfig:
		return *la.Value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		return *la.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -337,7 +337,7 @@ func (ba *BoolAttribute) SetSelectValue(axis ConfigurationAxis, config string, v
	switch axis.configurationType {
	case noConfig:
		ba.Value = value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		if ba.ConfigurableValues == nil {
			ba.ConfigurableValues = make(configurableBools)
		}
@@ -353,7 +353,7 @@ func (ba BoolAttribute) SelectValue(axis ConfigurationAxis, config string) *bool
	switch axis.configurationType {
	case noConfig:
		return ba.Value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		if v, ok := ba.ConfigurableValues[axis][config]; ok {
			return &v
		} else {
@@ -459,7 +459,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str
	switch axis.configurationType {
	case noConfig:
		lla.Value = list
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		if lla.ConfigurableValues == nil {
			lla.ConfigurableValues = make(configurableLabelLists)
		}
@@ -475,7 +475,7 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string
	switch axis.configurationType {
	case noConfig:
		return lla.Value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		return lla.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
@@ -773,7 +773,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st
	switch axis.configurationType {
	case noConfig:
		sla.Value = list
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		if sla.ConfigurableValues == nil {
			sla.ConfigurableValues = make(configurableStringLists)
		}
@@ -789,7 +789,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin
	switch axis.configurationType {
	case noConfig:
		return sla.Value
	case arch, os, osArch, bionic, productVariables:
	case arch, os, osArch, productVariables:
		return sla.ConfigurableValues[axis][config]
	default:
		panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
+70 −4
Original line number Diff line number Diff line
@@ -131,12 +131,13 @@ cc_library {
        "//build/bazel/platforms/arch:x86_64": ["x86_64.cpp"],
        "//conditions:default": [],
    }) + select({
        "//build/bazel/platforms/os:android": ["android.cpp"],
        "//build/bazel/platforms/os:android": [
            "android.cpp",
            "bionic.cpp",
        ],
        "//build/bazel/platforms/os:darwin": ["darwin.cpp"],
        "//build/bazel/platforms/os:linux": ["linux.cpp"],
        "//conditions:default": [],
    }) + select({
        "//build/bazel/platforms/os:bionic": ["bionic.cpp"],
        "//build/bazel/platforms/os:linux_bionic": ["bionic.cpp"],
        "//conditions:default": [],
    }),
)`}})
@@ -1571,3 +1572,68 @@ cc_library {
)`},
	})
}

func TestCcLibraryOsSelects(t *testing.T) {
	runCcLibraryTestCase(t, bp2buildTestCase{
		description:                        "cc_library - selects for all os targets",
		moduleTypeUnderTest:                "cc_library",
		moduleTypeUnderTestFactory:         cc.LibraryFactory,
		moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
		filesystem:                         map[string]string{},
		blueprint: soongCcLibraryPreamble + `
cc_library_headers { name: "some-headers" }
cc_library {
    name: "foo-lib",
    srcs: ["base.cpp"],
    target: {
        android: {
            srcs: ["android.cpp"],
        },
        linux: {
            srcs: ["linux.cpp"],
        },
        linux_glibc: {
            srcs: ["linux_glibc.cpp"],
        },
        darwin: {
            srcs: ["darwin.cpp"],
        },
        bionic: {
            srcs: ["bionic.cpp"],
        },
        linux_musl: {
            srcs: ["linux_musl.cpp"],
        },
        windows: {
            srcs: ["windows.cpp"],
        },
    },
    include_build_directory: false,
}
`,
		expectedBazelTargets: []string{`cc_library(
    name = "foo-lib",
    srcs = ["base.cpp"] + select({
        "//build/bazel/platforms/os:android": [
            "android.cpp",
            "bionic.cpp",
            "linux.cpp",
        ],
        "//build/bazel/platforms/os:darwin": ["darwin.cpp"],
        "//build/bazel/platforms/os:linux": [
            "linux.cpp",
            "linux_glibc.cpp",
        ],
        "//build/bazel/platforms/os:linux_bionic": [
            "bionic.cpp",
            "linux.cpp",
        ],
        "//build/bazel/platforms/os:linux_musl": [
            "linux.cpp",
            "linux_musl.cpp",
        ],
        "//build/bazel/platforms/os:windows": ["windows.cpp"],
        "//conditions:default": [],
    }),
)`}})
}
Loading