From 3124cdb23c8b76d17ca4043df629273f040d3ae8 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Thu, 21 Nov 2013 17:40:05 -0800 Subject: Better handling for LD Libs and C includes. Change-Id: Ib1b4615a5f9d9de948faa7582976840f9cdef76d --- .../build/gradle/internal/dsl/NdkConfigDsl.java | 49 ++++++++++++++++++---- .../build/gradle/internal/tasks/NdkTask.groovy | 2 +- .../android/build/gradle/tasks/NdkCompile.groovy | 16 +++---- 3 files changed, 51 insertions(+), 16 deletions(-) (limited to 'gradle') 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 ldLibs; private Set 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 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 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 getAbiFilters() { @@ -103,10 +136,10 @@ public class NdkConfigDsl implements NdkConfig, Serializable { } @NonNull - public NdkConfigDsl setSrcDirs(Iterable filters) { + public NdkConfigDsl setAbiFilters(Collection 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 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) -- cgit v1.2.3