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=5c049773b29e0e161cb8319e4100f86424aa4d64;hp=c538403b36ce167ab1e4d08214d7f221e5162411;hb=f496b9b5ce1dfdf5ee111c24de96529ee0c4708f;hpb=2da8968bb588b2bf72501a90597b8de464394024 diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java index c538403b36..5c049773b2 100644 --- a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java +++ b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java @@ -14,26 +14,29 @@ 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; +import org.tianocore.logger.EdkLog; + /** Class MakeDeps is used to wrap MakeDeps.exe as an ANT task. **/ @@ -75,6 +78,10 @@ public class MakeDeps extends Task { Project prj = this.getOwningTarget().getProject(); String toolPath = prj.getProperty("env.FRAMEWORK_TOOLS_PATH"); + FrameworkLogger logger = new FrameworkLogger(prj, "makedeps"); + EdkLog.setLogLevel(prj.getProperty("env.LOGLEVEL")); + EdkLog.setLogger(logger); + /// /// compose full tool path /// @@ -116,8 +123,9 @@ public class MakeDeps extends Task { Iterator iterator = inputFileList.iterator(); while (iterator.hasNext()) { Input inputFile = (Input)iterator.next(); + String inputFileString = cleanupPathName(inputFile.getFile()); args.append(" -f "); - args.append(cleanupPathName(inputFile.getFile())); + args.append(inputFileString); } /// @@ -163,6 +171,8 @@ public class MakeDeps extends Task { runner.setAntRun(prj); runner.setCommandline(cmd.getCommandline()); + EdkLog.log(EdkLog.EDK_VERBOSE, Commandline.toString(cmd.getCommandline())); + int result = 0; try { result = runner.execute(); @@ -171,7 +181,7 @@ public class MakeDeps extends Task { } if (result != 0) { - log ("MakeDeps failed"); + EdkLog.log(EdkLog.EDK_INFO, "MakeDeps failed!"); return; } @@ -189,7 +199,6 @@ public class MakeDeps extends Task { String duplicateSeparator = separator + "{2}"; path = Path.translateFile(path); path = path.replaceAll(duplicateSeparator, separator); - return path; } @@ -335,6 +344,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,19 +353,13 @@ 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); - - while (matcher.find()) { + String[] filePath = line.split(" : "); + if (filePath.length == 2) { /// /// keep the file name after ":" /// - String filePath = line.substring(matcher.start(1), matcher.end(1)); - filePath = cleanupPathName(filePath); - cleanedLines.append(filePath); - cleanedLines.append("\n"); + lineSet.add(cleanupPathName(filePath[1])); } } lineReader.close(); @@ -366,10 +370,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 ///