diff options
Diffstat (limited to 'android/module.go')
-rw-r--r-- | android/module.go | 105 |
1 files changed, 54 insertions, 51 deletions
diff --git a/android/module.go b/android/module.go index 18555234..0e608d77 100644 --- a/android/module.go +++ b/android/module.go @@ -48,9 +48,9 @@ type ModuleBuildParams struct { } type androidBaseContext interface { + Target() Target Arch() Arch - HostOrDevice() HostOrDevice - HostType() HostType + Os() OsType Host() bool Device() bool Darwin() bool @@ -90,7 +90,7 @@ type Module interface { base() *ModuleBase Enabled() bool - HostOrDevice() HostOrDevice + Target() Target InstallInData() bool } @@ -115,14 +115,8 @@ type commonProperties struct { // file Logtags []string - // Set by HostOrDeviceMutator - CompileHostOrDevice HostOrDevice `blueprint:"mutated"` - - // Set by HostTypeMutator - CompileHostType HostType `blueprint:"mutated"` - - // Set by ArchMutator - CompileArch Arch `blueprint:"mutated"` + // Set by TargetMutator + CompileTarget Target `blueprint:"mutated"` // Set by InitAndroidModule HostOrDeviceSupported HostOrDeviceSupported `blueprint:"mutated"` @@ -142,6 +136,16 @@ const ( MultilibDefault Multilib = "" ) +type HostOrDeviceSupported int + +const ( + _ HostOrDeviceSupported = iota + HostSupported + DeviceSupported + HostAndDeviceSupported + HostAndDeviceDefault +) + func InitAndroidModule(m Module, propertyStructs ...interface{}) (blueprint.Module, []interface{}) { @@ -241,38 +245,45 @@ func (a *ModuleBase) base() *ModuleBase { return a } -func (a *ModuleBase) SetHostOrDevice(hod HostOrDevice) { - a.commonProperties.CompileHostOrDevice = hod -} - -func (a *ModuleBase) SetHostType(ht HostType) { - a.commonProperties.CompileHostType = ht -} - -func (a *ModuleBase) SetArch(arch Arch) { - a.commonProperties.CompileArch = arch +func (a *ModuleBase) SetTarget(target Target) { + a.commonProperties.CompileTarget = target } -func (a *ModuleBase) HostOrDevice() HostOrDevice { - return a.commonProperties.CompileHostOrDevice +func (a *ModuleBase) Target() Target { + return a.commonProperties.CompileTarget } -func (a *ModuleBase) HostType() HostType { - return a.commonProperties.CompileHostType +func (a *ModuleBase) Os() OsType { + return a.Target().Os } func (a *ModuleBase) Host() bool { - return a.HostOrDevice().Host() + return a.Os().Class == Host || a.Os().Class == HostCross } func (a *ModuleBase) Arch() Arch { - return a.commonProperties.CompileArch + return a.Target().Arch } -func (a *ModuleBase) HostSupported() bool { - return a.commonProperties.HostOrDeviceSupported == HostSupported || - a.commonProperties.HostOrDeviceSupported == HostAndDeviceSupported && - a.hostAndDeviceProperties.Host_supported +func (a *ModuleBase) OsClassSupported() []OsClass { + switch a.commonProperties.HostOrDeviceSupported { + case HostSupported: + // TODO(ccross): explicitly mark host cross support + return []OsClass{Host, HostCross} + case DeviceSupported: + return []OsClass{Device} + case HostAndDeviceSupported: + var supported []OsClass + if a.hostAndDeviceProperties.Host_supported { + supported = append(supported, Host, HostCross) + } + if a.hostAndDeviceProperties.Device_supported { + supported = append(supported, Device) + } + return supported + default: + return nil + } } func (a *ModuleBase) DeviceSupported() bool { @@ -283,11 +294,7 @@ func (a *ModuleBase) DeviceSupported() bool { func (a *ModuleBase) Enabled() bool { if a.commonProperties.Enabled == nil { - if a.HostSupported() && a.HostOrDevice().Host() && a.HostType() == Windows { - return false - } else { - return true - } + return a.Os().Class != HostCross } return *a.commonProperties.Enabled } @@ -376,9 +383,7 @@ func (a *ModuleBase) generateModuleTarget(ctx blueprint.ModuleContext) { func (a *ModuleBase) androidBaseContextFactory(ctx blueprint.BaseModuleContext) androidBaseContextImpl { return androidBaseContextImpl{ - arch: a.commonProperties.CompileArch, - hod: a.commonProperties.CompileHostOrDevice, - ht: a.commonProperties.CompileHostType, + target: a.commonProperties.CompileTarget, proprietary: a.commonProperties.Proprietary, config: ctx.Config().(Config), installInData: a.module.InstallInData(), @@ -413,9 +418,7 @@ func (a *ModuleBase) GenerateBuildActions(ctx blueprint.ModuleContext) { } type androidBaseContextImpl struct { - arch Arch - hod HostOrDevice - ht HostType + target Target debug bool config Config proprietary bool @@ -494,28 +497,28 @@ func (a *androidModuleContext) AddMissingDependencies(deps []string) { } } -func (a *androidBaseContextImpl) Arch() Arch { - return a.arch +func (a *androidBaseContextImpl) Target() Target { + return a.target } -func (a *androidBaseContextImpl) HostOrDevice() HostOrDevice { - return a.hod +func (a *androidBaseContextImpl) Arch() Arch { + return a.target.Arch } -func (a *androidBaseContextImpl) HostType() HostType { - return a.ht +func (a *androidBaseContextImpl) Os() OsType { + return a.target.Os } func (a *androidBaseContextImpl) Host() bool { - return a.hod.Host() + return a.target.Os.Class == Host || a.target.Os.Class == HostCross } func (a *androidBaseContextImpl) Device() bool { - return a.hod.Device() + return a.target.Os.Class == Device } func (a *androidBaseContextImpl) Darwin() bool { - return a.hod.Host() && a.ht == Darwin + return a.target.Os == Darwin } func (a *androidBaseContextImpl) Debug() bool { |