aboutsummaryrefslogtreecommitdiffstats
path: root/android/arch.go
diff options
context:
space:
mode:
authorNan Zhang <nanzhang@google.com>2017-02-27 10:12:13 -0800
committerNan Zhang <nanzhang@google.com>2017-05-05 13:27:56 -0700
commitdb0b9a3cf3c9965929c988f1292f892bfc5deec5 (patch)
treefe145e5c2d864983915eaf98e1f8e4648e40c355 /android/arch.go
parent7c34c4c8eba1ec0d5b8cf50926e40aee3291604e (diff)
downloadbuild_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.go35
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")...)