diff options
author | Nan Zhang <nanzhang@google.com> | 2017-02-27 10:12:13 -0800 |
---|---|---|
committer | Nan Zhang <nanzhang@google.com> | 2017-05-05 13:27:56 -0700 |
commit | db0b9a3cf3c9965929c988f1292f892bfc5deec5 (patch) | |
tree | fe145e5c2d864983915eaf98e1f8e4648e40c355 /android/arch.go | |
parent | 7c34c4c8eba1ec0d5b8cf50926e40aee3291604e (diff) | |
download | build_soong-db0b9a3cf3c9965929c988f1292f892bfc5deec5.tar.gz build_soong-db0b9a3cf3c9965929c988f1292f892bfc5deec5.tar.bz2 build_soong-db0b9a3cf3c9965929c988f1292f892bfc5deec5.zip |
Supported python build in host side.
The base module handles all the common functionalites, such as version
compatibilty check, version variations split, source file format check,
source/data file duplicate check.
The library/binary module focuses on how to generate binary build actions,
such as setting up stub script, zipping, filling in __init__.py in
runfiles dir tree.
Bug: b/31676493
Test: go test under python package
Change-Id: I06608369f350f7195873d459e1c8d1bdb811e77e
Diffstat (limited to 'android/arch.go')
-rw-r--r-- | android/arch.go | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/android/arch.go b/android/arch.go index e21a0705..39477ad7 100644 --- a/android/arch.go +++ b/android/arch.go @@ -189,7 +189,8 @@ var BuildOs = func() OsType { }() var ( - osTypeList []OsType + osTypeList []OsType + commonTargetMap = make(map[string]Target) NoOsType OsType Linux = NewOsType("linux", Host, false) @@ -236,6 +237,13 @@ func NewOsType(name string, class OsClass, defDisabled bool) OsType { DefaultDisabled: defDisabled, } osTypeList = append(osTypeList, os) + + if _, found := commonTargetMap[name]; found { + panic(fmt.Errorf("Found Os type duplicate during OsType registration: %q", name)) + } else { + commonTargetMap[name] = Target{Os: os, Arch: Arch{ArchType: Common}} + } + return os } @@ -249,15 +257,6 @@ func osByName(name string) OsType { return NoOsType } -var ( - commonTarget = Target{ - Os: Android, - Arch: Arch{ - ArchType: Common, - }, - } -) - type Target struct { Os OsType Arch Arch @@ -989,6 +988,20 @@ func filterMultilibTargets(targets []Target, multilib string) []Target { return ret } +func getCommonTargets(targets []Target) []Target { + var ret []Target + set := make(map[string]bool) + + for _, t := range targets { + if _, found := set[t.Os.String()]; !found { + set[t.Os.String()] = true + ret = append(ret, commonTargetMap[t.Os.String()]) + } + } + + return ret +} + // Use the module multilib setting to select one or more targets from a target list func decodeMultilib(multilib string, targets []Target, prefer32 bool) ([]Target, error) { buildTargets := []Target{} @@ -1001,7 +1014,7 @@ func decodeMultilib(multilib string, targets []Target, prefer32 bool) ([]Target, } switch multilib { case "common": - buildTargets = append(buildTargets, commonTarget) + buildTargets = append(buildTargets, getCommonTargets(targets)...) case "both": if prefer32 { buildTargets = append(buildTargets, filterMultilibTargets(targets, "lib32")...) |