aboutsummaryrefslogtreecommitdiff
path: root/gradle
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@google.com>2013-11-13 14:43:16 -0800
committerXavier Ducrohet <xav@google.com>2013-11-13 18:56:55 -0800
commit2e1f7810edd76d92cee8d3e06bc4dec0c288adea (patch)
tree2955ede4f3b63c7b04d7124b5aeffad59d9fcc66 /gradle
parentd3cc5cac69f3e2229a353554f6f50d969610ce3d (diff)
downloadbuild-2e1f7810edd76d92cee8d3e06bc4dec0c288adea.tar.gz
Renderscript Support Mode.
Change-Id: If469c1edc5f38671cdebc5271b14a2e1b908f428
Diffstat (limited to 'gradle')
-rw-r--r--gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy59
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/ProductFlavorImpl.java8
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy1
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/PreDex.groovy1
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy32
6 files changed, 86 insertions, 17 deletions
diff --git a/gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java b/gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java
index e06ae21..b7fcc98 100644
--- a/gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java
+++ b/gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java
@@ -39,7 +39,7 @@ public class AutomatedBuildTest extends BuildTest {
"libProguardLibDep", "libTestDep", "libsTest", "localJars", "migrated", "multiproject",
"multires", "ndkSanAngeles", "overlay1", "overlay2", "pkgOverride", "proguard",
"proguardLib", "renderscript", "renderscriptInLib", "renderscriptMultiSrc",
- "sameNamedLibs", "tictactoe" /*, "autorepo"*/
+ "rsSupportMode", "sameNamedLibs", "tictactoe" /*, "autorepo"*/
};
private static final String[] sReportProjects = new String[] {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
index 59d9192..bf799a6 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -445,6 +445,7 @@ public abstract class BasePlugin {
renderscriptTask.variant = variantData
renderscriptTask.targetApi = config.mergedFlavor.renderscriptTargetApi
+ renderscriptTask.supportMode = config.mergedFlavor.renderscriptSupportMode
renderscriptTask.debugBuild = config.buildType.renderscriptDebugBuild
renderscriptTask.optimLevel = config.buildType.renderscriptOptimLevel
@@ -457,6 +458,30 @@ public abstract class BasePlugin {
renderscriptTask.conventionMapping.resOutputDir = {
project.file("$project.buildDir/res/rs/$variantData.dirName")
}
+ renderscriptTask.conventionMapping.objOutputDir = {
+ project.file("$project.buildDir/rs/$variantData.dirName/obj")
+ }
+ renderscriptTask.conventionMapping.libOutputDir = {
+ project.file("$project.buildDir/rs/$variantData.dirName/lib")
+ }
+ renderscriptTask.conventionMapping.ndkConfig = {
+
+ //noinspection GroovyAssignabilityCheck
+ NdkConfigDsl mergedConfig = new NdkConfigDsl(config.defaultConfig.ndkConfig)
+ if (config.hasFlavors()) {
+ for (DefaultProductFlavor flavorConfig : config.flavorConfigs) {
+ //noinspection GroovyAssignabilityCheck
+ mergedConfig.append(flavorConfig.ndkConfig)
+ }
+ }
+ if (config.getType() != VariantConfiguration.Type.TEST) {
+ //noinspection GroovyAssignabilityCheck
+ mergedConfig.append(config.buildType.ndkConfig)
+ }
+
+ return mergedConfig
+ }
+
}
protected void createMergeResourcesTask(@NonNull BaseVariantData variantData,
@@ -689,11 +714,11 @@ public abstract class BasePlugin {
// dependency.
if (testedVariantData instanceof ApplicationVariantData) {
compileTask.conventionMapping.classpath = {
- project.files(config.compileClasspath) + testedVariantData.javaCompileTask.classpath + testedVariantData.javaCompileTask.outputs.files
+ project.files(getAndroidBuilder(variantData).getCompileClasspath(config)) + testedVariantData.javaCompileTask.classpath + testedVariantData.javaCompileTask.outputs.files
}
} else {
compileTask.conventionMapping.classpath = {
- project.files(config.compileClasspath)
+ project.files(getAndroidBuilder(variantData).getCompileClasspath(config))
}
}
@@ -1209,7 +1234,7 @@ public abstract class BasePlugin {
preDexTask.dexOptions = extension.dexOptions
preDexTask.conventionMapping.inputFiles = {
- project.files(variantConfig.packagedJars)
+ project.files(getAndroidBuilder(variantData).getPackagedJars(variantConfig))
}
preDexTask.conventionMapping.outputFolder = {
project.file(
@@ -1230,7 +1255,7 @@ public abstract class BasePlugin {
}
} else {
dexTask.conventionMapping.preDexedLibraries = {
- project.files(variantConfig.packagedJars)
+ project.files(getAndroidBuilder(variantData).getPackagedJars(variantConfig))
}
}
}
@@ -1243,27 +1268,36 @@ public abstract class BasePlugin {
packageApp.plugin = this
packageApp.variant = variantData
- VariantConfiguration config = variantData.variantConfiguration
-
packageApp.conventionMapping.resourceFile = {
variantData.processResourcesTask.packageOutputFile
}
packageApp.conventionMapping.dexFile = { dexTask.outputFile }
- packageApp.conventionMapping.packagedJars = { config.packagedJars }
+ packageApp.conventionMapping.packagedJars = { getAndroidBuilder(variantData).getPackagedJars(variantConfig) }
packageApp.conventionMapping.javaResourceDir = {
getOptionalDir(variantData.processJavaResourcesTask.destinationDir)
}
packageApp.conventionMapping.jniFolders = {
// for now only the project's compilation output.
// TODO add dependencies
- Collections.singleton(variantData.ndkCompileTask.soFolder)
+ Set<File> set = Sets.newHashSet()
+ set.addAll(variantData.ndkCompileTask.soFolder)
+ set.addAll(variantData.renderscriptCompileTask.libOutputDir)
+
+ if (variantConfig.mergedFlavor.renderscriptSupportMode) {
+ File rsLibs = getAndroidBuilder(variantData).getSupportNativeLibFolder()
+ if (rsLibs.isDirectory()) {
+ set.add(rsLibs);
+ }
+ }
+
+ return set
}
packageApp.conventionMapping.abiFilters = {
variantData.ndkCompileTask.getNdkConfig().abiFilters
}
- packageApp.conventionMapping.jniDebugBuild = { config.buildType.jniDebugBuild }
+ packageApp.conventionMapping.jniDebugBuild = { variantConfig.buildType.jniDebugBuild }
- SigningConfigDsl sc = (SigningConfigDsl) config.signingConfig
+ SigningConfigDsl sc = (SigningConfigDsl) variantConfig.signingConfig
packageApp.conventionMapping.signingConfig = { sc }
if (sc != null) {
ValidateSigningTask validateSigningTask = validateSigningTaskMap.get(sc)
@@ -1378,6 +1412,8 @@ public abstract class BasePlugin {
// also the config file output by aapt
proguardTask.configuration(variantData.processResourcesTask.proguardOutputFile)
+ List<File> packagedJars = getAndroidBuilder(variantData).getPackagedJars(variantConfig)
+
if (variantData instanceof LibraryVariantData) {
String packageName = variantConfig.getPackageFromManifest()
if (packageName == null) {
@@ -1398,7 +1434,6 @@ public abstract class BasePlugin {
String include = exclude.replace('!', '')
proguardTask.libraryjars(variantData.javaCompileTask.destinationDir, filter: include)
- List<File> packagedJars = variantConfig.packagedJars
// injar: the local dependencies, filter out local jars from packagedJars
Object[] jars = LibraryPlugin.getLocalJarFileList(variantData.variantDependency)
@@ -1421,7 +1456,7 @@ public abstract class BasePlugin {
proguardTask.injars(variantData.javaCompileTask.destinationDir)
// injar: the dependencies
- for (File inJar : variantConfig.packagedJars) {
+ for (File inJar : packagedJars) {
proguardTask.injars(inJar, filter: '!META-INF/MANIFEST.MF')
}
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ProductFlavorImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ProductFlavorImpl.java
index 37e022d..8dabb11 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ProductFlavorImpl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ProductFlavorImpl.java
@@ -36,6 +36,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
private int mMinSdkVersion = -1;
private int mTargetSdkVersion = -1;
private int mRenderscriptTargetApi = -1;
+ private boolean mRenderscriptSupportMode = false;
private int mVersionCode = -1;
private String mVersionName = null;
private String mPackageName = null;
@@ -52,6 +53,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
clonedFlavor.mMinSdkVersion = productFlavor.getMinSdkVersion();
clonedFlavor.mTargetSdkVersion = productFlavor.getTargetSdkVersion();
clonedFlavor.mRenderscriptTargetApi = productFlavor.getRenderscriptTargetApi();
+ clonedFlavor.mRenderscriptSupportMode = productFlavor.getRenderscriptSupportMode();
clonedFlavor.mVersionCode = productFlavor.getVersionCode();
clonedFlavor.mVersionName = productFlavor.getVersionName();
@@ -107,6 +109,11 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
return mRenderscriptTargetApi;
}
+ @Override
+ public boolean getRenderscriptSupportMode() {
+ return mRenderscriptSupportMode;
+ }
+
@Nullable
@Override
public String getTestPackageName() {
@@ -138,6 +145,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
", mMinSdkVersion=" + mMinSdkVersion +
", mTargetSdkVersion=" + mTargetSdkVersion +
", mRenderscriptTargetApi=" + mRenderscriptTargetApi +
+ ", mRenderscriptSupportMode=" + mRenderscriptSupportMode +
", mVersionCode=" + mVersionCode +
", mVersionName='" + mVersionName + '\'' +
", mPackageName='" + mPackageName + '\'' +
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy
index fd827c1..de6d159 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/PackageApplication.groovy
@@ -71,7 +71,6 @@ public class PackageApplication extends IncrementalTask implements OutputFileTas
return src == null ? getProject().files().getAsFileTree() : src
}
-
@Override
protected void doFullTaskAction() {
try {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/PreDex.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/PreDex.groovy
index b0aa26d..6a464fe 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/PreDex.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/PreDex.groovy
@@ -61,6 +61,7 @@ public class PreDex extends BaseTask {
AndroidBuilder builder = getBuilder()
taskInputs.outOfDate { change ->
+
//noinspection GroovyAssignabilityCheck
File preDexedFile = getDexFileName(outFolder, change.file)
//noinspection GroovyAssignabilityCheck
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy
index 853a0a9..c7a748e 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy
@@ -15,9 +15,12 @@
*/
package com.android.build.gradle.tasks
+
+import com.android.build.gradle.internal.dsl.NdkConfigDsl
import com.android.build.gradle.internal.tasks.BaseTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.Nested
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
/**
@@ -33,6 +36,13 @@ public class RenderscriptCompile extends BaseTask {
@OutputDirectory
File resOutputDir
+ @OutputDirectory
+ File objOutputDir
+
+ @OutputDirectory
+ File libOutputDir
+
+
// ----- PRIVATE TASK API -----
@InputFiles
@@ -42,14 +52,20 @@ public class RenderscriptCompile extends BaseTask {
List<File> importDirs
@Input
- int optimLevel
+ int targetApi
@Input
- int targetApi
+ boolean supportMode
+
+ @Input
+ int optimLevel
@Input
boolean debugBuild
+ @Nested
+ NdkConfigDsl ndkConfig
+
@TaskAction
void taskAction() {
// this is full run (always), clean the previous outputs
@@ -59,6 +75,12 @@ public class RenderscriptCompile extends BaseTask {
File resDestDir = getResOutputDir()
emptyFolder(resDestDir)
+ File objDestDir = getObjOutputDir()
+ emptyFolder(objDestDir)
+
+ File libDestDir = getLibOutputDir()
+ emptyFolder(libDestDir)
+
// get the import folders. If the .rsh files are not directly under the import folders,
// we need to get the leaf folders, as this is what llvm-rs-cc expects.
List<File> importFolders = getBuilder().getLeafFolders("rsh",
@@ -69,8 +91,12 @@ public class RenderscriptCompile extends BaseTask {
importFolders,
sourceDestDir,
resDestDir,
+ objDestDir,
+ libDestDir,
getTargetApi(),
getDebugBuild(),
- getOptimLevel())
+ getOptimLevel(),
+ getSupportMode(),
+ getNdkConfig().abiFilters)
}
}