add aidl.export_include_dirs to java_import module type

This allows a java prebuilt to export AIDL files to its clients.

Bug: 151933053
Test: m
Change-Id: I21b5d5ce647141a7c76f62490adbccb858b10323
This commit is contained in:
Jiyong Park 2020-03-24 16:44:11 +09:00
parent b358ebb759
commit 19604de13e
3 changed files with 36 additions and 1 deletions

View File

@ -2338,6 +2338,12 @@ type ImportProperties struct {
// set the name of the output
Stem *string
Aidl struct {
// directories that should be added as include directories for any aidl sources of modules
// that depend on this module, as well as to aidl for this module.
Export_include_dirs []string
}
}
type Import struct {
@ -2351,6 +2357,7 @@ type Import struct {
combinedClasspathFile android.Path
exportedSdkLibs []string
exportAidlIncludeDirs android.Paths
}
func (j *Import) sdkVersion() sdkSpec {
@ -2424,6 +2431,8 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"),
jarName, outputFile)
}
j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.properties.Aidl.Export_include_dirs)
}
var _ Dependency = (*Import)(nil)
@ -2458,7 +2467,7 @@ func (j *Import) DexJar() android.Path {
}
func (j *Import) AidlIncludeDirs() android.Paths {
return nil
return j.exportAidlIncludeDirs
}
func (j *Import) ExportedSdkLibs() []string {

View File

@ -1491,3 +1491,27 @@ func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, m
t.Errorf("bootclasspath of %q must start with --system and end with %q, but was %#v.", moduleName, expectedSuffix, bootClasspath)
}
}
func TestAidlExportIncludeDirsFromImports(t *testing.T) {
ctx, _ := testJava(t, `
java_library {
name: "foo",
srcs: ["aidl/foo/IFoo.aidl"],
libs: ["bar"],
}
java_import {
name: "bar",
jars: ["a.jar"],
aidl: {
export_include_dirs: ["aidl/bar"],
},
}
`)
aidlCommand := ctx.ModuleForTests("foo", "android_common").Rule("aidl").RuleParams.Command
expectedAidlFlag := "-Iaidl/bar"
if !strings.Contains(aidlCommand, expectedAidlFlag) {
t.Errorf("aidl command %q does not contain %q", aidlCommand, expectedAidlFlag)
}
}

View File

@ -50,6 +50,8 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
"api/test-current.txt": nil,
"api/test-removed.txt": nil,
"framework/aidl/a.aidl": nil,
"aidl/foo/IFoo.aidl": nil,
"aidl/bar/IBar.aidl": nil,
"assets_a/a": nil,
"assets_b/b": nil,