diff options
author | 2016-09-29 18:44:50 +0000 | |
---|---|---|
committer | 2016-09-30 08:13:32 +0000 | |
commit | 23d6f632981c1e4b02336dea4ee8fc9ac2379ec1 (patch) | |
tree | e4582d124bd7c2bcc3417759284148f21446e483 /src/main/java/com | |
parent | 13a73e420acf83d888e86dea4d726f5c59587858 (diff) |
Export idl_import_root to Android Studio, so that we know the packages of new AIDL files in relation to their location.
--
MOS_MIGRATED_REVID=134687843
Diffstat (limited to 'src/main/java/com')
5 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java index 1b747b9f9d..a6c84893e5 100644 --- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java @@ -522,6 +522,10 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config builder.setJavaPackage(androidIdeInfoProvider.getJavaPackage()); } + String idlImportRoot = androidIdeInfoProvider.getIdlImportRoot(); + if (idlImportRoot != null) { + builder.setIdlImportRoot(idlImportRoot); + } boolean hasIdlSources = !androidIdeInfoProvider.getIdlSrcs().isEmpty(); builder.setHasIdlSources(hasIdlSources); if (hasIdlSources) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index 82885b6915..b99ee50373 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -260,6 +260,7 @@ public class AndroidCommon { .setIdlSourceJar(idlHelper.getIdlSourceJar()) .setResourceJar(resourceJar) .setAar(aar) + .addIdlImportRoot(idlHelper.getIdlImportRoot()) .addIdlParcelables(idlHelper.getIdlParcelables()) .addIdlSrcs(idlHelper.getIdlSources()) .addIdlGeneratedJavaFiles(idlHelper.getIdlGeneratedJavaSources()) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java index 2f0836dea3..c73eb96137 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java @@ -131,6 +131,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { private Artifact idlSourceJar = null; private OutputJar resourceJar = null; private String javaPackage = null; + private String idlImportRoot = null; private final Set<SourceDirectory> resourceDirs = new LinkedHashSet<>(); private final Set<SourceDirectory> assetDirs = new LinkedHashSet<>(); private final Set<SourceDirectory> idlDirs = new LinkedHashSet<>(); @@ -143,6 +144,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { public AndroidIdeInfoProvider build() { return new AndroidIdeInfoProvider( javaPackage, + idlImportRoot, manifest, generatedManifest, apk, @@ -209,6 +211,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return this; } + public Builder addIdlImportRoot(String idlImportRoot) { + this.idlImportRoot = idlImportRoot; + return this; + } + /** * Add "idl_srcs" contents. */ @@ -290,6 +297,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { } private final String javaPackage; + private final String idlImportRoot; private final Artifact manifest; private final Artifact generatedManifest; private final Artifact signedApk; @@ -307,6 +315,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { AndroidIdeInfoProvider( String javaPackage, + String idlImportRoot, @Nullable Artifact manifest, @Nullable Artifact generatedManifest, @Nullable Artifact signedApk, @@ -322,6 +331,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { ImmutableCollection<Artifact> idlGeneratedJavaFiles, ImmutableCollection<Artifact> apksUnderTest) { this.javaPackage = javaPackage; + this.idlImportRoot = idlImportRoot; this.manifest = manifest; this.generatedManifest = generatedManifest; this.signedApk = signedApk; @@ -363,6 +373,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return this.definesAndroidResources; } + @Nullable + public String getIdlImportRoot() { + return idlImportRoot; + } + /** Returns the direct debug key signed apk, if there is one. */ @Nullable public Artifact getSignedApk() { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java index 8a8f96349b..f27cb736a7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java @@ -105,6 +105,13 @@ public class AndroidIdlHelper { } /** + * Returns the root directory under which idl_srcs and idl_parcelables are located in this rule. + */ + public String getIdlImportRoot() { + return hasExplicitlySpecifiedIdlImportRoot(ruleContext) ? getIdlImportRoot(ruleContext) : null; + } + + /** * Returns the raw (non-processed) idl_srcs, not including parcelable marker files. */ public Collection<Artifact> getIdlSources() { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java index 6bf1d0f177..4caceeee3b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java @@ -170,6 +170,15 @@ public class AndroidSkylarkApiProvider extends SkylarkApiProvider { ) public class IdlInfo { @SkylarkCallable( + name = "import_root", + structField = true, + allowReturnNones = true, + doc = "Returns the root of IDL packages if not the java root." + ) + public String getImportRoot() { + return getIdeInfoProvider().getIdlImportRoot(); + } + @SkylarkCallable( name = "sources", structField = true, doc = "Returns a list of IDL files." |