Replace android.BuildOs with Config.BuildOS

Replace the android.BuildOs constant with Config.BuildOS so that it
can vary based on the product config.

Bug: 190084016
Test: all Soong tests
Change-Id: Ia67f872d8b2ab788747a22e3a9659dc21c9775cd
This commit is contained in:
Colin Cross
2021-07-20 09:47:41 -07:00
parent ae86338676
commit 0c66bc615b
22 changed files with 457 additions and 421 deletions

View File

@@ -290,28 +290,6 @@ func osByName(name string) OsType {
return NoOsType
}
// BuildOs returns the OsType for the OS that the build is running on.
var BuildOs = func() OsType {
switch runtime.GOOS {
case "linux":
return Linux
case "darwin":
return Darwin
default:
panic(fmt.Sprintf("unsupported OS: %s", runtime.GOOS))
}
}()
// BuildArch returns the ArchType for the CPU that the build is running on.
var BuildArch = func() ArchType {
switch runtime.GOARCH {
case "amd64":
return X86_64
default:
panic(fmt.Sprintf("unsupported Arch: %s", runtime.GOARCH))
}
}()
var (
// osTypeList contains a list of all the supported OsTypes, including ones not supported
// by the current build host or the target device.
@@ -1397,6 +1375,31 @@ func (m *ModuleBase) setArchProperties(ctx BottomUpMutatorContext) {
}
}
// determineBuildOS stores the OS and architecture used for host targets used during the build into
// config based on the runtime OS and architecture determined by Go.
func determineBuildOS(config *config) {
config.BuildOS = func() OsType {
switch runtime.GOOS {
case "linux":
return Linux
case "darwin":
return Darwin
default:
panic(fmt.Sprintf("unsupported OS: %s", runtime.GOOS))
}
}()
config.BuildArch = func() ArchType {
switch runtime.GOARCH {
case "amd64":
return X86_64
default:
panic(fmt.Sprintf("unsupported Arch: %s", runtime.GOARCH))
}
}()
}
// Convert the arch product variables into a list of targets for each OsType.
func decodeTargetProductVariables(config *config) (map[OsType][]Target, error) {
variables := config.productVariables
@@ -1430,9 +1433,9 @@ func decodeTargetProductVariables(config *config) (map[OsType][]Target, error) {
hostCross := false
if os.Class == Host {
var osSupported bool
if os == BuildOs {
if os == config.BuildOS {
osSupported = true
} else if BuildOs.Linux() && os.Linux() {
} else if config.BuildOS.Linux() && os.Linux() {
// LinuxBionic and Linux are compatible
osSupported = true
} else {
@@ -1470,11 +1473,11 @@ func decodeTargetProductVariables(config *config) (map[OsType][]Target, error) {
}
// The primary host target, which must always exist.
addTarget(BuildOs, *variables.HostArch, nil, nil, nil, NativeBridgeDisabled, nil, nil)
addTarget(config.BuildOS, *variables.HostArch, nil, nil, nil, NativeBridgeDisabled, nil, nil)
// An optional secondary host target.
if variables.HostSecondaryArch != nil && *variables.HostSecondaryArch != "" {
addTarget(BuildOs, *variables.HostSecondaryArch, nil, nil, nil, NativeBridgeDisabled, nil, nil)
addTarget(config.BuildOS, *variables.HostSecondaryArch, nil, nil, nil, NativeBridgeDisabled, nil, nil)
}
// Optional cross-compiled host targets, generally Windows.