X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkTasks%2Forg%2Ftianocore%2Fframework%2Ftasks%2FMakeDeps.java;h=c72b1f66728dc0e84db5e766f7320dc9abe1413b;hp=a90d36225db145ef6c3562d0a12bca967073dab0;hb=196ad8d77c4a256e6a9b432541d688d2f40f4614;hpb=878ddf1fc3540a715f63594ed22b6929e881afb4 diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java index a90d36225d..c72b1f6672 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java @@ -14,26 +14,28 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ package org.tianocore.framework.tasks; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.Execute; -import org.apache.tools.ant.taskdefs.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Path; - import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.LineNumberReader; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.taskdefs.Execute; +import org.apache.tools.ant.taskdefs.LogStreamHandler; +import org.apache.tools.ant.types.Commandline; +import org.apache.tools.ant.types.Path; + /** Class MakeDeps is used to wrap MakeDeps.exe as an ANT task. **/ @@ -74,7 +76,7 @@ public class MakeDeps extends Task { } Project prj = this.getOwningTarget().getProject(); - String toolPath = prj.getProperty("env.Framework_Tools_Path"); + String toolPath = prj.getProperty("env.FRAMEWORK_TOOLS_PATH"); /// /// compose full tool path /// @@ -185,10 +187,15 @@ public class MakeDeps extends Task { /// Remove any duplicated path separator or inconsistent path separator /// private String cleanupPathName(String path) { - String separator = "\\" + File.separator; - String duplicateSeparator = separator + "{2}"; - path = Path.translateFile(path); - path = path.replaceAll(duplicateSeparator, separator); + try { + path = (new File(path)).getCanonicalPath(); + } catch (IOException e) { + String separator = "\\" + File.separator; + String duplicateSeparator = separator + "{2}"; + path = Path.translateFile(path); + path = path.replaceAll(duplicateSeparator, separator); + return path; + } return path; } @@ -335,6 +342,7 @@ public class MakeDeps extends Task { LineNumberReader lineReader = null; FileReader fileReader = null; + Set lineSet = new HashSet(100); // used to remove duplicated lines try { fileReader = new FileReader(df); lineReader = new LineNumberReader(fileReader); @@ -343,7 +351,6 @@ public class MakeDeps extends Task { /// clean-up each line in deps file // String line = null; - StringBuffer cleanedLines = new StringBuffer(4096); while ((line = lineReader.readLine()) != null) { Pattern pattern = Pattern.compile(target + "[ ]*:[ ]*(.+)"); Matcher matcher = pattern.matcher(line); @@ -354,8 +361,7 @@ public class MakeDeps extends Task { /// String filePath = line.substring(matcher.start(1), matcher.end(1)); filePath = cleanupPathName(filePath); - cleanedLines.append(filePath); - cleanedLines.append("\n"); + lineSet.add(filePath); } } lineReader.close(); @@ -366,10 +372,19 @@ public class MakeDeps extends Task { /// StringTokenizer fileTokens = new StringTokenizer(extraDeps, ";"); while (fileTokens.hasMoreTokens()) { - cleanedLines.append(cleanupPathName(fileTokens.nextToken())); - cleanedLines.append("\n"); + lineSet.add(cleanupPathName(fileTokens.nextToken())); } + /// + /// compose the final file content + /// + StringBuffer cleanedLines = new StringBuffer(40960); + Iterator it = lineSet.iterator(); + while (it.hasNext()) { + String filePath = it.next(); + cleanedLines.append(filePath); + cleanedLines.append("\n"); + } /// /// overwrite old dep file with new content ///