diff options
author | Xavier Ducrohet <xav@android.com> | 2012-11-05 10:55:13 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2012-11-29 17:09:46 -0800 |
commit | fbf28acf3eb01515e94444de8a916a3c2d779211 (patch) | |
tree | fa45276338a2d57398e22c19f512f4959442455f /anttasks/src/com | |
parent | 1456483b66473b16ecc8b2dcfb05a450decf9456 (diff) | |
download | sdk-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.java | 7 | ||||
-rw-r--r-- | anttasks/src/com/android/ant/MultiFilesTask.java | 26 | ||||
-rw-r--r-- | anttasks/src/com/android/ant/RenderScriptTask.java | 14 |
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 |