aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks/src/com
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-11-05 10:55:13 -0800
committerXavier Ducrohet <xav@android.com>2012-11-29 17:09:46 -0800
commitfbf28acf3eb01515e94444de8a916a3c2d779211 (patch)
treefa45276338a2d57398e22c19f512f4959442455f /anttasks/src/com
parent1456483b66473b16ecc8b2dcfb05a450decf9456 (diff)
downloadsdk-fbf28acf3eb01515e94444de8a916a3c2d779211.zip
sdk-fbf28acf3eb01515e94444de8a916a3c2d779211.tar.gz
sdk-fbf28acf3eb01515e94444de8a916a3c2d779211.tar.bz2
Add filterscript suppport.
Change-Id: Iaefb640f35bdad1dc5d4be8565c2cafdc02e8324
Diffstat (limited to 'anttasks/src/com')
-rw-r--r--anttasks/src/com/android/ant/AidlExecTask.java7
-rw-r--r--anttasks/src/com/android/ant/MultiFilesTask.java26
-rw-r--r--anttasks/src/com/android/ant/RenderScriptTask.java14
3 files changed, 34 insertions, 13 deletions
diff --git a/anttasks/src/com/android/ant/AidlExecTask.java b/anttasks/src/com/android/ant/AidlExecTask.java
index 5a39436..87ca599 100644
--- a/anttasks/src/com/android/ant/AidlExecTask.java
+++ b/anttasks/src/com/android/ant/AidlExecTask.java
@@ -16,6 +16,7 @@
package com.android.ant;
+import com.android.SdkConstants;
import com.android.sdklib.io.FileOp;
import org.apache.tools.ant.BuildException;
@@ -26,7 +27,9 @@ import org.apache.tools.ant.types.Path;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Set;
/**
* Task to execute aidl.
@@ -56,8 +59,8 @@ public class AidlExecTask extends MultiFilesTask {
private class AidlProcessor implements SourceProcessor {
@Override
- public String getSourceFileExtension() {
- return "aidl";
+ public Set<String> getSourceFileExtensions() {
+ return Collections.singleton(SdkConstants.EXT_AIDL);
}
@Override
diff --git a/anttasks/src/com/android/ant/MultiFilesTask.java b/anttasks/src/com/android/ant/MultiFilesTask.java
index c90a0b9..4f1ae40 100644
--- a/anttasks/src/com/android/ant/MultiFilesTask.java
+++ b/anttasks/src/com/android/ant/MultiFilesTask.java
@@ -39,7 +39,7 @@ class MultiFilesTask extends BuildTypedTask {
}
interface SourceProcessor {
- String getSourceFileExtension();
+ Set<String> getSourceFileExtensions();
void process(String filePath, String sourceFolder,
List<String> sourceFolders, Project taskProject);
void displayMessage(DisplayType type, int count);
@@ -49,7 +49,7 @@ class MultiFilesTask extends BuildTypedTask {
Project taskProject = getProject();
- String extension = processor.getSourceFileExtension();
+ Set<String> extensions = processor.getSourceFileExtensions();
// build a list of all the source folders
ArrayList<String> sourceFolders = new ArrayList<String>();
@@ -60,9 +60,14 @@ class MultiFilesTask extends BuildTypedTask {
}
}
+ ArrayList<String> includePatterns = new ArrayList<String>(extensions.size());
+ for (String extension : extensions) {
+ includePatterns.add("**/*." + extension);
+ }
+
// gather all the source files from all the source folders.
Map<String, String> sourceFiles = getFilesByNameEntryFilter(sourceFolders,
- "**/*." + extension);
+ includePatterns.toArray(new String[includePatterns.size()]));
if (sourceFiles.size() > 0) {
processor.displayMessage(DisplayType.FOUND, sourceFiles.size());
}
@@ -87,7 +92,8 @@ class MultiFilesTask extends BuildTypedTask {
// The gen folder may contain other dependency files not generated by this particular
// processor.
// We only care if the first pre-rep is of the right extension.
- if (sourceFilePath.toLowerCase(Locale.US).endsWith("." + extension)) {
+ String fileExtension = sourceFilePath.substring(sourceFilePath.lastIndexOf('.') + 1);
+ if (extensions.contains(fileExtension.toLowerCase(Locale.US))) {
// remove from the list of sourceFiles to mark as "processed" (but not compiled
// yet, that'll be done by adding it to toCompile)
String sourceFolder = sourceFiles.get(sourceFilePath);
@@ -153,11 +159,11 @@ class MultiFilesTask extends BuildTypedTask {
* @param filter the filter for the files. Typically a glob.
* @return a map of (file, folder)
*/
- private Map<String, String> getFilesByNameEntryFilter(List<String> folders, String filter) {
+ private Map<String, String> getFilesByNameEntryFilter(List<String> folders, String[] filters) {
Map<String, String> sourceFiles = new HashMap<String, String>();
for (String folder : folders) {
- Iterator<?> iterator = getFilesByNameEntryFilter(folder, filter);
+ Iterator<?> iterator = getFilesByNameEntryFilter(folder, filters);
while (iterator.hasNext()) {
sourceFiles.put(iterator.next().toString(), folder);
@@ -173,15 +179,17 @@ class MultiFilesTask extends BuildTypedTask {
* @param filter the filter for the files. Typically a glob.
* @return an iterator.
*/
- private Iterator<?> getFilesByNameEntryFilter(String folder, String filter) {
+ private Iterator<?> getFilesByNameEntryFilter(String folder, String... filters) {
Project taskProject = getProject();
// create a fileset to find all the files in the folder
FileSet fs = new FileSet();
fs.setProject(taskProject);
fs.setDir(new File(folder));
- NameEntry include = fs.createInclude();
- include.setName(filter);
+ for (String filter : filters) {
+ NameEntry include = fs.createInclude();
+ include.setName(filter);
+ }
// loop through the results of the file set
return fs.iterator();
diff --git a/anttasks/src/com/android/ant/RenderScriptTask.java b/anttasks/src/com/android/ant/RenderScriptTask.java
index b480316..5f743bb8 100644
--- a/anttasks/src/com/android/ant/RenderScriptTask.java
+++ b/anttasks/src/com/android/ant/RenderScriptTask.java
@@ -16,6 +16,9 @@
package com.android.ant;
+import com.android.SdkConstants;
+import com.google.common.collect.Sets;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.ExecTask;
@@ -24,6 +27,7 @@ import org.apache.tools.ant.types.Path;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
/**
* Task to execute renderscript.
@@ -42,6 +46,12 @@ import java.util.List;
*/
public class RenderScriptTask extends MultiFilesTask {
+ private final static Set<String> EXTENSIONS = Sets.newHashSetWithExpectedSize(2);
+ static {
+ EXTENSIONS.add(SdkConstants.EXT_RS);
+ EXTENSIONS.add(SdkConstants.EXT_FS);
+ }
+
private String mExecutable;
private Path mIncludePath;
private String mGenFolder;
@@ -62,8 +72,8 @@ public class RenderScriptTask extends MultiFilesTask {
}
@Override
- public String getSourceFileExtension() {
- return "rs";
+ public Set<String> getSourceFileExtensions() {
+ return EXTENSIONS;
}
@Override