summaryrefslogtreecommitdiff
path: root/build/codegen.go
diff options
context:
space:
mode:
Diffstat (limited to 'build/codegen.go')
-rw-r--r--build/codegen.go239
1 files changed, 0 insertions, 239 deletions
diff --git a/build/codegen.go b/build/codegen.go
deleted file mode 100644
index 3cc51a8e1f..0000000000
--- a/build/codegen.go
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright (C) 2016 The Android Open Source Project
-//
-// 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 art
-
-// This file implements the "codegen" property to apply different properties based on the currently
-// selected codegen arches, which defaults to all arches on the host and the primary and secondary
-// arches on the device.
-
-import (
- "sort"
- "strings"
-
- "android/soong/android"
-)
-
-type moduleType struct {
- library bool
- static bool
- shared bool
-}
-
-var (
- staticLibrary = moduleType{true, true, false}
- sharedLibrary = moduleType{true, false, true}
- staticAndSharedLibrary = moduleType{true, true, true}
- binary = moduleType{false, false, false}
-)
-
-func codegen(ctx android.LoadHookContext, c *codegenProperties, t moduleType) {
- var hostArches, deviceArches []string
-
- e := ctx.Config().Getenv("ART_HOST_CODEGEN_ARCHS")
- if e == "" {
- hostArches = supportedArches
- } else {
- hostArches = strings.Split(e, " ")
- }
-
- e = ctx.Config().Getenv("ART_TARGET_CODEGEN_ARCHS")
- if e == "" {
- deviceArches = defaultDeviceCodegenArches(ctx)
- } else {
- deviceArches = strings.Split(e, " ")
- }
-
- getCodegenArchProperties := func(archName string) *codegenArchProperties {
- var arch *codegenArchProperties
- switch archName {
- case "arm":
- arch = &c.Codegen.Arm
- case "arm64":
- arch = &c.Codegen.Arm64
- case "riscv64":
- arch = &c.Codegen.Riscv64
- case "x86":
- arch = &c.Codegen.X86
- case "x86_64":
- arch = &c.Codegen.X86_64
- default:
- ctx.ModuleErrorf("Unknown codegen architecture %q", archName)
- }
- return arch
- }
-
- appendCodegenSourceArchProperties := func(p *CodegenSourceArchProperties, archName string) {
- arch := getCodegenArchProperties(archName)
- p.Srcs = append(p.Srcs, arch.CodegenSourceArchProperties.Srcs...)
- }
-
- addCodegenSourceArchProperties := func(host bool, p *CodegenSourceArchProperties) {
- type sourceProps struct {
- Target struct {
- Android *CodegenSourceArchProperties
- Host *CodegenSourceArchProperties
- }
- }
-
- sp := &sourceProps{}
- if host {
- sp.Target.Host = p
- } else {
- sp.Target.Android = p
- }
- ctx.AppendProperties(sp)
- }
-
- addCodegenArchProperties := func(host bool, archName string) {
- type commonProps struct {
- Target struct {
- Android *CodegenCommonArchProperties
- Host *CodegenCommonArchProperties
- }
- }
-
- type libraryProps struct {
- Target struct {
- Android *CodegenLibraryArchProperties
- Host *CodegenLibraryArchProperties
- }
- }
-
- type sharedLibraryProps struct {
- Target struct {
- Android *CodegenLibraryArchSharedProperties
- Host *CodegenLibraryArchSharedProperties
- }
- }
-
- type staticLibraryProps struct {
- Target struct {
- Android *CodegenLibraryArchStaticProperties
- Host *CodegenLibraryArchStaticProperties
- }
- }
-
- arch := getCodegenArchProperties(archName)
-
- cp := &commonProps{}
- lp := &libraryProps{}
- sharedLP := &sharedLibraryProps{}
- staticLP := &staticLibraryProps{}
- if host {
- cp.Target.Host = &arch.CodegenCommonArchProperties
- lp.Target.Host = &arch.CodegenLibraryArchProperties
- sharedLP.Target.Host = &arch.CodegenLibraryArchSharedProperties
- staticLP.Target.Host = &arch.CodegenLibraryArchStaticProperties
- } else {
- cp.Target.Android = &arch.CodegenCommonArchProperties
- lp.Target.Android = &arch.CodegenLibraryArchProperties
- sharedLP.Target.Android = &arch.CodegenLibraryArchSharedProperties
- staticLP.Target.Android = &arch.CodegenLibraryArchStaticProperties
- }
-
- ctx.AppendProperties(cp)
- if t.library {
- ctx.AppendProperties(lp)
- if t.static {
- ctx.AppendProperties(staticLP)
- }
- if t.shared {
- ctx.AppendProperties(sharedLP)
- }
- }
- }
-
- addCodegenProperties := func(host bool, arches []string) {
- sourceProps := &CodegenSourceArchProperties{}
- for _, arch := range arches {
- appendCodegenSourceArchProperties(sourceProps, arch)
- addCodegenArchProperties(host, arch)
- }
- sourceProps.Srcs = android.FirstUniqueStrings(sourceProps.Srcs)
- addCodegenSourceArchProperties(host, sourceProps)
- }
-
- addCodegenProperties(false /* host */, deviceArches)
- addCodegenProperties(true /* host */, hostArches)
-}
-
-// These properties are allowed to contain the same source file name in different architectures.
-// They we will be deduplicated automatically.
-type CodegenSourceArchProperties struct {
- Srcs []string
-}
-
-type CodegenCommonArchProperties struct {
- Cflags []string
- Cppflags []string
-}
-
-type CodegenLibraryArchProperties struct {
- Static_libs []string
- Export_static_lib_headers []string
-}
-
-type CodegenLibraryArchStaticProperties struct {
- Static struct {
- Whole_static_libs []string
- }
-}
-type CodegenLibraryArchSharedProperties struct {
- Shared struct {
- Shared_libs []string
- Export_shared_lib_headers []string
- }
-}
-
-type codegenArchProperties struct {
- CodegenSourceArchProperties
- CodegenCommonArchProperties
- CodegenLibraryArchProperties
- CodegenLibraryArchStaticProperties
- CodegenLibraryArchSharedProperties
-}
-
-type codegenProperties struct {
- Codegen struct {
- Arm, Arm64, Riscv64, X86, X86_64 codegenArchProperties
- }
-}
-
-func defaultDeviceCodegenArches(ctx android.LoadHookContext) []string {
- arches := make(map[string]bool)
- for _, a := range ctx.DeviceConfig().Arches() {
- s := a.ArchType.String()
- arches[s] = true
- if s == "arm64" {
- arches["arm"] = true
- } else if s == "riscv64" {
- arches["riscv64"] = true
- } else if s == "x86_64" {
- arches["x86"] = true
- }
- }
- ret := make([]string, 0, len(arches))
- for a := range arches {
- ret = append(ret, a)
- }
- sort.Strings(ret)
- return ret
-}
-
-func installCodegenCustomizer(module android.Module, t moduleType) {
- c := &codegenProperties{}
- android.AddLoadHook(module, func(ctx android.LoadHookContext) { codegen(ctx, c, t) })
- module.AddProperties(c)
-}