aboutsummaryrefslogtreecommitdiff
path: root/gradle
diff options
context:
space:
mode:
Diffstat (limited to 'gradle')
-rw-r--r--gradle/src/build-test/groovy/com/android/build/gradle/AutomatedBuildTest.java4
-rw-r--r--gradle/src/device-test/groovy/com/android/build/gradle/DeviceTest.java4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy38
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java1
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy4
-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/NdkCompile.groovy40
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/RenderscriptCompile.groovy4
8 files changed, 82 insertions, 21 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 5372005..18e3277 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
@@ -37,8 +37,8 @@ public class AutomatedBuildTest extends BuildTest {
"aidl", "api", "applibtest", "assets", "attrOrder", "basic", "dependencies",
"dependencyChecker", "flavored", "flavorlib", "flavors", "genFolderApi",
"libProguardJarDep", "libProguardLibDep", "libTestDep", "libsTest", "localJars",
- "migrated", "multiproject", "multires", "ndkSanAngeles", "overlay1", "overlay2",
- "pkgOverride", "proguard", "proguardLib", "renderscript", "renderscriptInLib",
+ "migrated", "multiproject", "multires", "ndkSanAngeles", "ndkJniLib", "overlay1",
+ "overlay2", "pkgOverride", "proguard", "proguardLib", "renderscript", "renderscriptInLib",
"renderscriptMultiSrc", "rsSupportMode", "sameNamedLibs", "tictactoe" /*, "autorepo"*/
};
diff --git a/gradle/src/device-test/groovy/com/android/build/gradle/DeviceTest.java b/gradle/src/device-test/groovy/com/android/build/gradle/DeviceTest.java
index e025033..0e410f1 100644
--- a/gradle/src/device-test/groovy/com/android/build/gradle/DeviceTest.java
+++ b/gradle/src/device-test/groovy/com/android/build/gradle/DeviceTest.java
@@ -40,8 +40,8 @@ public class DeviceTest extends BuildTest {
private static final String[] sBuiltProjects = new String[] {
"api", "assets", "applibtest", "attrOrder", "basic", "dependencies", "flavored",
"flavorlib", "flavors", "libProguardJarDep", "libProguardLibDep", "libTestDep", "libsTest",
- "migrated", "multires", "overlay1", "overlay2", "pkgOverride", "proguard", "proguardLib",
- "sameNamedLibs"
+ "migrated", "multires", "ndkJniLib", "overlay1", "overlay2", "pkgOverride", "proguard",
+ "proguardLib", "sameNamedLibs"
};
public static Test suite() {
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 a01bf7b..1e3605e 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -462,13 +462,21 @@ public abstract class BasePlugin {
RenderscriptCompile)
variantData.renderscriptCompileTask = renderscriptTask
- variantData.sourceGenTask.dependsOn renderscriptTask
+ ProductFlavor mergedFlavor = config.mergedFlavor
+ boolean ndkMode = mergedFlavor.renderscriptNdkMode
+
+ // only put this dependency if rs will generate Java code
+ if (!ndkMode) {
+ variantData.sourceGenTask.dependsOn renderscriptTask
+ }
+
renderscriptTask.dependsOn variantData.prepareDependenciesTask
renderscriptTask.plugin = this
renderscriptTask.variant = variantData
- renderscriptTask.targetApi = config.mergedFlavor.renderscriptTargetApi
- renderscriptTask.supportMode = config.mergedFlavor.renderscriptSupportMode
+ renderscriptTask.targetApi = mergedFlavor.renderscriptTargetApi
+ renderscriptTask.supportMode = mergedFlavor.renderscriptSupportMode
+ renderscriptTask.ndkMode = ndkMode
renderscriptTask.debugBuild = config.buildType.renderscriptDebugBuild
renderscriptTask.optimLevel = config.buildType.renderscriptOptimLevel
@@ -737,7 +745,9 @@ public abstract class BasePlugin {
sourceList.add({ variantData.processResourcesTask.sourceOutputDir })
sourceList.add({ variantData.generateBuildConfigTask.sourceOutputDir })
sourceList.add({ variantData.aidlCompileTask.sourceOutputDir })
- sourceList.add({ variantData.renderscriptCompileTask.sourceOutputDir })
+ if (!config.mergedFlavor.renderscriptNdkMode) {
+ sourceList.add({ variantData.renderscriptCompileTask.sourceOutputDir })
+ }
if (config.getType() != VariantConfiguration.Type.TEST) {
sourceList.add(((AndroidSourceSet) config.buildTypeSourceSet).java)
@@ -808,7 +818,21 @@ public abstract class BasePlugin {
VariantConfiguration variantConfig = variantData.variantConfiguration
- ndkCompile.conventionMapping.sourceFolders = { variantConfig.jniSourceList }
+ if (variantConfig.mergedFlavor.renderscriptNdkMode) {
+ ndkCompile.ndkRenderScriptMode = true
+ ndkCompile.dependsOn variantData.renderscriptCompileTask
+ } else {
+ ndkCompile.ndkRenderScriptMode = false
+ }
+
+ ndkCompile.conventionMapping.sourceFolders = {
+ List<File> sourceList = variantConfig.jniSourceList
+ if (variantConfig.mergedFlavor.renderscriptNdkMode) {
+ sourceList.add(variantData.renderscriptCompileTask.sourceOutputDir)
+ }
+
+ return sourceList
+ }
ndkCompile.conventionMapping.generatedMakefile = {
project.file("$project.buildDir/ndk/${variantData.variantConfiguration.dirName}/Android.mk")
@@ -1015,7 +1039,7 @@ public abstract class BasePlugin {
// first the connected one.
def connectedTask = createDeviceProviderInstrumentTestTask(
hasFlavors ?
- "${connectedRootName}${baseVariantData.variantConfiguration.fullName}" : connectedRootName,
+ "${connectedRootName}${baseVariantData.variantConfiguration.fullName.capitalize()}" : connectedRootName,
"Installs and runs the tests for Build '${baseVariantData.variantConfiguration.fullName}' on connected devices.",
isLibraryTest ?
DeviceProviderInstrumentTestLibraryTask :
@@ -1033,7 +1057,7 @@ public abstract class BasePlugin {
for (DeviceProvider deviceProvider : providers) {
DefaultTask providerTask = createDeviceProviderInstrumentTestTask(
hasFlavors ?
- "${deviceProvider.name}${INSTRUMENT_TEST.capitalize()}${baseVariantData.variantConfiguration.fullName}" :
+ "${deviceProvider.name}${INSTRUMENT_TEST.capitalize()}${baseVariantData.variantConfiguration.fullName.capitalize()}" :
"${deviceProvider.name}${INSTRUMENT_TEST.capitalize()}",
"Installs and runs the tests for Build '${baseVariantData.variantConfiguration.fullName}' using Provider '${deviceProvider.name.capitalize()}'.",
isLibraryTest ?
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java
index 87b6dcd..6b708e5 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java
@@ -29,6 +29,7 @@ import java.util.Collections;
import java.util.Set;
/**
+ * Implementation of NdkConfig to be used in the gradle DSL.
*/
public class NdkConfigDsl implements NdkConfig, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
index 9bf6c46..41ec14f 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/ModelBuilder.groovy
@@ -275,8 +275,10 @@ public class ModelBuilder implements ToolingModelBuilder {
folders.add(variantData.processResourcesTask.sourceOutputDir)
folders.add(variantData.aidlCompileTask.sourceOutputDir)
- folders.add(variantData.renderscriptCompileTask.sourceOutputDir)
folders.add(variantData.generateBuildConfigTask.sourceOutputDir)
+ if (!variantData.variantConfiguration.mergedFlavor.renderscriptNdkMode) {
+ folders.add(variantData.renderscriptCompileTask.sourceOutputDir)
+ }
List<File> extraFolders = variantData.extraGeneratedSourceFolders
if (extraFolders != null) {
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 cc7aad6..f00bd24 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
@@ -39,6 +39,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
private int mTargetSdkVersion = -1;
private int mRenderscriptTargetApi = -1;
private boolean mRenderscriptSupportMode = false;
+ private boolean mRenderscriptNdkMode = false;
private int mVersionCode = -1;
private String mVersionName = null;
private String mPackageName = null;
@@ -56,6 +57,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
clonedFlavor.mTargetSdkVersion = productFlavor.getTargetSdkVersion();
clonedFlavor.mRenderscriptTargetApi = productFlavor.getRenderscriptTargetApi();
clonedFlavor.mRenderscriptSupportMode = productFlavor.getRenderscriptSupportMode();
+ clonedFlavor.mRenderscriptNdkMode = productFlavor.getRenderscriptNdkMode();
clonedFlavor.mVersionCode = productFlavor.getVersionCode();
clonedFlavor.mVersionName = productFlavor.getVersionName();
@@ -116,6 +118,11 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
return mRenderscriptSupportMode;
}
+ @Override
+ public boolean getRenderscriptNdkMode() {
+ return mRenderscriptNdkMode;
+ }
+
@Nullable
@Override
public String getTestPackageName() {
@@ -173,6 +180,7 @@ class ProductFlavorImpl implements ProductFlavor, Serializable {
", mTargetSdkVersion=" + mTargetSdkVersion +
", mRenderscriptTargetApi=" + mRenderscriptTargetApi +
", mRenderscriptSupportMode=" + mRenderscriptSupportMode +
+ ", mRenderscriptNdkMode=" + mRenderscriptNdkMode +
", mVersionCode=" + mVersionCode +
", mVersionName='" + mVersionName + '\'' +
", mPackageName='" + mPackageName + '\'' +
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/NdkCompile.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/NdkCompile.groovy
index 4526371..eba8d72 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/NdkCompile.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/NdkCompile.groovy
@@ -15,7 +15,6 @@
*/
package com.android.build.gradle.tasks
-
import com.android.annotations.NonNull
import com.android.build.gradle.internal.tasks.NdkTask
import com.android.builder.model.NdkConfig
@@ -51,6 +50,9 @@ class NdkCompile extends NdkTask {
@OutputDirectory
File objFolder
+ @Input
+ boolean ndkRenderScriptMode
+
@InputFiles
FileTree getSource() {
FileTree src = null
@@ -117,26 +119,38 @@ class NdkCompile extends NdkTask {
StringBuilder sb = new StringBuilder()
sb.append(
- "LOCAL_PATH := \$(call my-dir)\n" +
- "include \$(CLEAR_VARS)\n\n")
+ 'LOCAL_PATH := $(call my-dir)\n' +
+ 'include \$(CLEAR_VARS)\n\n')
- sb.append("LOCAL_MODULE := ").append(ndk.moduleName != null ? ndk.moduleName : project.name).append('\n')
+ sb.append('LOCAL_MODULE := ').append(ndk.moduleName != null ? ndk.moduleName : project.name).append('\n')
if (ndk.cFlags != null) {
- sb.append("LOCAL_CFLAGS := ").append(ndk.cFlags).append('\n')
+ sb.append('LOCAL_CFLAGS := ').append(ndk.cFlags).append('\n')
}
+ List<String> fullLdlibs = Lists.newArrayList()
if (ndk.ldLibs != null) {
+ fullLdlibs.addAll(ndk.ldLibs)
+ }
+ if (getNdkRenderScriptMode()) {
+ fullLdlibs.add("dl")
+ fullLdlibs.add("log")
+ fullLdlibs.add("jnigraphics")
+ fullLdlibs.add("RScpp_static")
+ fullLdlibs.add("cutils")
+ }
+
+ if (!fullLdlibs.isEmpty()) {
sb.append('LOCAL_LDLIBS := \\\n')
- for (String lib : ndk.ldLibs) {
+ for (String lib : fullLdlibs) {
sb.append('\t-l') .append(lib).append(' \\\n')
}
sb.append('\n')
}
- sb.append("LOCAL_SRC_FILES := \\\n")
+ sb.append('LOCAL_SRC_FILES := \\\n')
for (File sourceFile : sourceFiles) {
- sb.append('\t').append(sourceFile.absolutePath).append(" \\\n")
+ sb.append('\t').append(sourceFile.absolutePath).append(' \\\n')
}
sb.append('\n')
@@ -144,8 +158,16 @@ class NdkCompile extends NdkTask {
sb.append("LOCAL_C_INCLUDES += ${sourceFolder.absolutePath}\n")
}
+ if (getNdkRenderScriptMode()) {
+ sb.append('LOCAL_LDFLAGS += -L$(call host-path,$(TARGET_C_INCLUDES)/../lib/rs)\n')
+
+ sb.append('LOCAL_C_INCLUDES += $(TARGET_C_INCLUDES)/rs/cpp\n')
+ sb.append('LOCAL_C_INCLUDES += $(TARGET_C_INCLUDES)/rs\n')
+ sb.append('LOCAL_C_INCLUDES += $(TARGET_OBJS)/$(LOCAL_MODULE)\n')
+ }
+
sb.append(
- "\ninclude \$(BUILD_SHARED_LIBRARY)\n")
+ '\ninclude \$(BUILD_SHARED_LIBRARY)\n')
Files.write(sb.toString(), makefile, Charsets.UTF_8)
}
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 17985fc..a5f7986 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
@@ -61,6 +61,9 @@ public class RenderscriptCompile extends NdkTask {
@Input
boolean debugBuild
+ @Input
+ boolean ndkMode
+
@TaskAction
void taskAction() {
// this is full run (always), clean the previous outputs
@@ -91,6 +94,7 @@ public class RenderscriptCompile extends NdkTask {
getTargetApi(),
getDebugBuild(),
getOptimLevel(),
+ getNdkMode(),
getSupportMode(),
getNdkConfig()?.abiFilters)
}