diff options
author | Xavier Ducrohet <xav@google.com> | 2013-11-22 01:41:00 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-11-22 01:41:01 +0000 |
commit | 6c7f1356dfc68aac0cfc5cdbb6d1e84fd9e55f21 (patch) | |
tree | e8aaf4fa5dc994fe247702baa0016ae126997c10 | |
parent | 58ed15f2a0eb44f34803334754802c5c1adb3ddf (diff) | |
parent | 3124cdb23c8b76d17ca4043df629273f040d3ae8 (diff) | |
download | build-6c7f1356dfc68aac0cfc5cdbb6d1e84fd9e55f21.tar.gz |
Merge "Better handling for LD Libs and C includes."
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" } } |