X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FJava%2FSource%2FFrameworkTasks%2Forg%2Ftianocore%2Fframework%2Ftasks%2FMakeDeps.java;h=7dfb8cbb064938d3452a5165647a5b78d19dcd8b;hp=20cf44b95dfe44880cacf314607dcf06b4afec38;hb=8fc81f2a883015d461a495d1e9d0fa58b16f48b5;hpb=96edfc7504d799fd9691a7d5c3a332e09fbf91ba diff --git a/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java b/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java index 20cf44b95d..7dfb8cbb06 100644 --- a/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java +++ b/Tools/Java/Source/FrameworkTasks/org/tianocore/framework/tasks/MakeDeps.java @@ -14,9 +14,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ package org.tianocore.framework.tasks; +import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; +import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; @@ -44,6 +46,7 @@ public class MakeDeps extends Task { // // private members, use set/get to access them // + private String targetFile = ""; private String depsFilePath = ""; private IncludePath includePathList = new IncludePath(); private Input inputFileList = new Input(); @@ -54,7 +57,7 @@ public class MakeDeps extends Task { // // regular expression for "#include ..." directive // - private static final Pattern incPattern = Pattern.compile("[\n\r \t]*#[ \t]*include[ \t\"<]+([^\n\r\"<>]+)"); + private static final Pattern incPattern = Pattern.compile("[\n\r \t#]*include[ \t]+[\"<]*([^\n\r\"<>]+)[>\" \t]*"); public MakeDeps() { @@ -69,6 +72,13 @@ public class MakeDeps extends Task { @throws BuildException **/ public void execute() throws BuildException { + // + // if target file is specified and it hasn't been generated, don't generate + // dep file + // + if (targetFile.length() != 0 && (new File(targetFile)).exists() == false) { + return; + } // // check if the dependency list file is uptodate or not // @@ -124,6 +134,14 @@ public class MakeDeps extends Task { FileTimeStamp.update(depsFilePath, depsFile.lastModified()); } + public void setTargetFile(String name) { + targetFile = name; + } + + public String getTargetFile() { + return targetFile; + } + /** Set method for "DepsFile" attribute @@ -280,24 +298,30 @@ public class MakeDeps extends Task { if (!srcFile.exists()) { continue; } - // // try cache first // Set incFiles = includesCache.get(src); if (incFiles == null) { incFiles = new HashSet(); - FileReader fileReader = null; - BufferedReader bufReader = null; + FileInputStream fileReader = null; + BufferedInputStream bufReader = null; String fileContent = ""; int fileLength = (int)srcFile.length(); try { - fileReader = new FileReader(srcFile); - bufReader = new BufferedReader(fileReader); - char[] buf = new char[fileLength]; + fileReader = new FileInputStream(srcFile); + bufReader = new BufferedInputStream(fileReader); + byte[] buf = new byte[fileLength]; bufReader.read(buf, 0, fileLength); + // + // check if the file is utf-16 encoded + // + if (buf[0] == (byte)0xff || buf[0] == (byte)0xfe) { + fileContent = new String(buf, "UTF-16"); + buf = fileContent.getBytes("UTF-8"); + } fileContent = new String(buf); } catch (IOException e) { throw new BuildException(e.getMessage());