--- old/src/share/tools/ProjectCreator/FileTreeCreatorVC7.java 2014-08-28 16:52:50.152372600 -0400 +++ /dev/null 2014-08-28 16:52:50.000000000 -0400 @@ -1,156 +0,0 @@ -import static java.nio.file.FileVisitResult.CONTINUE; - -import java.io.IOException; -import java.nio.file.FileSystems; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.Stack; -import java.util.Vector; - -public class FileTreeCreatorVC7 extends FileTreeCreator { - - public FileTreeCreatorVC7(Path startDir, Vector allConfigs, WinGammaPlatform wg) { - super(startDir, allConfigs, wg); - } - - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attr) { - DirAttributes currentFileAttr = attributes.peek().clone(); - boolean usePch = false; - boolean disablePch = false; - boolean useIgnore = false; - String fileName = file.getFileName().toString(); - - // usePch applies to all configs for a file. - if (fileName.equals(BuildConfig.getFieldString(null, "UseToGeneratePch"))) { - usePch = true; - } - - for (BuildConfig cfg : allConfigs) { - if (cfg.lookupHashFieldInContext("IgnoreFile", fileName) != null) { - useIgnore = true; - currentFileAttr.setIgnore(cfg); - } else if (cfg.matchesIgnoredPath(file.toAbsolutePath().toString())) { - useIgnore = true; - currentFileAttr.setIgnore(cfg); - } - - if (cfg.lookupHashFieldInContext("DisablePch", fileName) != null) { - disablePch = true; - currentFileAttr.setDisablePch(cfg); - } - - Vector rv = new Vector(); - cfg.collectRelevantVectors(rv, "AdditionalFile"); - for(String addFile : rv) { - if (addFile.equals(fileName)) { - // supress any ignore - currentFileAttr.removeFromIgnored(cfg); - } - } - } - - if (!useIgnore && !disablePch && !usePch) { - wg.tag("File", new String[] { "RelativePath", vcProjLocation.relativize(file).toString()}); - } else { - wg.startTag( - "File", - new String[] { "RelativePath", vcProjLocation.relativize(file).toString()}); - - for (BuildConfig cfg : allConfigs) { - boolean ignore = currentFileAttr.hasIgnore(cfg); - String [] fileConfAttr; - - if (ignore) { - fileConfAttr = new String[] {"Name", cfg.get("Name"), "ExcludedFromBuild", "TRUE" }; - } else { - fileConfAttr = new String[] {"Name", cfg.get("Name")}; - } - - if (!disablePch && !usePch && !ignore) { - continue; - } else if (!disablePch && !usePch) { - wg.tag("FileConfiguration", fileConfAttr); - } else { - wg.startTag("FileConfiguration", fileConfAttr); - if (usePch) { - // usePch always applies to all configs, might not always be so. - wg.tag("Tool", new String[] { - "Name", "VCCLCompilerTool", "UsePrecompiledHeader", - "1" }); - assert(!disablePch); - } - if (disablePch) { - if (currentFileAttr.hasDisablePch(cfg)) { - wg.tag("Tool", new String[] { - "Name", "VCCLCompilerTool", "UsePrecompiledHeader", - "0" }); - } - assert(!usePch); - } - wg.endTag(); - } - } - wg.endTag(); - } - - return CONTINUE; - } - - @Override - public FileVisitResult preVisitDirectory(Path path, BasicFileAttributes attrs) - throws IOException { - Boolean hide = false; - DirAttributes newAttr = attributes.peek().clone(); - - String rPath; - if (path.toAbsolutePath().toString().equals(this.startDir.toAbsolutePath().toString())){ - rPath = startDir.toString(); - } else { - rPath = path.getFileName().toString(); - } - - // check per config ignorePaths! - for (BuildConfig cfg : allConfigs) { - if (cfg.matchesIgnoredPath(path.toAbsolutePath().toString())) { - newAttr.setIgnore(cfg); - } - - // Hide is always on all configs. And additional files are never hiddden - if (cfg.matchesHidePath(path.toAbsolutePath().toString())) { - hide = true; - break; - } - } - - if (!hide) { - wg.startTag("Filter", new String[] { - "Name", rPath}); - - attributes.push(newAttr); - return super.preVisitDirectory(path, attrs); - } else { - return FileVisitResult.SKIP_SUBTREE; - } - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) { - //end matching attributes set by ignorepath - wg.endTag(); - attributes.pop(); - - return CONTINUE; - } - - @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) { - return CONTINUE; - } - - public void writeFileTree() throws IOException { - Files.walkFileTree(this.startDir, this); - } - } \ No newline at end of file