Make FirstTarget treat HostCross separately from Host
Use Target.Os and Target.HostCross as the key in FirstTarget so that it returns a separate target for host and host cross architectures. This is useful when host and host cross are both linux_musl, but host cross is an independenct architecture like arm64. Bug: 236052820 Test: cross compile linux_musl-arm64 Change-Id: If75790001afe9d0f9d4d8166f207847851812297
This commit is contained in:
@@ -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
|
// 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
|
// that contains zero or one Target for each OsType and HostCross, selecting the one that matches
|
||||||
// filter.
|
// the earliest filter.
|
||||||
func FirstTarget(targets []Target, filters ...string) []Target {
|
func FirstTarget(targets []Target, filters ...string) []Target {
|
||||||
// find the first target from each OS
|
// find the first target from each OS
|
||||||
var ret []Target
|
var ret []Target
|
||||||
hasHost := false
|
type osHostCross struct {
|
||||||
set := make(map[OsType]bool)
|
os OsType
|
||||||
|
hostCross bool
|
||||||
|
}
|
||||||
|
set := make(map[osHostCross]bool)
|
||||||
|
|
||||||
for _, filter := range filters {
|
for _, filter := range filters {
|
||||||
buildTargets := filterMultilibTargets(targets, filter)
|
buildTargets := filterMultilibTargets(targets, filter)
|
||||||
for _, t := range buildTargets {
|
for _, t := range buildTargets {
|
||||||
if _, found := set[t.Os]; !found {
|
key := osHostCross{t.Os, t.HostCross}
|
||||||
hasHost = hasHost || (t.Os.Class == Host)
|
if _, found := set[key]; !found {
|
||||||
set[t.Os] = true
|
set[key] = true
|
||||||
ret = append(ret, t)
|
ret = append(ret, t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user