aboutsummaryrefslogtreecommitdiff
path: root/gradle
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@google.com>2013-11-21 17:40:05 -0800
committerXavier Ducrohet <xav@google.com>2013-11-21 17:40:05 -0800
commit3124cdb23c8b76d17ca4043df629273f040d3ae8 (patch)
treee8aaf4fa5dc994fe247702baa0016ae126997c10 /gradle
parent58ed15f2a0eb44f34803334754802c5c1adb3ddf (diff)
downloadbuild-3124cdb23c8b76d17ca4043df629273f040d3ae8.tar.gz
Better handling for LD Libs and C includes.
Change-Id: Ib1b4615a5f9d9de948faa7582976840f9cdef76d
Diffstat (limited to 'gradle')
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/dsl/NdkConfigDsl.java49
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/internal/tasks/NdkTask.groovy2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/NdkCompile.groovy16
3 files changed, 51 insertions, 16 deletions
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 0a5c79d..64f704a 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
@@ -24,6 +24,7 @@ import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
import java.io.Serializable;
+import java.util.Collection;
import java.util.Collections;
import java.util.Set;
@@ -34,7 +35,7 @@ public class NdkConfigDsl implements NdkConfig, Serializable {
private String moduleName;
private String cFlags;
- private String ldLibs;
+ private Set<String> ldLibs;
private Set<String> abiFilters;
private String stl;
@@ -44,8 +45,8 @@ public class NdkConfigDsl implements NdkConfig, Serializable {
public NdkConfigDsl(@NonNull NdkConfigDsl ndkConfig) {
moduleName = ndkConfig.moduleName;
cFlags = ndkConfig.cFlags;
- ldLibs = ndkConfig.ldLibs;
- setSrcDirs(ndkConfig.abiFilters);
+ setLdLibs(ndkConfig.ldLibs);
+ setAbiFilters(ndkConfig.abiFilters);
}
@Override
@@ -70,14 +71,46 @@ public class NdkConfigDsl implements NdkConfig, Serializable {
@Override
@Input @Optional
- public String getLdLibs() {
+ public Set<String> getLdLibs() {
return ldLibs;
}
- public void setLdLibs(String ldLibs) {
- this.ldLibs = ldLibs;
+ @NonNull
+ public NdkConfigDsl ldLibs(String lib) {
+ if (ldLibs == null) {
+ ldLibs = Sets.newHashSet();
+ }
+ ldLibs.add(lib);
+ return this;
+ }
+
+ @NonNull
+ public NdkConfigDsl ldLibs(String... libs) {
+ if (ldLibs == null) {
+ ldLibs = Sets.newHashSetWithExpectedSize(libs.length);
+ }
+ Collections.addAll(ldLibs, libs);
+ return this;
+ }
+
+ @NonNull
+ public NdkConfigDsl setLdLibs(Collection<String> libs) {
+ if (libs != null) {
+ if (abiFilters == null) {
+ abiFilters = Sets.newHashSetWithExpectedSize(libs.size());
+ } else {
+ abiFilters.clear();
+ }
+ for (String filter : libs) {
+ abiFilters.add(filter);
+ }
+ } else {
+ abiFilters = null;
+ }
+ return this;
}
+
@Override
@Input @Optional
public Set<String> getAbiFilters() {
@@ -103,10 +136,10 @@ public class NdkConfigDsl implements NdkConfig, Serializable {
}
@NonNull
- public NdkConfigDsl setSrcDirs(Iterable<String> filters) {
+ public NdkConfigDsl setAbiFilters(Collection<String> filters) {
if (filters != null) {
if (abiFilters == null) {
- abiFilters = Sets.newHashSetWithExpectedSize(2);
+ abiFilters = Sets.newHashSetWithExpectedSize(filters.size());
} else {
abiFilters.clear();
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/NdkTask.groovy b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/NdkTask.groovy
index cc5b5d2..05c56d8 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/NdkTask.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/internal/tasks/NdkTask.groovy
@@ -37,7 +37,7 @@ class NdkTask extends BaseTask {
}
@Input @Optional
- String getLdLibs() {
+ Set<String> getLdLibs() {
return getNdkConfig()?.ldLibs
}
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 19b5681..d2a34d5 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
@@ -127,7 +127,11 @@ class NdkCompile extends NdkTask {
}
if (ndk.ldLibs != null) {
- sb.append("LOCAL_LDLIBS := ").append(ndk.ldLibs).append('\n')
+ sb.append('LOCAL_LDLIBS := \\\n')
+ for (String lib : ndk.ldLibs) {
+ sb.append('\t-l') .append(lib).append(' \\\n')
+ }
+ sb.append('\n')
}
sb.append("LOCAL_SRC_FILES := \\\n")
@@ -136,6 +140,10 @@ class NdkCompile extends NdkTask {
}
sb.append('\n')
+ for (File sourceFolder : getSourceFolders()) {
+ sb.append("LOCAL_C_INCLUDES += ${sourceFolder.absolutePath}\n")
+ }
+
sb.append(
"\ninclude \$(BUILD_SHARED_LIBRARY)\n")
@@ -160,12 +168,6 @@ class NdkCompile extends NdkTask {
}
commands.add("APP_PLATFORM=" + target.hashString())
- // include paths
- for (File sourceFolder : getSourceFolders()) {
- commands.add("-I")
- commands.add(sourceFolder.absolutePath)
- }
-
// temp out
commands.add("NDK_OUT=" + getObjFolder().absolutePath)