aboutsummaryrefslogtreecommitdiff
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
parent58ed15f2a0eb44f34803334754802c5c1adb3ddf (diff)
downloadbuild-3124cdb23c8b76d17ca4043df629273f040d3ae8.tar.gz
Better handling for LD Libs and C includes.
Change-Id: Ib1b4615a5f9d9de948faa7582976840f9cdef76d
-rw-r--r--builder-model/src/main/java/com/android/builder/NdkConfig.java2
-rw-r--r--builder/src/main/java/com/android/builder/internal/NdkConfigImpl.java17
-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
-rw-r--r--tests/ndkSanAngeles/build.gradle2
6 files changed, 63 insertions, 25 deletions
diff --git a/builder-model/src/main/java/com/android/builder/NdkConfig.java b/builder-model/src/main/java/com/android/builder/NdkConfig.java
index 761871d..fbebf49 100644
--- a/builder-model/src/main/java/com/android/builder/NdkConfig.java
+++ b/builder-model/src/main/java/com/android/builder/NdkConfig.java
@@ -41,7 +41,7 @@ public interface NdkConfig {
* The LD Libs
*/
@Nullable
- public String getLdLibs();
+ public Set<String> getLdLibs();
/**
* The ABI Filters
diff --git a/builder/src/main/java/com/android/builder/internal/NdkConfigImpl.java b/builder/src/main/java/com/android/builder/internal/NdkConfigImpl.java
index 88422e9..153d702 100644
--- a/builder/src/main/java/com/android/builder/internal/NdkConfigImpl.java
+++ b/builder/src/main/java/com/android/builder/internal/NdkConfigImpl.java
@@ -29,7 +29,7 @@ public class NdkConfigImpl implements NdkConfig {
private String moduleName;
private String cFlags;
- private String ldLibs;
+ private Set<String> ldLibs;
private Set<String> abiFilters;
private String stl;
@@ -54,7 +54,7 @@ public class NdkConfigImpl implements NdkConfig {
@Override
@Nullable
- public String getLdLibs() {
+ public Set<String> getLdLibs() {
return ldLibs;
}
@@ -80,6 +80,7 @@ public class NdkConfigImpl implements NdkConfig {
stl = ndkConfig.getStl();
}
+ // append
if (ndkConfig.getAbiFilters() != null) {
if (abiFilters == null) {
abiFilters = Sets.newHashSetWithExpectedSize(ndkConfig.getAbiFilters().size());
@@ -89,17 +90,19 @@ public class NdkConfigImpl implements NdkConfig {
abiFilters.addAll(ndkConfig.getAbiFilters());
}
- // append
if (cFlags == null) {
cFlags = ndkConfig.getcFlags();
} else if (ndkConfig.getcFlags() != null) {
cFlags = cFlags + " " + ndkConfig.getcFlags();
}
- if (ldLibs == null) {
- ldLibs = ndkConfig.getLdLibs();
- } else if (ndkConfig.getLdLibs() != null) {
- ldLibs = ldLibs + " " + ndkConfig.getLdLibs();
+ if (ndkConfig.getLdLibs() != null) {
+ if (ldLibs == null) {
+ ldLibs = Sets.newHashSetWithExpectedSize(ndkConfig.getLdLibs().size());
+ } else {
+ ldLibs.clear();
+ }
+ ldLibs.addAll(ndkConfig.getLdLibs());
}
}
}
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)
diff --git a/tests/ndkSanAngeles/build.gradle b/tests/ndkSanAngeles/build.gradle
index a7ddcb9..c537e77 100644
--- a/tests/ndkSanAngeles/build.gradle
+++ b/tests/ndkSanAngeles/build.gradle
@@ -16,7 +16,7 @@ android {
ndk {
moduleName "sanangeles"
cFlags "-DANDROID_NDK -DDISABLE_IMPORTGL"
- ldLibs "-lGLESv1_CM -ldl -llog"
+ ldLibs "GLESv1_CM", "dl", "log"
stl "stlport_static"
}
}