aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.bp2
-rw-r--r--android/filegroup.go (renamed from genrule/filegroup.go)33
-rw-r--r--android/module.go1
-rw-r--r--android/prebuilt.go19
-rw-r--r--android/prebuilt_test.go14
-rw-r--r--cc/builder.go2
-rw-r--r--cc/cc.go3
-rw-r--r--cc/cc_test.go3
-rw-r--r--cc/test_data_test.go3
-rw-r--r--java/java.go29
-rw-r--r--java/java_test.go29
11 files changed, 80 insertions, 58 deletions
diff --git a/Android.bp b/Android.bp
index ad2ad478..f2289da9 100644
--- a/Android.bp
+++ b/Android.bp
@@ -46,6 +46,7 @@ bootstrap_go_package {
"android/defaults.go",
"android/defs.go",
"android/expand.go",
+ "android/filegroup.go",
"android/hooks.go",
"android/makevars.go",
"android/module.go",
@@ -186,7 +187,6 @@ bootstrap_go_package {
"soong-shared",
],
srcs: [
- "genrule/filegroup.go",
"genrule/genrule.go",
],
pluginFor: ["soong_build"],
diff --git a/genrule/filegroup.go b/android/filegroup.go
index 2cff5fee..b284ce02 100644
--- a/genrule/filegroup.go
+++ b/android/filegroup.go
@@ -12,17 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package genrule
+package android
import (
- "android/soong/android"
"io"
"strings"
"text/template"
)
func init() {
- android.RegisterModuleType("filegroup", FileGroupFactory)
+ RegisterModuleType("filegroup", FileGroupFactory)
}
type fileGroupProperties struct {
@@ -43,34 +42,34 @@ type fileGroupProperties struct {
}
type fileGroup struct {
- android.ModuleBase
+ ModuleBase
properties fileGroupProperties
- srcs android.Paths
+ srcs Paths
}
-var _ android.SourceFileProducer = (*fileGroup)(nil)
+var _ SourceFileProducer = (*fileGroup)(nil)
// filegroup modules contain a list of files, and can be used to export files across package
// boundaries. filegroups (and genrules) can be referenced from srcs properties of other modules
// using the syntax ":module".
-func FileGroupFactory() android.Module {
+func FileGroupFactory() Module {
module := &fileGroup{}
module.AddProperties(&module.properties)
- android.InitAndroidModule(module)
+ InitAndroidModule(module)
return module
}
-func (fg *fileGroup) DepsMutator(ctx android.BottomUpMutatorContext) {
- android.ExtractSourcesDeps(ctx, fg.properties.Srcs)
- android.ExtractSourcesDeps(ctx, fg.properties.Exclude_srcs)
+func (fg *fileGroup) DepsMutator(ctx BottomUpMutatorContext) {
+ ExtractSourcesDeps(ctx, fg.properties.Srcs)
+ ExtractSourcesDeps(ctx, fg.properties.Exclude_srcs)
}
-func (fg *fileGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) {
fg.srcs = ctx.ExpandSourcesSubDir(fg.properties.Srcs, fg.properties.Exclude_srcs, String(fg.properties.Path))
}
-func (fg *fileGroup) Srcs() android.Paths {
- return append(android.Paths{}, fg.srcs...)
+func (fg *fileGroup) Srcs() Paths {
+ return append(Paths{}, fg.srcs...)
}
var androidMkTemplate = template.Must(template.New("filegroup").Parse(`
@@ -81,9 +80,9 @@ endif
.KATI_READONLY := {{.makeVar}}
`))
-func (fg *fileGroup) AndroidMk() android.AndroidMkData {
- return android.AndroidMkData{
- Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) {
+func (fg *fileGroup) AndroidMk() AndroidMkData {
+ return AndroidMkData{
+ Custom: func(w io.Writer, name, prefix, moduleDir string, data AndroidMkData) {
if makeVar := String(fg.properties.Export_to_make_var); makeVar != "" {
androidMkTemplate.Execute(w, map[string]string{
"makeVar": makeVar,
diff --git a/android/module.go b/android/module.go
index a011f571..3bd256a4 100644
--- a/android/module.go
+++ b/android/module.go
@@ -323,6 +323,7 @@ func InitAndroidModule(m Module) {
&base.nameProperties,
&base.commonProperties,
&base.variableProperties)
+ base.customizableProperties = m.GetProperties()
}
func InitAndroidArchModule(m Module, hod HostOrDeviceSupported, defaultMultilib Multilib) {
diff --git a/android/prebuilt.go b/android/prebuilt.go
index 9356aabb..47c5cf53 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -59,7 +59,9 @@ func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
return nil
}
- return PathForModuleSrc(ctx, (*p.srcs)[0])
+ // Return the singleton source after expanding any filegroup in the
+ // sources.
+ return ctx.ExpandSource((*p.srcs)[0], "")
}
func InitPrebuiltModule(module PrebuiltInterface, srcs *[]string) {
@@ -79,7 +81,7 @@ func RegisterPrebuiltsPreArchMutators(ctx RegisterMutatorsContext) {
func RegisterPrebuiltsPostDepsMutators(ctx RegisterMutatorsContext) {
ctx.TopDown("prebuilt_select", PrebuiltSelectModuleMutator).Parallel()
- ctx.BottomUp("prebuilt_replace", PrebuiltReplaceMutator).Parallel()
+ ctx.BottomUp("prebuilt_postdeps", PrebuiltPostDepsMutator).Parallel()
}
// prebuiltMutator ensures that there is always a module with an undecorated name, and marks
@@ -119,10 +121,12 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
}
}
-// PrebuiltReplaceMutator replaces dependencies on the source module with dependencies on the
-// prebuilt when both modules exist and the prebuilt should be used. When the prebuilt should not
-// be used, disable installing it.
-func PrebuiltReplaceMutator(ctx BottomUpMutatorContext) {
+// PrebuiltPostDepsMutator does two operations. It replace dependencies on the
+// source module with dependencies on the prebuilt when both modules exist and
+// the prebuilt should be used. When the prebuilt should not be used, disable
+// installing it. Secondly, it also adds a sourcegroup to any filegroups found
+// in the prebuilt's 'Srcs' property.
+func PrebuiltPostDepsMutator(ctx BottomUpMutatorContext) {
if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil {
p := m.Prebuilt()
name := m.base().BaseModuleName()
@@ -133,6 +137,9 @@ func PrebuiltReplaceMutator(ctx BottomUpMutatorContext) {
} else {
m.SkipInstall()
}
+ if len(*p.srcs) > 0 {
+ ExtractSourceDeps(ctx, &(*p.srcs)[0])
+ }
}
}
diff --git a/android/prebuilt_test.go b/android/prebuilt_test.go
index 69ce16a3..cd1ffae1 100644
--- a/android/prebuilt_test.go
+++ b/android/prebuilt_test.go
@@ -109,6 +109,19 @@ var prebuiltsTests = []struct {
}`,
prebuilt: false,
},
+ {
+ name: "prebuilt file from filegroup preferred",
+ modules: `
+ filegroup {
+ name: "fg",
+ }
+ prebuilt {
+ name: "bar",
+ prefer: true,
+ srcs: [":fg"],
+ }`,
+ prebuilt: true,
+ },
}
func TestPrebuilts(t *testing.T) {
@@ -125,6 +138,7 @@ func TestPrebuilts(t *testing.T) {
ctx := NewTestContext()
ctx.PreArchMutators(RegisterPrebuiltsPreArchMutators)
ctx.PostDepsMutators(RegisterPrebuiltsPostDepsMutators)
+ ctx.RegisterModuleType("filegroup", ModuleFactoryAdaptor(FileGroupFactory))
ctx.RegisterModuleType("prebuilt", ModuleFactoryAdaptor(newPrebuiltModule))
ctx.RegisterModuleType("source", ModuleFactoryAdaptor(newSourceModule))
ctx.Register()
diff --git a/cc/builder.go b/cc/builder.go
index a88df888..cec00564 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -205,7 +205,7 @@ var (
distAbiDiffDir := android.PathForDist(ctx, "abidiffs")
commandStr += "|| (echo ' ---- Please update abi references by running platform/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l ${libName} ----'"
if distAbiDiffDir.Valid() {
- commandStr += ") && (mkdir -p " + distAbiDiffDir.String() + " && cp ${out} " + distAbiDiffDir.String()
+ commandStr += " && (mkdir -p " + distAbiDiffDir.String() + " && cp ${out} " + distAbiDiffDir.String() + ")"
}
commandStr += " && exit 1)"
return blueprint.RuleParams{
diff --git a/cc/cc.go b/cc/cc.go
index 8c114290..19059907 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -539,13 +539,14 @@ func (ctx *moduleContextImpl) isVndkExt() bool {
// Create source abi dumps if the module belongs to the list of VndkLibraries.
func (ctx *moduleContextImpl) createVndkSourceAbiDump() bool {
+ skipAbiChecks := ctx.ctx.Config().IsEnvTrue("SKIP_ABI_CHECKS")
isUnsanitizedVariant := true
sanitize := ctx.mod.sanitize
if sanitize != nil {
isUnsanitizedVariant = sanitize.isUnsanitizedVariant()
}
vendorAvailable := Bool(ctx.mod.VendorProperties.Vendor_available)
- return isUnsanitizedVariant && ctx.ctx.Device() && ((ctx.useVndk() && ctx.isVndk() && vendorAvailable) || inList(ctx.baseModuleName(), llndkLibraries))
+ return !skipAbiChecks && isUnsanitizedVariant && ctx.ctx.Device() && ((ctx.useVndk() && ctx.isVndk() && vendorAvailable) || inList(ctx.baseModuleName(), llndkLibraries))
}
func (ctx *moduleContextImpl) selectedStl() string {
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 10c1aba7..9b4cc0fa 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -16,7 +16,6 @@ package cc
import (
"android/soong/android"
- "android/soong/genrule"
"fmt"
"io/ioutil"
@@ -62,7 +61,7 @@ func createTestContext(t *testing.T, config android.Config, bp string) *android.
ctx.RegisterModuleType("llndk_headers", android.ModuleFactoryAdaptor(llndkHeadersFactory))
ctx.RegisterModuleType("vendor_public_library", android.ModuleFactoryAdaptor(vendorPublicLibraryFactory))
ctx.RegisterModuleType("cc_object", android.ModuleFactoryAdaptor(objectFactory))
- ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(genrule.FileGroupFactory))
+ ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory))
ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) {
ctx.BottomUp("image", vendorMutator).Parallel()
ctx.BottomUp("link", linkageMutator).Parallel()
diff --git a/cc/test_data_test.go b/cc/test_data_test.go
index 4a7b0f75..56c3e38c 100644
--- a/cc/test_data_test.go
+++ b/cc/test_data_test.go
@@ -22,7 +22,6 @@ import (
"testing"
"android/soong/android"
- "android/soong/genrule"
)
type dataFile struct {
@@ -129,7 +128,7 @@ func TestDataTests(t *testing.T) {
"dir/bar/baz": nil,
})
ctx.RegisterModuleType("filegroup",
- android.ModuleFactoryAdaptor(genrule.FileGroupFactory))
+ android.ModuleFactoryAdaptor(android.FileGroupFactory))
ctx.RegisterModuleType("test",
android.ModuleFactoryAdaptor(newTest))
ctx.Register()
diff --git a/java/java.go b/java/java.go
index bc58df3a..277cdafd 100644
--- a/java/java.go
+++ b/java/java.go
@@ -387,24 +387,29 @@ func decodeSdkDep(ctx android.BaseContext, v string) sdkDep {
}
}
- toFile := func(v string) sdkDep {
- isCore := strings.HasPrefix(v, "core_")
- if isCore {
- v = strings.TrimPrefix(v, "core_")
+ toPrebuilt := func(sdk string) sdkDep {
+ var api, v string
+ if strings.Contains(sdk, "_") {
+ t := strings.Split(sdk, "_")
+ api = t[0]
+ v = t[1]
+ } else {
+ api = "public"
+ v = sdk
}
- dir := filepath.Join("prebuilts/sdk", v)
+ dir := filepath.Join("prebuilts", "sdk", v, api)
jar := filepath.Join(dir, "android.jar")
- if isCore {
- jar = filepath.Join(dir, "core.jar")
- }
- aidl := filepath.Join(dir, "framework.aidl")
+ // There's no aidl for other SDKs yet.
+ // TODO(77525052): Add aidl files for other SDKs too.
+ public_dir := filepath.Join("prebuilts", "sdk", v, "public")
+ aidl := filepath.Join(public_dir, "framework.aidl")
jarPath := android.ExistentPathForSource(ctx, jar)
aidlPath := android.ExistentPathForSource(ctx, aidl)
if (!jarPath.Valid() || !aidlPath.Valid()) && ctx.Config().AllowMissingDependencies() {
return sdkDep{
invalidVersion: true,
- module: "sdk_v" + v,
+ module: fmt.Sprintf("sdk_%s_%s_android", api, v),
}
}
@@ -439,7 +444,7 @@ func decodeSdkDep(ctx android.BaseContext, v string) sdkDep {
}
if ctx.Config().UnbundledBuild() && v != "" {
- return toFile(v)
+ return toPrebuilt(v)
}
switch v {
@@ -457,7 +462,7 @@ func decodeSdkDep(ctx android.BaseContext, v string) sdkDep {
case "core_current":
return toModule("core.current.stubs", "")
default:
- return toFile(v)
+ return toPrebuilt(v)
}
}
diff --git a/java/java_test.go b/java/java_test.go
index 0e7bb18b..d4f2be19 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -78,7 +78,7 @@ func testContext(config android.Config, bp string,
ctx.RegisterModuleType("java_defaults", android.ModuleFactoryAdaptor(defaultsFactory))
ctx.RegisterModuleType("java_system_modules", android.ModuleFactoryAdaptor(SystemModulesFactory))
ctx.RegisterModuleType("java_genrule", android.ModuleFactoryAdaptor(genRuleFactory))
- ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(genrule.FileGroupFactory))
+ ctx.RegisterModuleType("filegroup", android.ModuleFactoryAdaptor(android.FileGroupFactory))
ctx.RegisterModuleType("genrule", android.ModuleFactoryAdaptor(genrule.GenRuleFactory))
ctx.RegisterModuleType("droiddoc", android.ModuleFactoryAdaptor(DroiddocFactory))
ctx.RegisterModuleType("droiddoc_host", android.ModuleFactoryAdaptor(DroiddocHostFactory))
@@ -151,17 +151,14 @@ func testContext(config android.Config, bp string,
"java-fg/b.java": nil,
"java-fg/c.java": nil,
- "prebuilts/sdk/14/android.jar": nil,
- "prebuilts/sdk/14/framework.aidl": nil,
- "prebuilts/sdk/current/android.jar": nil,
- "prebuilts/sdk/current/framework.aidl": nil,
- "prebuilts/sdk/current/core.jar": nil,
- "prebuilts/sdk/system_current/android.jar": nil,
- "prebuilts/sdk/system_current/framework.aidl": nil,
- "prebuilts/sdk/system_14/android.jar": nil,
- "prebuilts/sdk/system_14/framework.aidl": nil,
- "prebuilts/sdk/test_current/android.jar": nil,
- "prebuilts/sdk/test_current/framework.aidl": nil,
+ "prebuilts/sdk/14/public/android.jar": nil,
+ "prebuilts/sdk/14/public/framework.aidl": nil,
+ "prebuilts/sdk/14/system/android.jar": nil,
+ "prebuilts/sdk/current/public/android.jar": nil,
+ "prebuilts/sdk/current/public/framework.aidl": nil,
+ "prebuilts/sdk/current/public/core.jar": nil,
+ "prebuilts/sdk/current/system/android.jar": nil,
+ "prebuilts/sdk/current/test/android.jar": nil,
// For framework-res, which is an implicit dependency for framework
"AndroidManifest.xml": nil,
@@ -340,7 +337,7 @@ var classpathTestcases = []struct {
properties: `sdk_version: "14",`,
bootclasspath: []string{`""`},
system: "bootclasspath", // special value to tell 1.9 test to expect bootclasspath
- classpath: []string{"prebuilts/sdk/14/android.jar"},
+ classpath: []string{"prebuilts/sdk/14/public/android.jar"},
},
{
@@ -362,7 +359,7 @@ var classpathTestcases = []struct {
properties: `sdk_version: "system_14",`,
bootclasspath: []string{`""`},
system: "bootclasspath", // special value to tell 1.9 test to expect bootclasspath
- classpath: []string{"prebuilts/sdk/system_14/android.jar"},
+ classpath: []string{"prebuilts/sdk/14/system/android.jar"},
},
{
@@ -864,9 +861,9 @@ func TestTurbine(t *testing.T) {
if len(barTurbineCombined.Inputs) != 2 || barTurbineCombined.Inputs[1].String() != fooHeaderJar {
t.Errorf("bar turbine combineJar inputs %v does not contain %q", barTurbineCombined.Inputs, fooHeaderJar)
}
- if !strings.Contains(bazJavac.Args["classpath"], "prebuilts/sdk/14/android.jar") {
+ if !strings.Contains(bazJavac.Args["classpath"], "prebuilts/sdk/14/public/android.jar") {
t.Errorf("baz javac classpath %v does not contain %q", bazJavac.Args["classpath"],
- "prebuilts/sdk/14/android.jar")
+ "prebuilts/sdk/14/public/android.jar")
}
}