Merge "Make FirstTarget treat HostCross separately from Host" am: 0243999864

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

Change-Id: I879353c72a52b0ed98c39dfbf9ae5b278209198e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Colin Cross
2022-07-20 16:26:07 +00:00
committed by Automerger Merge Worker

View File

@@ -1843,20 +1843,23 @@ func getCommonTargets(targets []Target) []Target {
}
// FirstTarget takes a list of Targets and a list of multilib values and returns a list of Targets
// that contains zero or one Target for each OsType, selecting the one that matches the earliest
// filter.
// that contains zero or one Target for each OsType and HostCross, selecting the one that matches
// the earliest filter.
func FirstTarget(targets []Target, filters ...string) []Target {
// find the first target from each OS
var ret []Target
hasHost := false
set := make(map[OsType]bool)
type osHostCross struct {
os OsType
hostCross bool
}
set := make(map[osHostCross]bool)
for _, filter := range filters {
buildTargets := filterMultilibTargets(targets, filter)
for _, t := range buildTargets {
if _, found := set[t.Os]; !found {
hasHost = hasHost || (t.Os.Class == Host)
set[t.Os] = true
key := osHostCross{t.Os, t.HostCross}
if _, found := set[key]; !found {
set[key] = true
ret = append(ret, t)
}
}