Spracherkennung für: .go vermutete Sprache: Abap {ABAP[88] C[37] Corba[37]} [Methode: maximale Elemente, drei Dimensionen]
// Copyright
2017 Google Inc. All rights reserved.
//
// Licensed
under the Apache License, Version
2.
0 (the
"License");
// you may not use this
file except
in compliance with the License.
// You may obtain a
copy of the License
at
//
//
http://www.apache.org/licenses/LICENSE-2.
0
//
// Unless required
by applicable law
or agreed
to in writing, software
// distributed
under the License
is distributed
on an
"AS IS" BASIS,
// WITHOUT WARRANTIES
OR CONDITIONS
OF ANY KIND, either express
or implied.
// See the License
for the specific
language governing permissions
and
// limitations
under the License.
package cc
import (
"fmt"
"android/soong/android"
"android/soong/genrule"
)
func init() {
android.RegisterModuleType(
"cc_genrule", GenRuleFactory)
android.RegisterModuleType(
"cc_genrule_defaults", genruleDefaultsFactory)
}
type GenruleExtraProperties struct {
Vendor_available
*bool
Odm_available
*bool
Product_available
*bool
Ramdisk_available
*bool
Vendor_ramdisk_available
*bool
Recovery_available
*bool
Sdk_version
*string
}
// cc_genrule
is a genrule that can depend
on other cc_
* objects.
// The cmd may be
run multiple times, once
for each
of the different arch/etc
// variations. The following environment variables will be
set when the command
// execute:
//
// CC_ARCH the name
of the architecture the command
is being executed
for
//
// CC_MULTILIB
"lib32" if the architecture the command
is being executed
for is 32-
bit,
//
"lib64" if it
is 64-
bit.
//
// CC_NATIVE_BRIDGE the name
of the subdirectory that native bridge libraries are stored
in if
// the architecture has native bridge enabled, empty
if it
is disabled.
//
// CC_OS the name
of the OS the command
is being executed
for.
func GenRuleFactory() android.
Module {
module := genrule.NewGenRule()
extra := &GenruleExtraProperties{}
module.Extra = extra
module.ImageInterface = extra
module.CmdModifier = genruleCmdModifier
module.AddProperties(
module.Extra)
android.InitAndroidArchModule(
module, android.HostAndDeviceSupported, android.Mult
ilibBoth)
android.InitApexModule(module)
android.InitDefaultableModule(module)
return module
}
func genruleDefaultsFactory() android.Module {
return genrule.DefaultsFactory(
&GenruleExtraProperties{})
}
func genruleCmdModifier(ctx android.ModuleContext, cmd string) string {
target := ctx.Target()
arch := target.Arch.ArchType
osName := target.Os.Name
return fmt.Sprintf("CC_ARCH=%s CC_NATIVE_BRIDGE=%s CC_MULTILIB=%s CC_OS=%s && %s",
arch.Name, target.NativeBridgeRelativePath, arch.Multilib, osName, cmd)
}
var _ android.ImageInterface = (*GenruleExtraProperties)(nil)
func (g *GenruleExtraProperties) ImageMutatorBegin(ctx android.ImageInterfaceContext) {}
func (g *GenruleExtraProperties) ImageMutatorSupported() bool {
return true
}
func (g *GenruleExtraProperties) VendorVariantNeeded(ctx android.ImageInterfaceContext) bool {
return Bool(g.Vendor_available) || Bool(g.Odm_available) || ctx.SocSpecific() || ctx.DeviceSpecific()
}
func (g *GenruleExtraProperties) ProductVariantNeeded(ctx android.ImageInterfaceContext) bool {
return Bool(g.Product_available) || ctx.ProductSpecific()
}
func (g *GenruleExtraProperties) CoreVariantNeeded(ctx android.ImageInterfaceContext) bool {
return !(ctx.SocSpecific() || ctx.DeviceSpecific() || ctx.ProductSpecific())
}
func (g *GenruleExtraProperties) RamdiskVariantNeeded(ctx android.ImageInterfaceContext) bool {
return Bool(g.Ramdisk_available)
}
func (g *GenruleExtraProperties) VendorRamdiskVariantNeeded(ctx android.ImageInterfaceContext) bool {
return Bool(g.Vendor_ramdisk_available)
}
func (g *GenruleExtraProperties) DebugRamdiskVariantNeeded(ctx android.ImageInterfaceContext) bool {
return false
}
func (g *GenruleExtraProperties) RecoveryVariantNeeded(ctx android.ImageInterfaceContext) bool {
// If the build is using a snapshot, the recovery variant under AOSP directories
// is not needed.
return Bool(g.Recovery_available)
}
func (g *GenruleExtraProperties) ExtraImageVariations(ctx android.ImageInterfaceContext) []string {
return nil
}
func (g *GenruleExtraProperties) SetImageVariation(ctx android.ImageInterfaceContext, variation string) {
}