diff options
-rw-r--r-- | common/arch.go | 59 | ||||
-rw-r--r-- | common/config.go | 12 | ||||
-rw-r--r-- | common/module.go | 22 |
3 files changed, 83 insertions, 10 deletions
diff --git a/common/arch.go b/common/arch.go index 1d7d0de7..70ac85c2 100644 --- a/common/arch.go +++ b/common/arch.go @@ -901,6 +901,65 @@ func decodeArchProductVariables(variables productVariables) (map[HostType][]Arch return hostTypeArches, deviceArches, nil } +func decodeMegaDevice() ([]Arch, error) { + archSettings := []struct { + arch string + archVariant string + cpuVariant string + abi []string + }{ + {"arm", "armv7-a-neon", "cortex-a7", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "cortex-a8", []string{"armeabi-v7a"}}, + // gtest_all_test.cc fails to build: + // error in backend: Unsupported library call operation! + //{"arm", "armv7-a-neon", "cortex-a9", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "cortex-a15", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "cortex-a53", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "cortex-a53.a57", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "denver", []string{"armeabi-v7a"}}, + {"arm", "armv7-a-neon", "krait", []string{"armeabi-v7a"}}, + {"arm64", "", "cortex-a53", []string{"arm64-v8a"}}, + {"arm64", "", "denver64", []string{"arm64-v8a"}}, + // mips is missing __popcountsi2 from libc + //{"mips", "mips32-fp", "", []string{"mips"}}, + //{"mips", "mips32r2-fp", "", []string{"mips"}}, + //{"mips", "mips32r2-fp-xburst", "", []string{"mips"}}, + //{"mips", "mips32r6", "", []string{"mips32r6"}}, + // mips32r2dsp[r2]-fp also fails in the assembler for dmisc.c in libc: + // Error: invalid operands `mtlo $ac0,$8' + // Error: invalid operands `mthi $ac0,$3' + //{"mips", "mips32r2dsp-fp", "", []string{"mips"}}, + //{"mips", "mips32r2dspr2-fp", "", []string{"mips"}}, + // mips64r2 is mismatching 64r2 and 64r6 libraries during linking to libgcc + //{"mips64", "mips64r2", "", []string{"mips64"}}, + {"mips64", "mips64r6", "", []string{"mips64"}}, + {"x86", "", "", []string{"x86"}}, + {"x86", "atom", "", []string{"x86"}}, + {"x86", "haswell", "", []string{"x86"}}, + {"x86", "ivybridge", "", []string{"x86"}}, + {"x86", "sandybridge", "", []string{"x86"}}, + {"x86", "silvermont", "", []string{"x86"}}, + {"x86_64", "", "", []string{"x86_64"}}, + {"x86_64", "haswell", "", []string{"x86_64"}}, + {"x86_64", "ivybridge", "", []string{"x86_64"}}, + {"x86_64", "sandybridge", "", []string{"x86_64"}}, + {"x86_64", "silvermont", "", []string{"x86_64"}}, + } + + var ret []Arch + + for _, config := range archSettings { + arch, err := decodeArch(config.arch, &config.archVariant, + &config.cpuVariant, &config.abi) + if err != nil { + return nil, err + } + ret = append(ret, arch) + } + + return ret, nil +} + // Convert a set of strings from product variables into a single Arch struct func decodeArch(arch string, archVariant, cpuVariant *string, abi *[]string) (Arch, error) { stringPtr := func(p *string) string { diff --git a/common/config.go b/common/config.go index 74e06603..a4a20393 100644 --- a/common/config.go +++ b/common/config.go @@ -35,6 +35,7 @@ const productVariablesFileName = "soong.variables" // A FileConfigurableOptions contains options which can be configured by the // config file. These will be included in the config struct. type FileConfigurableOptions struct { + Mega_device *bool `json:",omitempty"` } func (f *FileConfigurableOptions) SetDefaultConfig() { @@ -179,6 +180,13 @@ func NewConfig(srcDir, buildDir string) (Config, error) { return Config{}, err } + if Bool(config.Mega_device) { + deviceArches, err = decodeMegaDevice() + if err != nil { + return Config{}, err + } + } + config.HostArches = hostArches config.DeviceArches = deviceArches @@ -295,3 +303,7 @@ func (c *config) DefaultAppCertificate(ctx PathContext) SourcePath { func (c *config) AllowMissingDependencies() bool { return Bool(c.ProductVariables.Unbundled_build) } + +func (c *config) SkipInstall() bool { + return c.EmbeddedInMake() || Bool(c.Mega_device) +} diff --git a/common/module.go b/common/module.go index 0f6ecb5a..988104ff 100644 --- a/common/module.go +++ b/common/module.go @@ -519,17 +519,19 @@ func (a *androidModuleContext) InstallFileName(installPath OutputPath, name stri fullInstallPath := installPath.Join(a, name) - deps = append(deps, a.installDeps...) - - a.ModuleBuild(pctx, ModuleBuildParams{ - Rule: Cp, - Output: fullInstallPath, - Input: srcPath, - OrderOnly: Paths(deps), - Default: !a.AConfig().EmbeddedInMake(), - }) + if !a.AConfig().SkipInstall() { + deps = append(deps, a.installDeps...) + + a.ModuleBuild(pctx, ModuleBuildParams{ + Rule: Cp, + Output: fullInstallPath, + Input: srcPath, + OrderOnly: Paths(deps), + Default: true, + }) - a.installFiles = append(a.installFiles, fullInstallPath) + a.installFiles = append(a.installFiles, fullInstallPath) + } a.checkbuildFiles = append(a.checkbuildFiles, srcPath) return fullInstallPath } |